| import antlr3 |
| import testbase |
| import unittest |
| import textwrap |
| |
| |
| class t022scopes(testbase.ANTLRTest): |
| def setUp(self): |
| self.compileGrammar() |
| |
| |
| def parserClass(self, base): |
| class TParser(base): |
| def emitErrorMessage(self, msg): |
| # report errors to /dev/null |
| pass |
| |
| def reportError(self, re): |
| # no error recovery yet, just crash! |
| raise re |
| |
| return TParser |
| |
| |
| def testa1(self): |
| cStream = antlr3.StringStream('foobar') |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| parser.a() |
| |
| |
| def testb1(self): |
| cStream = antlr3.StringStream('foobar') |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| |
| try: |
| parser.b(False) |
| self.fail() |
| except antlr3.RecognitionException: |
| pass |
| |
| |
| def testb2(self): |
| cStream = antlr3.StringStream('foobar') |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| parser.b(True) |
| |
| |
| def testc1(self): |
| cStream = antlr3.StringStream( |
| textwrap.dedent('''\ |
| { |
| int i; |
| int j; |
| i = 0; |
| } |
| ''')) |
| |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| symbols = parser.c() |
| |
| self.failUnlessEqual( |
| symbols, |
| set(['i', 'j']) |
| ) |
| |
| |
| def testc2(self): |
| cStream = antlr3.StringStream( |
| textwrap.dedent('''\ |
| { |
| int i; |
| int j; |
| i = 0; |
| x = 4; |
| } |
| ''')) |
| |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| |
| try: |
| parser.c() |
| self.fail() |
| except RuntimeError, exc: |
| self.failUnlessEqual(exc.args[0], 'x') |
| |
| |
| def testd1(self): |
| cStream = antlr3.StringStream( |
| textwrap.dedent('''\ |
| { |
| int i; |
| int j; |
| i = 0; |
| { |
| int i; |
| int x; |
| x = 5; |
| } |
| } |
| ''')) |
| |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| symbols = parser.d() |
| |
| self.failUnlessEqual( |
| symbols, |
| set(['i', 'j']) |
| ) |
| |
| |
| def teste1(self): |
| cStream = antlr3.StringStream( |
| textwrap.dedent('''\ |
| { { { { 12 } } } } |
| ''')) |
| |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| res = parser.e() |
| |
| self.failUnlessEqual(res, 12) |
| |
| |
| def testf1(self): |
| cStream = antlr3.StringStream( |
| textwrap.dedent('''\ |
| { { { { 12 } } } } |
| ''')) |
| |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| res = parser.f() |
| |
| self.failUnlessEqual(res, None) |
| |
| |
| def testf2(self): |
| cStream = antlr3.StringStream( |
| textwrap.dedent('''\ |
| { { 12 } } |
| ''')) |
| |
| lexer = self.getLexer(cStream) |
| tStream = antlr3.CommonTokenStream(lexer) |
| parser = self.getParser(tStream) |
| res = parser.f() |
| |
| self.failUnlessEqual(res, None) |
| |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |