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