1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport antlr3
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport testbase
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport unittest
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass t026actions(testbase.ANTLRTest):
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def parserClass(self, base):
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        class TParser(base):
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def __init__(self, *args, **kwargs):
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                base.__init__(self, *args, **kwargs)
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._errors = []
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._output = ""
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def capture(self, t):
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._output += t
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def emitErrorMessage(self, msg):
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._errors.append(msg)
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return TParser
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def lexerClass(self, base):
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        class TLexer(base):
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def __init__(self, *args, **kwargs):
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                base.__init__(self, *args, **kwargs)
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._errors = []
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._output = ""
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def capture(self, t):
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._output += t
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def emitErrorMessage(self, msg):
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                self._errors.append(msg)
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return TLexer
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def setUp(self):
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.compileGrammar()
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testValid1(self):
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        cStream = antlr3.StringStream('foobar _Ab98 \n A12sdf')
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        lexer = self.getLexer(cStream)
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        tStream = antlr3.CommonTokenStream(lexer)
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        parser = self.getParser(tStream)
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        parser.prog()
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.assertEqual(
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            parser._output,
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'init;after;finally;')
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.assertEqual(
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            lexer._output,
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'action;u\'foobar\' 4 1 0 -1 0 0 5;attribute;action;u\'_Ab98\' 4 1 7 -1 0 7 11;attribute;action;u\'A12sdf\' 4 2 1 -1 0 15 20;attribute;')
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverif __name__ == '__main__':
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    unittest.main()
67