xref: /aosp_15_r20/external/antlr/runtime/JavaScript/tests/functional/t042ast.html (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
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