1 import antlr3 2 import testbase 3 import unittest 4 5 6 class t026actions(testbase.ANTLRTest): 7 def parserClass(self, base): 8 class TParser(base): 9 def __init__(self, *args, **kwargs): 10 super().__init__(*args, **kwargs) 11 12 self._errors = [] 13 self._output = "" 14 15 16 def capture(self, t): 17 self._output += t 18 19 20 def emitErrorMessage(self, msg): 21 self._errors.append(msg) 22 23 24 return TParser 25 26 27 def lexerClass(self, base): 28 class TLexer(base): 29 def __init__(self, *args, **kwargs): 30 super().__init__(*args, **kwargs) 31 32 self._errors = [] 33 self._output = "" 34 35 36 def capture(self, t): 37 self._output += t 38 39 40 def emitErrorMessage(self, msg): 41 self._errors.append(msg) 42 43 44 return TLexer 45 46 47 def setUp(self): 48 self.compileGrammar() 49 50 51 def testValid1(self): 52 cStream = antlr3.StringStream('foobar _Ab98 \n A12sdf') 53 lexer = self.getLexer(cStream) 54 tStream = antlr3.CommonTokenStream(lexer) 55 parser = self.getParser(tStream) 56 parser.prog() 57 58 self.assertEqual( 59 parser._output, 60 'init;after;finally;') 61 self.assertEqual( 62 lexer._output, 63 "action;'foobar' 4 1 0 -1 0 0 5;attribute;action;" 64 "'_Ab98' 4 1 7 -1 0 7 11;attribute;action;" 65 "'A12sdf' 4 2 1 -1 0 15 20;attribute;") 66 67 if __name__ == '__main__': 68 unittest.main() 69