1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport antlr3 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport testbase 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport unittest 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass t017parser(testbase.ANTLRTest): 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def setUp(self): 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.compileGrammar() 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def parserClass(self, base): 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver class TestParser(base): 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def __init__(self, *args, **kwargs): 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver base.__init__(self, *args, **kwargs) 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.reportedErrors = [] 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def emitErrorMessage(self, msg): 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.reportedErrors.append(msg) 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return TestParser 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testValid(self): 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver cStream = antlr3.StringStream("int foo;") 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = self.getLexer(cStream) 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tStream = antlr3.CommonTokenStream(lexer) 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = self.getParser(tStream) 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser.program() 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert len(parser.reportedErrors) == 0, parser.reportedErrors 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testMalformedInput1(self): 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver cStream = antlr3.StringStream('int foo() { 1+2 }') 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = self.getLexer(cStream) 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tStream = antlr3.CommonTokenStream(lexer) 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = self.getParser(tStream) 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser.program() 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # FIXME: currently strings with formatted errors are collected 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # can't check error locations yet 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert len(parser.reportedErrors) == 1, parser.reportedErrors 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testMalformedInput2(self): 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver cStream = antlr3.StringStream('int foo() { 1+; 1+2 }') 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = self.getLexer(cStream) 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tStream = antlr3.CommonTokenStream(lexer) 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = self.getParser(tStream) 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser.program() 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # FIXME: currently strings with formatted errors are collected 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # can't check error locations yet 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert len(parser.reportedErrors) == 2, parser.reportedErrors 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverif __name__ == '__main__': 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unittest.main() 59