<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>t042ast</title> <!-- ANTLR includes --> <script type="text/javascript" src="../../lib/antlr3-all.js"></script> <script type="text/javascript" src="t042astLexer.js"></script> <script type="text/javascript" src="t042astParser.js"></script> <!-- JsUnit include --> <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script> <!-- Test Code --> <script type="text/javascript"> var TLexer = function() { TLexer.superclass.constructor.apply(this, arguments); }; org.antlr.lang.extend(TLexer, t042astLexer, { recover: function(re) { /* don't recover, just crash */ throw re; } }); var TParser = function() { TParser.superclass.constructor.apply(this, arguments); }; org.antlr.lang.extend(TParser, t042astParser, { recover: function(re) { /* don't recover, just crash */ throw re; } }); function parse(text, method, rArgs, kwargs) { var cstream = new org.antlr.runtime.ANTLRStringStream(text), lexer = new TLexer(cstream), tstream = new org.antlr.runtime.CommonTokenStream(lexer), parser = new TParser(tstream); rArgs = rArgs || []; kwargs = kwargs || {}; org.antlr.lang.augmentObject(parser, kwargs); return parser[method].apply(parser, rArgs); } function testR1() { var r = parse("1 + 2", "r1"); assertEquals(r.tree.toStringTree(), "(+ 1 2)"); } function testR2a() { var r = parse("assert 2+3;", "r2"); assertEquals(r.tree.toStringTree(), "(assert (+ 2 3))"); } function testR2b() { var r = parse("assert 2+3 : 5;", "r2"); assertEquals(r.tree.toStringTree(), "(assert (+ 2 3) 5)"); } function testR3a() { var r = parse("if 1 fooze", "r3"); assertEquals(r.tree.toStringTree(), "(if 1 fooze)"); } function testR3b() { var r = parse("if 1 fooze else fooze", "r3"); assertEquals(r.tree.toStringTree(), "(if 1 fooze fooze)"); } function testR4a() { var r = parse("while 2 fooze", "r4"); assertEquals(r.tree.toStringTree(), "(while 2 fooze)"); } function testR4b() { var r = parse("while 2 fooze", "r4"); assertEquals(r.tree.toStringTree(), "(while 2 fooze)"); } function testR5a() { var r = parse("return;", "r5"); assertEquals(r.tree.toStringTree(), "return"); } function testR5b() { var r = parse("return 2+3;", "r5"); assertEquals(r.tree.toStringTree(), "(return (+ 2 3))"); } function testR6a() { var r = parse("3", "r6"); assertEquals(r.tree.toStringTree(), "3"); } function testR6b() { var r = parse("3 a", "r6"); assertEquals(r.tree.toStringTree(), "3 a"); } function testR7() { var r = parse("3", "r7"); assertNull(r.tree); } function testR8() { var r = parse("var foo:bool", "r8"); assertEquals(r.tree.toStringTree(), "(var bool foo)"); } function testR9() { var r = parse("int foo;", "r9"); assertEquals(r.tree.toStringTree(), "(VARDEF int foo)"); } function testR10() { var r = parse("10", "r10"); assertEquals(r.tree.toStringTree(), "10.0"); } function testR11a() { var r = parse("1+2", "r11"); assertEquals(r.tree.toStringTree(), "(EXPR (+ 1 2))"); } function testR11b() { var r = parse("", "r11"); assertEquals(r.tree.toStringTree(), "EXPR"); } function testR12a() { var r = parse("foo", "r12"); assertEquals(r.tree.toStringTree(), "foo"); } function testR12b() { var r = parse("foo, bar, gnurz", "r12"); assertEquals(r.tree.toStringTree(), "foo bar gnurz"); } function testR13a() { var r = parse("int foo;", "r13"); assertEquals(r.tree.toStringTree(), "(int foo)"); } function testR13b() { var r = parse("bool foo, bar, gnurz;", "r13"); assertEquals(r.tree.toStringTree(), "(bool foo bar gnurz)"); } function testR14a() { var r = parse("1+2 int", "r14"); assertEquals(r.tree.toStringTree(), "(EXPR (+ 1 2) int)"); } function testR14b() { var r = parse("1+2 int bool", "r14"); assertEquals(r.tree.toStringTree(), "(EXPR (+ 1 2) int bool)"); } function testR14c() { var r = parse("int bool", "r14"); assertEquals(r.tree.toStringTree(), "(EXPR int bool)"); } function testR14d() { var r = parse("fooze fooze int bool", "r14"); assertEquals(r.tree.toStringTree(), "(EXPR fooze fooze int bool)"); } function testR14e() { var r = parse("7+9 fooze fooze int bool", "r14"); assertEquals(r.tree.toStringTree(), "(EXPR (+ 7 9) fooze fooze int bool)"); } function testR15() { var r = parse("7", "r15"); assertEquals(r.tree.toStringTree(), "7 7"); } function testR16a() { var r = parse("int foo", "r16"); assertEquals(r.tree.toStringTree(), "(int foo)"); } function testR16b() { var r = parse("int foo, bar, gnurz", "r16"); assertEquals(r.tree.toStringTree(), "(int foo) (int bar) (int gnurz)"); } function testR17a() { var r = parse("for ( fooze ; 1 + 2 ; fooze ) fooze", "r17"); assertEquals(r.tree.toStringTree(), "(for fooze (+ 1 2) fooze fooze)"); } function testR18a() { var r = parse("for", "r18"); assertEquals(r.tree.toStringTree(), "BLOCK"); } function testR19a() { var r = parse("for", "r19"); assertEquals(r.tree.toStringTree(), "for"); } function testR20a() { var r = parse("for", "r20"); assertEquals(r.tree.toStringTree(), "FOR"); } function testR21a() { var r = parse("for", "r21"); assertEquals(r.tree.toStringTree(), "BLOCK"); } function testR22a() { var r = parse("for", "r22"); assertEquals(r.tree.toStringTree(), "for"); } function testR23a() { var r = parse("for", "r23"); assertEquals(r.tree.toStringTree(), "FOR"); } function testR24a() { var r = parse("fooze 1 + 2", "r24"); assertEquals(r.tree.toStringTree(), "(fooze (+ 1 2))"); } function testR25a() { var r = parse("fooze, fooze 1 + 2", "r25"); assertEquals(r.tree.toStringTree(), "(fooze (+ 1 2))"); } function testR26a() { var r = parse("fooze, fooze2", "r26"); assertEquals(r.tree.toStringTree(), "(BLOCK fooze fooze2)"); } function testR27a() { var r = parse("fooze 1 + 2", "r27"); assertEquals(r.tree.toStringTree(), "(fooze (fooze (+ 1 2)))"); } function testR28() { var r = parse("foo28a", "r28"); assertNull(r.getTree()); } function testR29() { try { var r = parse("", "r29"); fail("should not reach here"); } catch(e) {} } function testR31a() { var r = parse("public int gnurz = 1 + 2;", "r31", null, {flag:0}); assertEquals(r.tree.toStringTree(), '(VARDEF gnurz public int (+ 1 2))'); } function testR31b() { var r = parse("public int gnurz = 1 + 2;", "r31", null, {flag:1}); assertEquals(r.tree.toStringTree(), '(VARIABLE gnurz public int (+ 1 2))'); } function testR31c() { var r = parse("public int gnurz = 1 + 2;", "r31", null, {flag:2}); assertEquals(r.tree.toStringTree(), '(FIELD gnurz public int (+ 1 2))'); } function testR32a() { var r = parse("gnurz 32", "r32", [1], {flag:2}); assertEquals(r.tree.toStringTree(), 'gnurz'); } function testR32b() { var r = parse("gnurz 32", "r32", [2], {flag:2}); assertEquals(r.tree.toStringTree(), '32'); } function testR32c() { var r = parse("gnurz 32", "r32", [3], {flag:2}); assertNull(r.tree); } function testR33a() { var r = parse("public private fooze", "r33", [2], {flag:2}); assertEquals(r.tree.toStringTree(), 'fooze'); } function testR34a() { var r = parse("public class gnurz { fooze fooze2 }", "r34"); assertEquals(r.tree.toStringTree(), "(class gnurz public fooze fooze2)"); } function testR34b() { var r = parse("public class gnurz extends bool implements int, bool { fooze fooze2 }", "r34"); assertEquals(r.tree.toStringTree(), "(class gnurz public (extends bool) (implements int bool) fooze fooze2)"); } function testR35() { try { var r = parse("{ extends }", "r35"); fail("should not reach here"); } catch(e) {} } function testR36a() { var r = parse("if ( 1 + 2 ) fooze", "r36"); assertEquals(r.tree.toStringTree(), "(if (EXPR (+ 1 2)) fooze)"); } function testR36b() { var r = parse("if ( 1 + 2 ) fooze else fooze2", "r36"); assertEquals(r.tree.toStringTree(), "(if (EXPR (+ 1 2)) fooze fooze2)"); } function testR37() { var r = parse("1 + 2 + 3", "r37"); assertEquals(r.tree.toStringTree(), "(+ (+ 1 2) 3)"); } function testR38() { var r = parse("1 + 2 + 3", "r38"); assertEquals(r.tree.toStringTree(), "(+ (+ 1 2) 3)"); } function testR39a() { var r = parse("gnurz[1]", "r39"); assertEquals(r.tree.toStringTree(), "(INDEX gnurz 1)"); } function testR39b() { var r = parse("gnurz(2)", "r39"); assertEquals(r.tree.toStringTree(), "(CALL gnurz 2)"); } function testR39c() { var r = parse("gnurz.gnurz", "r39"); assertEquals(r.tree.toStringTree(), "(FIELDACCESS gnurz gnurz)"); } function testR39d() { var r = parse("gnurz.gnarz.gnorz", "r39"); assertEquals(r.tree.toStringTree(), "(FIELDACCESS (FIELDACCESS gnurz gnarz) gnorz)"); } function testR40() { var r = parse("1 + 2 + 3;", "r40"); assertEquals(r.tree.toStringTree(), "(+ 1 2 3)"); } function testR41() { var r = parse("1 + 2 + 3;", "r41"); assertEquals(r.tree.toStringTree(), "(3 (2 1))"); } function testR42() { var r = parse("gnurz, gnarz, gnorz", "r42"); assertEquals(r.tree.toStringTree(), "gnurz gnarz gnorz"); } function testR43() { var r = parse("gnurz, gnarz, gnorz", "r43"); assertNull(r.tree); assertArrayEquals(r.res, ["gnurz", "gnarz", "gnorz"]); } function testR44() { var r = parse("gnurz, gnarz, gnorz", "r44"); assertEquals(r.tree.toStringTree(), "(gnorz (gnarz gnurz))"); } function testR45() { var r = parse("gnurz", "r45"); assertEquals(r.tree.toStringTree(), "gnurz"); } function testR46() { var r = parse("gnurz, gnarz, gnorz", "r46"); assertNull(r.tree); assertArrayEquals(r.res, ["gnurz", "gnarz", "gnorz"]); } function testR47() { var r = parse("gnurz, gnarz, gnorz", "r47"); assertEquals(r.tree.toStringTree(), "gnurz gnarz gnorz"); } function testR48() { var r = parse("gnurz, gnarz, gnorz", "r48"); assertEquals(r.tree.toStringTree(), "gnurz gnarz gnorz"); } function testR49() { var r = parse("gnurz gnorz", "r49"); assertEquals(r.tree.toStringTree(), "(gnurz gnorz)"); } function testR50() { var r = parse("gnurz", "r50"); assertEquals(r.tree.toStringTree(), "(1.0 gnurz)"); } function testR51() { var r = parse("gnurza gnurzb gnurzc", "r51"); assertEquals(r.res.toStringTree(), "gnurzb"); } function testR52() { var r = parse("gnurz", "r52"); assertEquals(r.res.toStringTree(), "gnurz"); } function testR53() { var r = parse("gnurz", "r53"); assertEquals(r.res.toStringTree(), "gnurz"); } function testR54() { var r = parse("gnurza 1 + 2 gnurzb", "r54"); assertEquals(r.tree.toStringTree(), "(+ 1 2)"); } function testR55a() { var r = parse("public private 1 + 2", "r55"); assertEquals(r.tree.toStringTree(), "public private (+ 1 2)"); } function testR55b() { var r = parse("public fooze", "r55"); assertEquals(r.tree.toStringTree(), "public fooze"); } function testR56() { var r = parse("a b c d", "r56"); assertEquals(r.tree.toStringTree(), "foo"); } function testR57() { var r = parse("a b c d", "r57"); assertEquals(r.tree.toStringTree(), "foo"); } function testR59() { var r = parse("a b c fooze", "r59"); assertEquals(r.tree.toStringTree(), "(a fooze) (b fooze) (c fooze)"); } </script> </head> <body> <h1>t042ast</h1> </body> </html>