1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport unittest
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport textwrap
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport antlr3
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport testbase
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass t042ast(testbase.ANTLRTest):
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##     def lexerClass(self, base):
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##         class TLexer(base):
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##             def reportError(self, re):
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##                 # no error recovery yet, just crash!
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##                 raise re
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##         return TLexer
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def parserClass(self, base):
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        class TParser(base):
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            def recover(self, input, re):
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                # no error recovery yet, just crash!
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                raise
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return TParser
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def parse(self, text, method, rArgs=[], **kwargs):
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.compileGrammar() #options='-trace')
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        cStream = antlr3.StringStream(text)
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.lexer = self.getLexer(cStream)
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        tStream = antlr3.CommonTokenStream(self.lexer)
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.parser = self.getParser(tStream)
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        for attr, val in kwargs.items():
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            setattr(self.parser, attr, val)
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return getattr(self.parser, method)(*rArgs)
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR1(self):
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1 + 2", 'r1')
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(+ 1 2)'
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR2a(self):
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("assert 2+3;", 'r2')
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(assert (+ 2 3))'
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR2b(self):
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("assert 2+3 : 5;", 'r2')
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(assert (+ 2 3) 5)'
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR3a(self):
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("if 1 fooze", 'r3')
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(if 1 fooze)'
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR3b(self):
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("if 1 fooze else fooze", 'r3')
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(if 1 fooze fooze)'
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR4a(self):
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("while 2 fooze", 'r4')
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(while 2 fooze)'
84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR5a(self):
88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("return;", 'r5')
89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'return'
92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR5b(self):
96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("return 2+3;", 'r5')
97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(return (+ 2 3))'
100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR6a(self):
104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("3", 'r6')
105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '3'
108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR6b(self):
112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("3 a", 'r6')
113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '3 a'
116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR7(self):
120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("3", 'r7')
121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnless(
122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree is None
123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR8(self):
127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("var foo:bool", 'r8')
128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(var bool foo)'
131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR9(self):
135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("int foo;", 'r9')
136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(VARDEF int foo)'
139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR10(self):
143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("10", 'r10')
144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '10.0'
147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR11a(self):
151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1+2", 'r11')
152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(EXPR (+ 1 2))'
155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR11b(self):
159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("", 'r11')
160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'EXPR'
163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR12a(self):
167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("foo", 'r12')
168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'foo'
171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR12b(self):
175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("foo, bar, gnurz", 'r12')
176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'foo bar gnurz'
179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR13a(self):
183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("int foo;", 'r13')
184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(int foo)'
187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR13b(self):
191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("bool foo, bar, gnurz;", 'r13')
192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(bool foo bar gnurz)'
195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR14a(self):
199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1+2 int", 'r14')
200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(EXPR (+ 1 2) int)'
203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR14b(self):
207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1+2 int bool", 'r14')
208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(EXPR (+ 1 2) int bool)'
211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR14c(self):
215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("int bool", 'r14')
216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(EXPR int bool)'
219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR14d(self):
223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("fooze fooze int bool", 'r14')
224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(EXPR fooze fooze int bool)'
227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR14e(self):
231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("7+9 fooze fooze int bool", 'r14')
232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(EXPR (+ 7 9) fooze fooze int bool)'
235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR15(self):
239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("7", 'r15')
240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '7 7'
243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR16a(self):
247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("int foo", 'r16')
248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(int foo)'
251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR16b(self):
255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("int foo, bar, gnurz", 'r16')
256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(int foo) (int bar) (int gnurz)'
260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR17a(self):
264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for ( fooze ; 1 + 2 ; fooze ) fooze", 'r17')
265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(for fooze (+ 1 2) fooze fooze)'
268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR18a(self):
272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for", 'r18')
273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'BLOCK'
276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR19a(self):
280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for", 'r19')
281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'for'
284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR20a(self):
288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for", 'r20')
289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'FOR'
292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR21a(self):
296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for", 'r21')
297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'BLOCK'
300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR22a(self):
304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for", 'r22')
305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'for'
308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR23a(self):
312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("for", 'r23')
313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'FOR'
316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR24a(self):
320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("fooze 1 + 2", 'r24')
321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(fooze (+ 1 2))'
324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR25a(self):
328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("fooze, fooze2 1 + 2", 'r25')
329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(fooze (+ 1 2))'
332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR26a(self):
336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("fooze, fooze2", 'r26')
337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(BLOCK fooze fooze2)'
340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR27a(self):
344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("fooze 1 + 2", 'r27')
345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(fooze (fooze (+ 1 2)))'
348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR28(self):
352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("foo28a", 'r28')
353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnless(
354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree is None
355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR29(self):
359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try:
360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r = self.parse("", 'r29')
361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            self.fail()
362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        except RuntimeError:
363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pass
364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# FIXME: broken upstream?
367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##     def testR30(self):
368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##         try:
369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##             r = self.parse("fooze fooze", 'r30')
370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##             self.fail(r.tree.toStringTree())
371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##         except RuntimeError:
372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver##             pass
373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR31a(self):
376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public int gnurz = 1 + 2;", 'r31', flag=0)
377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(VARDEF gnurz public int (+ 1 2))'
380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR31b(self):
384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public int gnurz = 1 + 2;", 'r31', flag=1)
385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(VARIABLE gnurz public int (+ 1 2))'
388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR31c(self):
392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public int gnurz = 1 + 2;", 'r31', flag=2)
393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(FIELD gnurz public int (+ 1 2))'
396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR32a(self):
400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz 32", 'r32', [1], flag=2)
401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz'
404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR32b(self):
408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz 32", 'r32', [2], flag=2)
409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '32'
412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR32c(self):
416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz 32", 'r32', [3], flag=2)
417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnless(
418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree is None
419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR33a(self):
423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public private fooze", 'r33')
424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'fooze'
427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR34a(self):
431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public class gnurz { fooze fooze2 }", 'r34')
432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(class gnurz public fooze fooze2)'
435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR34b(self):
439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public class gnurz extends bool implements int, bool { fooze fooze2 }", 'r34')
440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(class gnurz public (extends bool) (implements int bool) fooze fooze2)'
443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR35(self):
447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try:
448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r = self.parse("{ extends }", 'r35')
449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            self.fail()
450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        except RuntimeError:
452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pass
453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR36a(self):
456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("if ( 1 + 2 ) fooze", 'r36')
457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(if (EXPR (+ 1 2)) fooze)'
460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
461324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
462324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
463324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR36b(self):
464324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("if ( 1 + 2 ) fooze else fooze2", 'r36')
465324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
466324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
467324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(if (EXPR (+ 1 2)) fooze fooze2)'
468324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
469324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
470324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
471324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR37(self):
472324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1 + 2 + 3", 'r37')
473324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
474324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
475324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(+ (+ 1 2) 3)'
476324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
477324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
478324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
479324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR38(self):
480324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1 + 2 + 3", 'r38')
481324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
482324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
483324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(+ (+ 1 2) 3)'
484324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
485324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
486324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
487324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR39a(self):
488324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz[1]", 'r39')
489324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
490324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
491324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(INDEX gnurz 1)'
492324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
493324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
494324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
495324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR39b(self):
496324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz(2)", 'r39')
497324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
498324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
499324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(CALL gnurz 2)'
500324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
501324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
502324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
503324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR39c(self):
504324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz.gnarz", 'r39')
505324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
506324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
507324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(FIELDACCESS gnurz gnarz)'
508324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
509324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
510324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
511324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR39d(self):
512324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz.gnarz.gnorz", 'r39')
513324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
514324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
515324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(FIELDACCESS (FIELDACCESS gnurz gnarz) gnorz)'
516324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
517324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
518324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
519324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR40(self):
520324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1 + 2 + 3;", 'r40')
521324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
522324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
523324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(+ 1 2 3)'
524324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
525324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
526324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
527324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR41(self):
528324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("1 + 2 + 3;", 'r41')
529324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
530324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
531324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(3 (2 1))'
532324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
533324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
534324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
535324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR42(self):
536324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz, gnarz, gnorz", 'r42')
537324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
538324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
539324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz gnarz gnorz'
540324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
541324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
542324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
543324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR43(self):
544324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz, gnarz, gnorz", 'r43')
545324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnless(
546324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree is None
547324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
548324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
549324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.res,
550324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ['gnurz', 'gnarz', 'gnorz']
551324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
552324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
553324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
554324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR44(self):
555324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz, gnarz, gnorz", 'r44')
556324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
557324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
558324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(gnorz (gnarz gnurz))'
559324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
560324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
561324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
562324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR45(self):
563324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz", 'r45')
564324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
565324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
566324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz'
567324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
568324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
569324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
570324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR46(self):
571324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz, gnarz, gnorz", 'r46')
572324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnless(
573324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree is None
574324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
575324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
576324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.res,
577324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ['gnurz', 'gnarz', 'gnorz']
578324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
579324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
580324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
581324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR47(self):
582324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz, gnarz, gnorz", 'r47')
583324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
584324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
585324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz gnarz gnorz'
586324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
587324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
588324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
589324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR48(self):
590324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz, gnarz, gnorz", 'r48')
591324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
592324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
593324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz gnarz gnorz'
594324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
595324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
596324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
597324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR49(self):
598324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz gnorz", 'r49')
599324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
600324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
601324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(gnurz gnorz)'
602324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
603324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
604324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
605324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR50(self):
606324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz", 'r50')
607324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
608324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
609324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(1.0 gnurz)'
610324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
611324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
612324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
613324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR51(self):
614324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurza gnurzb gnurzc", 'r51')
615324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
616324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.res.toStringTree(),
617324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurzb'
618324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
619324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
620324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
621324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR52(self):
622324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz", 'r52')
623324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
624324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.res.toStringTree(),
625324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz'
626324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
627324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
628324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
629324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR53(self):
630324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurz", 'r53')
631324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
632324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.res.toStringTree(),
633324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'gnurz'
634324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
635324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
636324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
637324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR54(self):
638324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("gnurza 1 + 2 gnurzb", 'r54')
639324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
640324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
641324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(+ 1 2)'
642324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
643324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
644324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
645324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR55a(self):
646324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public private 1 + 2", 'r55')
647324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
648324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
649324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'public private (+ 1 2)'
650324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
651324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
652324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
653324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR55b(self):
654324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("public fooze", 'r55')
655324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
656324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
657324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'public fooze'
658324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
659324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
660324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
661324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR56(self):
662324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("a b c d", 'r56')
663324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
664324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
665324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'foo'
666324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
667324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
668324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
669324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR57(self):
670324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("a b c d", 'r57')
671324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
672324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
673324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            'foo'
674324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
675324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
676324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
677324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    def testR59(self):
678324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        r = self.parse("a b c fooze", 'r59')
679324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        self.failUnlessEqual(
680324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            r.tree.toStringTree(),
681324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            '(a fooze) (b fooze) (c fooze)'
682324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            )
683324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
684324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
685324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
686324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverif __name__ == '__main__':
687324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    unittest.main()
688324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
689