You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.6 KiB

import antlr3
import testbase
import unittest
class t026actions(testbase.ANTLRTest):
def parserClass(self, base):
class TParser(base):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._errors = []
self._output = ""
def capture(self, t):
self._output += t
def emitErrorMessage(self, msg):
self._errors.append(msg)
return TParser
def lexerClass(self, base):
class TLexer(base):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._errors = []
self._output = ""
def capture(self, t):
self._output += t
def emitErrorMessage(self, msg):
self._errors.append(msg)
return TLexer
def setUp(self):
self.compileGrammar()
def testValid1(self):
cStream = antlr3.StringStream('foobar _Ab98 \n A12sdf')
lexer = self.getLexer(cStream)
tStream = antlr3.CommonTokenStream(lexer)
parser = self.getParser(tStream)
parser.prog()
self.assertEqual(
parser._output,
'init;after;finally;')
self.assertEqual(
lexer._output,
"action;'foobar' 4 1 0 -1 0 0 5;attribute;action;"
"'_Ab98' 4 1 7 -1 0 7 11;attribute;action;"
"'A12sdf' 4 2 1 -1 0 15 20;attribute;")
if __name__ == '__main__':
unittest.main()