Home | History | Annotate | Download | only in tests
      1 import antlr3
      2 import testbase
      3 import unittest
      4 import textwrap
      5 
      6 
      7 class t022scopes(testbase.ANTLRTest):
      8     def setUp(self):
      9         self.compileGrammar()
     10         
     11 
     12     def parserClass(self, base):
     13         class TParser(base):
     14             def emitErrorMessage(self, msg):
     15                 # report errors to /dev/null
     16                 pass
     17 
     18             def reportError(self, re):
     19                 # no error recovery yet, just crash!
     20                 raise re
     21 
     22         return TParser
     23 
     24         
     25     def testa1(self):
     26         cStream = antlr3.StringStream('foobar')
     27         lexer = self.getLexer(cStream)
     28         tStream = antlr3.CommonTokenStream(lexer)
     29         parser = self.getParser(tStream)
     30         parser.a()
     31         
     32 
     33     def testb1(self):
     34         cStream = antlr3.StringStream('foobar')
     35         lexer = self.getLexer(cStream)
     36         tStream = antlr3.CommonTokenStream(lexer)
     37         parser = self.getParser(tStream)
     38 
     39         try:
     40             parser.b(False)
     41             self.fail()
     42         except antlr3.RecognitionException:
     43             pass
     44         
     45 
     46     def testb2(self):
     47         cStream = antlr3.StringStream('foobar')
     48         lexer = self.getLexer(cStream)
     49         tStream = antlr3.CommonTokenStream(lexer)
     50         parser = self.getParser(tStream)
     51         parser.b(True)
     52         
     53 
     54     def testc1(self):
     55         cStream = antlr3.StringStream(
     56             textwrap.dedent('''\
     57             {
     58                 int i;
     59                 int j;
     60                 i = 0;
     61             }
     62             '''))
     63 
     64         lexer = self.getLexer(cStream)
     65         tStream = antlr3.CommonTokenStream(lexer)
     66         parser = self.getParser(tStream)
     67         symbols = parser.c()
     68 
     69         self.failUnlessEqual(
     70             symbols,
     71             set(['i', 'j'])
     72             )
     73         
     74 
     75     def testc2(self):
     76         cStream = antlr3.StringStream(
     77             textwrap.dedent('''\
     78             {
     79                 int i;
     80                 int j;
     81                 i = 0;
     82                 x = 4;
     83             }
     84             '''))
     85 
     86         lexer = self.getLexer(cStream)
     87         tStream = antlr3.CommonTokenStream(lexer)
     88         parser = self.getParser(tStream)
     89 
     90         try:
     91             parser.c()
     92             self.fail()
     93         except RuntimeError, exc:
     94             self.failUnlessEqual(exc.args[0], 'x')
     95 
     96 
     97     def testd1(self):
     98         cStream = antlr3.StringStream(
     99             textwrap.dedent('''\
    100             {
    101                 int i;
    102                 int j;
    103                 i = 0;
    104                 {
    105                     int i;
    106                     int x;
    107                     x = 5;
    108                 }
    109             }
    110             '''))
    111 
    112         lexer = self.getLexer(cStream)
    113         tStream = antlr3.CommonTokenStream(lexer)
    114         parser = self.getParser(tStream)
    115         symbols = parser.d()
    116 
    117         self.failUnlessEqual(
    118             symbols,
    119             set(['i', 'j'])
    120             )
    121 
    122 
    123     def teste1(self):
    124         cStream = antlr3.StringStream(
    125             textwrap.dedent('''\
    126             { { { { 12 } } } }
    127             '''))
    128 
    129         lexer = self.getLexer(cStream)
    130         tStream = antlr3.CommonTokenStream(lexer)
    131         parser = self.getParser(tStream)
    132         res = parser.e()
    133 
    134         self.failUnlessEqual(res, 12)
    135 
    136 
    137     def testf1(self):
    138         cStream = antlr3.StringStream(
    139             textwrap.dedent('''\
    140             { { { { 12 } } } }
    141             '''))
    142 
    143         lexer = self.getLexer(cStream)
    144         tStream = antlr3.CommonTokenStream(lexer)
    145         parser = self.getParser(tStream)
    146         res = parser.f()
    147 
    148         self.failUnlessEqual(res, None)
    149 
    150 
    151     def testf2(self):
    152         cStream = antlr3.StringStream(
    153             textwrap.dedent('''\
    154             { { 12 } }
    155             '''))
    156 
    157         lexer = self.getLexer(cStream)
    158         tStream = antlr3.CommonTokenStream(lexer)
    159         parser = self.getParser(tStream)
    160         res = parser.f()
    161 
    162         self.failUnlessEqual(res, None)
    163 
    164 
    165 
    166 if __name__ == '__main__':
    167     unittest.main()
    168