1*16467b97STreehugger Robot<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2*16467b97STreehugger Robot<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 3*16467b97STreehugger Robot<head> 4*16467b97STreehugger Robot<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 5*16467b97STreehugger Robot<title>t042ast</title> 6*16467b97STreehugger Robot 7*16467b97STreehugger Robot<!-- ANTLR includes --> 8*16467b97STreehugger Robot<script type="text/javascript" src="../../lib/antlr3-all.js"></script> 9*16467b97STreehugger Robot<script type="text/javascript" src="t042astLexer.js"></script> 10*16467b97STreehugger Robot<script type="text/javascript" src="t042astParser.js"></script> 11*16467b97STreehugger Robot 12*16467b97STreehugger Robot 13*16467b97STreehugger Robot<!-- JsUnit include --> 14*16467b97STreehugger Robot<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script> 15*16467b97STreehugger Robot 16*16467b97STreehugger Robot<!-- Test Code --> 17*16467b97STreehugger Robot<script type="text/javascript"> 18*16467b97STreehugger Robot var TLexer = function() { 19*16467b97STreehugger Robot TLexer.superclass.constructor.apply(this, arguments); 20*16467b97STreehugger Robot }; 21*16467b97STreehugger Robot org.antlr.lang.extend(TLexer, t042astLexer, { 22*16467b97STreehugger Robot recover: function(re) { 23*16467b97STreehugger Robot /* don't recover, just crash */ 24*16467b97STreehugger Robot throw re; 25*16467b97STreehugger Robot } 26*16467b97STreehugger Robot }); 27*16467b97STreehugger Robot 28*16467b97STreehugger Robot var TParser = function() { 29*16467b97STreehugger Robot TParser.superclass.constructor.apply(this, arguments); 30*16467b97STreehugger Robot }; 31*16467b97STreehugger Robot org.antlr.lang.extend(TParser, t042astParser, { 32*16467b97STreehugger Robot recover: function(re) { 33*16467b97STreehugger Robot /* don't recover, just crash */ 34*16467b97STreehugger Robot throw re; 35*16467b97STreehugger Robot } 36*16467b97STreehugger Robot }); 37*16467b97STreehugger Robot 38*16467b97STreehugger Robot 39*16467b97STreehugger Robot function parse(text, method, rArgs, kwargs) { 40*16467b97STreehugger Robot var cstream = new org.antlr.runtime.ANTLRStringStream(text), 41*16467b97STreehugger Robot lexer = new TLexer(cstream), 42*16467b97STreehugger Robot tstream = new org.antlr.runtime.CommonTokenStream(lexer), 43*16467b97STreehugger Robot parser = new TParser(tstream); 44*16467b97STreehugger Robot 45*16467b97STreehugger Robot rArgs = rArgs || []; 46*16467b97STreehugger Robot kwargs = kwargs || {}; 47*16467b97STreehugger Robot 48*16467b97STreehugger Robot org.antlr.lang.augmentObject(parser, kwargs); 49*16467b97STreehugger Robot return parser[method].apply(parser, rArgs); 50*16467b97STreehugger Robot } 51*16467b97STreehugger Robot 52*16467b97STreehugger Robot function testR1() { 53*16467b97STreehugger Robot var r = parse("1 + 2", "r1"); 54*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(+ 1 2)"); 55*16467b97STreehugger Robot } 56*16467b97STreehugger Robot 57*16467b97STreehugger Robot function testR2a() { 58*16467b97STreehugger Robot var r = parse("assert 2+3;", "r2"); 59*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(assert (+ 2 3))"); 60*16467b97STreehugger Robot } 61*16467b97STreehugger Robot 62*16467b97STreehugger Robot function testR2b() { 63*16467b97STreehugger Robot var r = parse("assert 2+3 : 5;", "r2"); 64*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(assert (+ 2 3) 5)"); 65*16467b97STreehugger Robot } 66*16467b97STreehugger Robot 67*16467b97STreehugger Robot function testR3a() { 68*16467b97STreehugger Robot var r = parse("if 1 fooze", "r3"); 69*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(if 1 fooze)"); 70*16467b97STreehugger Robot } 71*16467b97STreehugger Robot 72*16467b97STreehugger Robot function testR3b() { 73*16467b97STreehugger Robot var r = parse("if 1 fooze else fooze", "r3"); 74*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(if 1 fooze fooze)"); 75*16467b97STreehugger Robot } 76*16467b97STreehugger Robot 77*16467b97STreehugger Robot function testR4a() { 78*16467b97STreehugger Robot var r = parse("while 2 fooze", "r4"); 79*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(while 2 fooze)"); 80*16467b97STreehugger Robot } 81*16467b97STreehugger Robot 82*16467b97STreehugger Robot function testR4b() { 83*16467b97STreehugger Robot var r = parse("while 2 fooze", "r4"); 84*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(while 2 fooze)"); 85*16467b97STreehugger Robot } 86*16467b97STreehugger Robot 87*16467b97STreehugger Robot function testR5a() { 88*16467b97STreehugger Robot var r = parse("return;", "r5"); 89*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "return"); 90*16467b97STreehugger Robot } 91*16467b97STreehugger Robot 92*16467b97STreehugger Robot function testR5b() { 93*16467b97STreehugger Robot var r = parse("return 2+3;", "r5"); 94*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(return (+ 2 3))"); 95*16467b97STreehugger Robot } 96*16467b97STreehugger Robot 97*16467b97STreehugger Robot function testR6a() { 98*16467b97STreehugger Robot var r = parse("3", "r6"); 99*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "3"); 100*16467b97STreehugger Robot } 101*16467b97STreehugger Robot 102*16467b97STreehugger Robot function testR6b() { 103*16467b97STreehugger Robot var r = parse("3 a", "r6"); 104*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "3 a"); 105*16467b97STreehugger Robot } 106*16467b97STreehugger Robot 107*16467b97STreehugger Robot function testR7() { 108*16467b97STreehugger Robot var r = parse("3", "r7"); 109*16467b97STreehugger Robot assertNull(r.tree); 110*16467b97STreehugger Robot } 111*16467b97STreehugger Robot 112*16467b97STreehugger Robot function testR8() { 113*16467b97STreehugger Robot var r = parse("var foo:bool", "r8"); 114*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(var bool foo)"); 115*16467b97STreehugger Robot } 116*16467b97STreehugger Robot 117*16467b97STreehugger Robot function testR9() { 118*16467b97STreehugger Robot var r = parse("int foo;", "r9"); 119*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(VARDEF int foo)"); 120*16467b97STreehugger Robot } 121*16467b97STreehugger Robot 122*16467b97STreehugger Robot function testR10() { 123*16467b97STreehugger Robot var r = parse("10", "r10"); 124*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "10.0"); 125*16467b97STreehugger Robot } 126*16467b97STreehugger Robot 127*16467b97STreehugger Robot function testR11a() { 128*16467b97STreehugger Robot var r = parse("1+2", "r11"); 129*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(EXPR (+ 1 2))"); 130*16467b97STreehugger Robot } 131*16467b97STreehugger Robot 132*16467b97STreehugger Robot function testR11b() { 133*16467b97STreehugger Robot var r = parse("", "r11"); 134*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "EXPR"); 135*16467b97STreehugger Robot } 136*16467b97STreehugger Robot 137*16467b97STreehugger Robot function testR12a() { 138*16467b97STreehugger Robot var r = parse("foo", "r12"); 139*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "foo"); 140*16467b97STreehugger Robot } 141*16467b97STreehugger Robot 142*16467b97STreehugger Robot function testR12b() { 143*16467b97STreehugger Robot var r = parse("foo, bar, gnurz", "r12"); 144*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "foo bar gnurz"); 145*16467b97STreehugger Robot } 146*16467b97STreehugger Robot 147*16467b97STreehugger Robot function testR13a() { 148*16467b97STreehugger Robot var r = parse("int foo;", "r13"); 149*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(int foo)"); 150*16467b97STreehugger Robot } 151*16467b97STreehugger Robot 152*16467b97STreehugger Robot function testR13b() { 153*16467b97STreehugger Robot var r = parse("bool foo, bar, gnurz;", "r13"); 154*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(bool foo bar gnurz)"); 155*16467b97STreehugger Robot } 156*16467b97STreehugger Robot 157*16467b97STreehugger Robot function testR14a() { 158*16467b97STreehugger Robot var r = parse("1+2 int", "r14"); 159*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(EXPR (+ 1 2) int)"); 160*16467b97STreehugger Robot } 161*16467b97STreehugger Robot 162*16467b97STreehugger Robot function testR14b() { 163*16467b97STreehugger Robot var r = parse("1+2 int bool", "r14"); 164*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(EXPR (+ 1 2) int bool)"); 165*16467b97STreehugger Robot } 166*16467b97STreehugger Robot 167*16467b97STreehugger Robot function testR14c() { 168*16467b97STreehugger Robot var r = parse("int bool", "r14"); 169*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(EXPR int bool)"); 170*16467b97STreehugger Robot } 171*16467b97STreehugger Robot 172*16467b97STreehugger Robot function testR14d() { 173*16467b97STreehugger Robot var r = parse("fooze fooze int bool", "r14"); 174*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(EXPR fooze fooze int bool)"); 175*16467b97STreehugger Robot } 176*16467b97STreehugger Robot 177*16467b97STreehugger Robot function testR14e() { 178*16467b97STreehugger Robot var r = parse("7+9 fooze fooze int bool", "r14"); 179*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(EXPR (+ 7 9) fooze fooze int bool)"); 180*16467b97STreehugger Robot } 181*16467b97STreehugger Robot 182*16467b97STreehugger Robot function testR15() { 183*16467b97STreehugger Robot var r = parse("7", "r15"); 184*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "7 7"); 185*16467b97STreehugger Robot } 186*16467b97STreehugger Robot 187*16467b97STreehugger Robot function testR16a() { 188*16467b97STreehugger Robot var r = parse("int foo", "r16"); 189*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(int foo)"); 190*16467b97STreehugger Robot } 191*16467b97STreehugger Robot 192*16467b97STreehugger Robot function testR16b() { 193*16467b97STreehugger Robot var r = parse("int foo, bar, gnurz", "r16"); 194*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(int foo) (int bar) (int gnurz)"); 195*16467b97STreehugger Robot } 196*16467b97STreehugger Robot 197*16467b97STreehugger Robot function testR17a() { 198*16467b97STreehugger Robot var r = parse("for ( fooze ; 1 + 2 ; fooze ) fooze", "r17"); 199*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(for fooze (+ 1 2) fooze fooze)"); 200*16467b97STreehugger Robot } 201*16467b97STreehugger Robot 202*16467b97STreehugger Robot function testR18a() { 203*16467b97STreehugger Robot var r = parse("for", "r18"); 204*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "BLOCK"); 205*16467b97STreehugger Robot } 206*16467b97STreehugger Robot 207*16467b97STreehugger Robot function testR19a() { 208*16467b97STreehugger Robot var r = parse("for", "r19"); 209*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "for"); 210*16467b97STreehugger Robot } 211*16467b97STreehugger Robot 212*16467b97STreehugger Robot function testR20a() { 213*16467b97STreehugger Robot var r = parse("for", "r20"); 214*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "FOR"); 215*16467b97STreehugger Robot } 216*16467b97STreehugger Robot 217*16467b97STreehugger Robot function testR21a() { 218*16467b97STreehugger Robot var r = parse("for", "r21"); 219*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "BLOCK"); 220*16467b97STreehugger Robot } 221*16467b97STreehugger Robot 222*16467b97STreehugger Robot function testR22a() { 223*16467b97STreehugger Robot var r = parse("for", "r22"); 224*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "for"); 225*16467b97STreehugger Robot } 226*16467b97STreehugger Robot 227*16467b97STreehugger Robot function testR23a() { 228*16467b97STreehugger Robot var r = parse("for", "r23"); 229*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "FOR"); 230*16467b97STreehugger Robot } 231*16467b97STreehugger Robot 232*16467b97STreehugger Robot function testR24a() { 233*16467b97STreehugger Robot var r = parse("fooze 1 + 2", "r24"); 234*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(fooze (+ 1 2))"); 235*16467b97STreehugger Robot } 236*16467b97STreehugger Robot 237*16467b97STreehugger Robot function testR25a() { 238*16467b97STreehugger Robot var r = parse("fooze, fooze 1 + 2", "r25"); 239*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(fooze (+ 1 2))"); 240*16467b97STreehugger Robot } 241*16467b97STreehugger Robot 242*16467b97STreehugger Robot function testR26a() { 243*16467b97STreehugger Robot var r = parse("fooze, fooze2", "r26"); 244*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(BLOCK fooze fooze2)"); 245*16467b97STreehugger Robot } 246*16467b97STreehugger Robot 247*16467b97STreehugger Robot function testR27a() { 248*16467b97STreehugger Robot var r = parse("fooze 1 + 2", "r27"); 249*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(fooze (fooze (+ 1 2)))"); 250*16467b97STreehugger Robot } 251*16467b97STreehugger Robot 252*16467b97STreehugger Robot function testR28() { 253*16467b97STreehugger Robot var r = parse("foo28a", "r28"); 254*16467b97STreehugger Robot assertNull(r.getTree()); 255*16467b97STreehugger Robot } 256*16467b97STreehugger Robot 257*16467b97STreehugger Robot function testR29() { 258*16467b97STreehugger Robot try { 259*16467b97STreehugger Robot var r = parse("", "r29"); 260*16467b97STreehugger Robot fail("should not reach here"); 261*16467b97STreehugger Robot } catch(e) {} 262*16467b97STreehugger Robot } 263*16467b97STreehugger Robot 264*16467b97STreehugger Robot function testR31a() { 265*16467b97STreehugger Robot var r = parse("public int gnurz = 1 + 2;", "r31", null, {flag:0}); 266*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), '(VARDEF gnurz public int (+ 1 2))'); 267*16467b97STreehugger Robot } 268*16467b97STreehugger Robot 269*16467b97STreehugger Robot function testR31b() { 270*16467b97STreehugger Robot var r = parse("public int gnurz = 1 + 2;", "r31", null, {flag:1}); 271*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), '(VARIABLE gnurz public int (+ 1 2))'); 272*16467b97STreehugger Robot } 273*16467b97STreehugger Robot 274*16467b97STreehugger Robot function testR31c() { 275*16467b97STreehugger Robot var r = parse("public int gnurz = 1 + 2;", "r31", null, {flag:2}); 276*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), '(FIELD gnurz public int (+ 1 2))'); 277*16467b97STreehugger Robot } 278*16467b97STreehugger Robot 279*16467b97STreehugger Robot function testR32a() { 280*16467b97STreehugger Robot var r = parse("gnurz 32", "r32", [1], {flag:2}); 281*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), 'gnurz'); 282*16467b97STreehugger Robot } 283*16467b97STreehugger Robot 284*16467b97STreehugger Robot function testR32b() { 285*16467b97STreehugger Robot var r = parse("gnurz 32", "r32", [2], {flag:2}); 286*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), '32'); 287*16467b97STreehugger Robot } 288*16467b97STreehugger Robot 289*16467b97STreehugger Robot function testR32c() { 290*16467b97STreehugger Robot var r = parse("gnurz 32", "r32", [3], {flag:2}); 291*16467b97STreehugger Robot assertNull(r.tree); 292*16467b97STreehugger Robot } 293*16467b97STreehugger Robot 294*16467b97STreehugger Robot function testR33a() { 295*16467b97STreehugger Robot var r = parse("public private fooze", "r33", [2], {flag:2}); 296*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), 'fooze'); 297*16467b97STreehugger Robot } 298*16467b97STreehugger Robot 299*16467b97STreehugger Robot function testR34a() { 300*16467b97STreehugger Robot var r = parse("public class gnurz { fooze fooze2 }", "r34"); 301*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(class gnurz public fooze fooze2)"); 302*16467b97STreehugger Robot } 303*16467b97STreehugger Robot 304*16467b97STreehugger Robot function testR34b() { 305*16467b97STreehugger Robot var r = parse("public class gnurz extends bool implements int, bool { fooze fooze2 }", "r34"); 306*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(class gnurz public (extends bool) (implements int bool) fooze fooze2)"); 307*16467b97STreehugger Robot } 308*16467b97STreehugger Robot 309*16467b97STreehugger Robot function testR35() { 310*16467b97STreehugger Robot try { 311*16467b97STreehugger Robot var r = parse("{ extends }", "r35"); 312*16467b97STreehugger Robot fail("should not reach here"); 313*16467b97STreehugger Robot } catch(e) {} 314*16467b97STreehugger Robot } 315*16467b97STreehugger Robot 316*16467b97STreehugger Robot function testR36a() { 317*16467b97STreehugger Robot var r = parse("if ( 1 + 2 ) fooze", "r36"); 318*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(if (EXPR (+ 1 2)) fooze)"); 319*16467b97STreehugger Robot } 320*16467b97STreehugger Robot 321*16467b97STreehugger Robot function testR36b() { 322*16467b97STreehugger Robot var r = parse("if ( 1 + 2 ) fooze else fooze2", "r36"); 323*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(if (EXPR (+ 1 2)) fooze fooze2)"); 324*16467b97STreehugger Robot } 325*16467b97STreehugger Robot 326*16467b97STreehugger Robot function testR37() { 327*16467b97STreehugger Robot var r = parse("1 + 2 + 3", "r37"); 328*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(+ (+ 1 2) 3)"); 329*16467b97STreehugger Robot } 330*16467b97STreehugger Robot 331*16467b97STreehugger Robot function testR38() { 332*16467b97STreehugger Robot var r = parse("1 + 2 + 3", "r38"); 333*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(+ (+ 1 2) 3)"); 334*16467b97STreehugger Robot } 335*16467b97STreehugger Robot 336*16467b97STreehugger Robot function testR39a() { 337*16467b97STreehugger Robot var r = parse("gnurz[1]", "r39"); 338*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(INDEX gnurz 1)"); 339*16467b97STreehugger Robot } 340*16467b97STreehugger Robot 341*16467b97STreehugger Robot function testR39b() { 342*16467b97STreehugger Robot var r = parse("gnurz(2)", "r39"); 343*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(CALL gnurz 2)"); 344*16467b97STreehugger Robot } 345*16467b97STreehugger Robot 346*16467b97STreehugger Robot function testR39c() { 347*16467b97STreehugger Robot var r = parse("gnurz.gnurz", "r39"); 348*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(FIELDACCESS gnurz gnurz)"); 349*16467b97STreehugger Robot } 350*16467b97STreehugger Robot 351*16467b97STreehugger Robot function testR39d() { 352*16467b97STreehugger Robot var r = parse("gnurz.gnarz.gnorz", "r39"); 353*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(FIELDACCESS (FIELDACCESS gnurz gnarz) gnorz)"); 354*16467b97STreehugger Robot } 355*16467b97STreehugger Robot 356*16467b97STreehugger Robot function testR40() { 357*16467b97STreehugger Robot var r = parse("1 + 2 + 3;", "r40"); 358*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(+ 1 2 3)"); 359*16467b97STreehugger Robot } 360*16467b97STreehugger Robot 361*16467b97STreehugger Robot function testR41() { 362*16467b97STreehugger Robot var r = parse("1 + 2 + 3;", "r41"); 363*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(3 (2 1))"); 364*16467b97STreehugger Robot } 365*16467b97STreehugger Robot 366*16467b97STreehugger Robot function testR42() { 367*16467b97STreehugger Robot var r = parse("gnurz, gnarz, gnorz", "r42"); 368*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "gnurz gnarz gnorz"); 369*16467b97STreehugger Robot } 370*16467b97STreehugger Robot 371*16467b97STreehugger Robot function testR43() { 372*16467b97STreehugger Robot var r = parse("gnurz, gnarz, gnorz", "r43"); 373*16467b97STreehugger Robot assertNull(r.tree); 374*16467b97STreehugger Robot assertArrayEquals(r.res, ["gnurz", "gnarz", "gnorz"]); 375*16467b97STreehugger Robot } 376*16467b97STreehugger Robot 377*16467b97STreehugger Robot function testR44() { 378*16467b97STreehugger Robot var r = parse("gnurz, gnarz, gnorz", "r44"); 379*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(gnorz (gnarz gnurz))"); 380*16467b97STreehugger Robot } 381*16467b97STreehugger Robot 382*16467b97STreehugger Robot function testR45() { 383*16467b97STreehugger Robot var r = parse("gnurz", "r45"); 384*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "gnurz"); 385*16467b97STreehugger Robot } 386*16467b97STreehugger Robot 387*16467b97STreehugger Robot function testR46() { 388*16467b97STreehugger Robot var r = parse("gnurz, gnarz, gnorz", "r46"); 389*16467b97STreehugger Robot assertNull(r.tree); 390*16467b97STreehugger Robot assertArrayEquals(r.res, ["gnurz", "gnarz", "gnorz"]); 391*16467b97STreehugger Robot } 392*16467b97STreehugger Robot 393*16467b97STreehugger Robot function testR47() { 394*16467b97STreehugger Robot var r = parse("gnurz, gnarz, gnorz", "r47"); 395*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "gnurz gnarz gnorz"); 396*16467b97STreehugger Robot } 397*16467b97STreehugger Robot 398*16467b97STreehugger Robot function testR48() { 399*16467b97STreehugger Robot var r = parse("gnurz, gnarz, gnorz", "r48"); 400*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "gnurz gnarz gnorz"); 401*16467b97STreehugger Robot } 402*16467b97STreehugger Robot 403*16467b97STreehugger Robot function testR49() { 404*16467b97STreehugger Robot var r = parse("gnurz gnorz", "r49"); 405*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(gnurz gnorz)"); 406*16467b97STreehugger Robot } 407*16467b97STreehugger Robot 408*16467b97STreehugger Robot function testR50() { 409*16467b97STreehugger Robot var r = parse("gnurz", "r50"); 410*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(1.0 gnurz)"); 411*16467b97STreehugger Robot } 412*16467b97STreehugger Robot 413*16467b97STreehugger Robot function testR51() { 414*16467b97STreehugger Robot var r = parse("gnurza gnurzb gnurzc", "r51"); 415*16467b97STreehugger Robot assertEquals(r.res.toStringTree(), "gnurzb"); 416*16467b97STreehugger Robot } 417*16467b97STreehugger Robot 418*16467b97STreehugger Robot function testR52() { 419*16467b97STreehugger Robot var r = parse("gnurz", "r52"); 420*16467b97STreehugger Robot assertEquals(r.res.toStringTree(), "gnurz"); 421*16467b97STreehugger Robot } 422*16467b97STreehugger Robot 423*16467b97STreehugger Robot function testR53() { 424*16467b97STreehugger Robot var r = parse("gnurz", "r53"); 425*16467b97STreehugger Robot assertEquals(r.res.toStringTree(), "gnurz"); 426*16467b97STreehugger Robot } 427*16467b97STreehugger Robot 428*16467b97STreehugger Robot function testR54() { 429*16467b97STreehugger Robot var r = parse("gnurza 1 + 2 gnurzb", "r54"); 430*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(+ 1 2)"); 431*16467b97STreehugger Robot } 432*16467b97STreehugger Robot 433*16467b97STreehugger Robot function testR55a() { 434*16467b97STreehugger Robot var r = parse("public private 1 + 2", "r55"); 435*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "public private (+ 1 2)"); 436*16467b97STreehugger Robot } 437*16467b97STreehugger Robot 438*16467b97STreehugger Robot function testR55b() { 439*16467b97STreehugger Robot var r = parse("public fooze", "r55"); 440*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "public fooze"); 441*16467b97STreehugger Robot } 442*16467b97STreehugger Robot 443*16467b97STreehugger Robot function testR56() { 444*16467b97STreehugger Robot var r = parse("a b c d", "r56"); 445*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "foo"); 446*16467b97STreehugger Robot } 447*16467b97STreehugger Robot 448*16467b97STreehugger Robot function testR57() { 449*16467b97STreehugger Robot var r = parse("a b c d", "r57"); 450*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "foo"); 451*16467b97STreehugger Robot } 452*16467b97STreehugger Robot 453*16467b97STreehugger Robot function testR59() { 454*16467b97STreehugger Robot var r = parse("a b c fooze", "r59"); 455*16467b97STreehugger Robot assertEquals(r.tree.toStringTree(), "(a fooze) (b fooze) (c fooze)"); 456*16467b97STreehugger Robot } 457*16467b97STreehugger Robot</script> 458*16467b97STreehugger Robot 459*16467b97STreehugger Robot</head> 460*16467b97STreehugger Robot<body> 461*16467b97STreehugger Robot <h1>t042ast</h1> 462*16467b97STreehugger Robot</body> 463*16467b97STreehugger Robot</html> 464