xref: /aosp_15_r20/external/antlr/runtime/JavaScript/tests/functional/t051treeRewriteAST.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>t051treeRewriteAST</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="t051treeRewriteASTaLexer.js"></script>
10*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTaParser.js"></script>
11*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTaWalker.js"></script>
12*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTbLexer.js"></script>
13*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTbParser.js"></script>
14*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTbWalker.js"></script>
15*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTcLexer.js"></script>
16*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTcParser.js"></script>
17*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTcWalker.js"></script>
18*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTdLexer.js"></script>
19*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTdParser.js"></script>
20*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTdWalker.js"></script>
21*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTeLexer.js"></script>
22*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTeParser.js"></script>
23*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTeWalker.js"></script>
24*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTfLexer.js"></script>
25*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTfParser.js"></script>
26*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTfWalker.js"></script>
27*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTgLexer.js"></script>
28*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTgParser.js"></script>
29*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTgWalker.js"></script>
30*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASThLexer.js"></script>
31*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASThParser.js"></script>
32*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASThWalker.js"></script>
33*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTiLexer.js"></script>
34*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTiParser.js"></script>
35*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTiWalker.js"></script>
36*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTjLexer.js"></script>
37*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTjParser.js"></script>
38*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTjWalker.js"></script>
39*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTkLexer.js"></script>
40*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTkParser.js"></script>
41*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTkWalker.js"></script>
42*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTlLexer.js"></script>
43*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTlParser.js"></script>
44*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTlWalker.js"></script>
45*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTmLexer.js"></script>
46*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTmParser.js"></script>
47*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTmWalker.js"></script>
48*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTnLexer.js"></script>
49*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTnParser.js"></script>
50*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTnWalker.js"></script>
51*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASToLexer.js"></script>
52*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASToParser.js"></script>
53*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASToWalker.js"></script>
54*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTpLexer.js"></script>
55*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTpParser.js"></script>
56*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTpWalker.js"></script>
57*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTqLexer.js"></script>
58*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTqParser.js"></script>
59*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTqWalker.js"></script>
60*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTrLexer.js"></script>
61*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTrParser.js"></script>
62*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTrWalker.js"></script>
63*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTsLexer.js"></script>
64*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTsParser.js"></script>
65*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTsWalker.js"></script>
66*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTtLexer.js"></script>
67*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTtParser.js"></script>
68*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTtWalker.js"></script>
69*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTuLexer.js"></script>
70*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTuParser.js"></script>
71*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTuWalker.js"></script>
72*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTvLexer.js"></script>
73*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTvParser.js"></script>
74*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTvWalker.js"></script>
75*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTwLexer.js"></script>
76*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTwParser.js"></script>
77*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTwWalker.js"></script>
78*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTxLexer.js"></script>
79*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTxParser.js"></script>
80*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTxWalker.js"></script>
81*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTyLexer.js"></script>
82*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTyParser.js"></script>
83*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTyWalker.js"></script>
84*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTzLexer.js"></script>
85*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTzParser.js"></script>
86*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTzWalker.js"></script>
87*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTaaLexer.js"></script>
88*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTaaParser.js"></script>
89*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTaaWalker.js"></script>
90*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTabLexer.js"></script>
91*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTabParser.js"></script>
92*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTabWalker.js"></script>
93*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTacLexer.js"></script>
94*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTacParser.js"></script>
95*16467b97STreehugger Robot<script type="text/javascript" src="t051treeRewriteASTacWalker.js"></script>
96*16467b97STreehugger Robot
97*16467b97STreehugger Robot<!-- JsUnit include -->
98*16467b97STreehugger Robot<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
99*16467b97STreehugger Robot
100*16467b97STreehugger Robot<!-- Test Code -->
101*16467b97STreehugger Robot<script type="text/javascript">
102*16467b97STreehugger Robot    function execTreeParser(lexerCls, parserCls, grammarEntry, walkerCls, treeEntry, xinput)
103*16467b97STreehugger Robot    {
104*16467b97STreehugger Robot        var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
105*16467b97STreehugger Robot            lexer = new lexerCls(cstream),
106*16467b97STreehugger Robot            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
107*16467b97STreehugger Robot            parser = new parserCls(tstream);
108*16467b97STreehugger Robot        var r = parser[grammarEntry]();
109*16467b97STreehugger Robot
110*16467b97STreehugger Robot        var nodes = new org.antlr.runtime.tree.CommonTreeNodeStream(r.getTree());
111*16467b97STreehugger Robot        nodes.setTokenStream(tstream);
112*16467b97STreehugger Robot        var walker = new (walkerClass(walkerCls))(nodes);
113*16467b97STreehugger Robot        var w = walker[treeEntry]();
114*16467b97STreehugger Robot
115*16467b97STreehugger Robot        if (w.tree) {
116*16467b97STreehugger Robot            return w.tree.toStringTree();
117*16467b97STreehugger Robot        }
118*16467b97STreehugger Robot        return "";
119*16467b97STreehugger Robot    }
120*16467b97STreehugger Robot
121*16467b97STreehugger Robot    function walkerClass(base) {
122*16467b97STreehugger Robot        var TWalker = function() {
123*16467b97STreehugger Robot            TWalker.superclass.constructor.apply(this, arguments);
124*16467b97STreehugger Robot            this.traces = [];
125*16467b97STreehugger Robot            this.buf = "";
126*16467b97STreehugger Robot        };
127*16467b97STreehugger Robot
128*16467b97STreehugger Robot        org.antlr.lang.extend(TWalker, base, {
129*16467b97STreehugger Robot            traceIn: function(ruleName, ruleIndex) {
130*16467b97STreehugger Robot                this.traces.push(">"+ruleName);
131*16467b97STreehugger Robot            },
132*16467b97STreehugger Robot            traceOut: function(ruleName, ruleIndex) {
133*16467b97STreehugger Robot                this.traces.push("<"+ruleName);
134*16467b97STreehugger Robot            },
135*16467b97STreehugger Robot            reportError: function(input, re) {
136*16467b97STreehugger Robot                throw re;
137*16467b97STreehugger Robot            }
138*16467b97STreehugger Robot        });
139*16467b97STreehugger Robot
140*16467b97STreehugger Robot        return TWalker;
141*16467b97STreehugger Robot    }
142*16467b97STreehugger Robot
143*16467b97STreehugger Robot    function testFlatList() {
144*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTaLexer,
145*16467b97STreehugger Robot                t051treeRewriteASTaParser,
146*16467b97STreehugger Robot                "a",
147*16467b97STreehugger Robot                t051treeRewriteASTaWalker,
148*16467b97STreehugger Robot                "a",
149*16467b97STreehugger Robot                "abc 34");
150*16467b97STreehugger Robot        assertEquals(found, "34 abc");
151*16467b97STreehugger Robot    }
152*16467b97STreehugger Robot
153*16467b97STreehugger Robot    function testSimpleTree() {
154*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTbLexer,
155*16467b97STreehugger Robot                t051treeRewriteASTbParser,
156*16467b97STreehugger Robot                "a",
157*16467b97STreehugger Robot                t051treeRewriteASTbWalker,
158*16467b97STreehugger Robot                "a",
159*16467b97STreehugger Robot                "abc 34");
160*16467b97STreehugger Robot        assertEquals(found, "(34 abc)");
161*16467b97STreehugger Robot    }
162*16467b97STreehugger Robot
163*16467b97STreehugger Robot    function testCombinedRewriteAndAuto() {
164*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTcLexer,
165*16467b97STreehugger Robot                t051treeRewriteASTcParser,
166*16467b97STreehugger Robot                "a",
167*16467b97STreehugger Robot                t051treeRewriteASTcWalker,
168*16467b97STreehugger Robot                "a",
169*16467b97STreehugger Robot                "abc 34");
170*16467b97STreehugger Robot        assertEquals(found, "(34 abc)");
171*16467b97STreehugger Robot
172*16467b97STreehugger Robot        found = execTreeParser(t051treeRewriteASTcLexer,
173*16467b97STreehugger Robot                t051treeRewriteASTcParser,
174*16467b97STreehugger Robot                "a",
175*16467b97STreehugger Robot                t051treeRewriteASTcWalker,
176*16467b97STreehugger Robot                "a",
177*16467b97STreehugger Robot                "34");
178*16467b97STreehugger Robot        assertEquals(found, "34");
179*16467b97STreehugger Robot    }
180*16467b97STreehugger Robot
181*16467b97STreehugger Robot    function testAvoidDup() {
182*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTdLexer,
183*16467b97STreehugger Robot                t051treeRewriteASTdParser,
184*16467b97STreehugger Robot                "a",
185*16467b97STreehugger Robot                t051treeRewriteASTdWalker,
186*16467b97STreehugger Robot                "a",
187*16467b97STreehugger Robot                "abc");
188*16467b97STreehugger Robot        assertEquals(found, "(abc abc)");
189*16467b97STreehugger Robot    }
190*16467b97STreehugger Robot
191*16467b97STreehugger Robot    function testLoop() {
192*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTeLexer,
193*16467b97STreehugger Robot                t051treeRewriteASTeParser,
194*16467b97STreehugger Robot                "a",
195*16467b97STreehugger Robot                t051treeRewriteASTeWalker,
196*16467b97STreehugger Robot                "a",
197*16467b97STreehugger Robot                "a b c 3 4 5");
198*16467b97STreehugger Robot        assertEquals(found, "3 4 5 a b c");
199*16467b97STreehugger Robot    }
200*16467b97STreehugger Robot
201*16467b97STreehugger Robot    function testAutoDup() {
202*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTfLexer,
203*16467b97STreehugger Robot                t051treeRewriteASTfParser,
204*16467b97STreehugger Robot                "a",
205*16467b97STreehugger Robot                t051treeRewriteASTfWalker,
206*16467b97STreehugger Robot                "a",
207*16467b97STreehugger Robot                "abc");
208*16467b97STreehugger Robot        assertEquals(found, "abc");
209*16467b97STreehugger Robot    }
210*16467b97STreehugger Robot
211*16467b97STreehugger Robot    function testAutoDupRule() {
212*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTgLexer,
213*16467b97STreehugger Robot                t051treeRewriteASTgParser,
214*16467b97STreehugger Robot                "a",
215*16467b97STreehugger Robot                t051treeRewriteASTgWalker,
216*16467b97STreehugger Robot                "a",
217*16467b97STreehugger Robot                "a 1");
218*16467b97STreehugger Robot        assertEquals(found, "a 1");
219*16467b97STreehugger Robot    }
220*16467b97STreehugger Robot
221*16467b97STreehugger Robot    function testAutoDupMultiple() {
222*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASThLexer,
223*16467b97STreehugger Robot                t051treeRewriteASThParser,
224*16467b97STreehugger Robot                "a",
225*16467b97STreehugger Robot                t051treeRewriteASThWalker,
226*16467b97STreehugger Robot                "a",
227*16467b97STreehugger Robot                "a b 3");
228*16467b97STreehugger Robot        assertEquals(found, "a b 3");
229*16467b97STreehugger Robot    }
230*16467b97STreehugger Robot
231*16467b97STreehugger Robot    function testAutoDupTree() {
232*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTiLexer,
233*16467b97STreehugger Robot                t051treeRewriteASTiParser,
234*16467b97STreehugger Robot                "a",
235*16467b97STreehugger Robot                t051treeRewriteASTiWalker,
236*16467b97STreehugger Robot                "a",
237*16467b97STreehugger Robot                "a 3");
238*16467b97STreehugger Robot        assertEquals(found, "(a 3)");
239*16467b97STreehugger Robot    }
240*16467b97STreehugger Robot
241*16467b97STreehugger Robot    function testAutoDupTreeWithLabels() {
242*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTjLexer,
243*16467b97STreehugger Robot                t051treeRewriteASTjParser,
244*16467b97STreehugger Robot                "a",
245*16467b97STreehugger Robot                t051treeRewriteASTjWalker,
246*16467b97STreehugger Robot                "a",
247*16467b97STreehugger Robot                "a 3");
248*16467b97STreehugger Robot        assertEquals(found, "(a 3)");
249*16467b97STreehugger Robot    }
250*16467b97STreehugger Robot
251*16467b97STreehugger Robot    function testAutoDupTreeWithListLabels() {
252*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTkLexer,
253*16467b97STreehugger Robot                t051treeRewriteASTkParser,
254*16467b97STreehugger Robot                "a",
255*16467b97STreehugger Robot                t051treeRewriteASTkWalker,
256*16467b97STreehugger Robot                "a",
257*16467b97STreehugger Robot                "a 3");
258*16467b97STreehugger Robot        assertEquals(found, "(a 3)");
259*16467b97STreehugger Robot    }
260*16467b97STreehugger Robot
261*16467b97STreehugger Robot    function testAutoDupTreeWithRuleRoot() {
262*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTlLexer,
263*16467b97STreehugger Robot                t051treeRewriteASTlParser,
264*16467b97STreehugger Robot                "a",
265*16467b97STreehugger Robot                t051treeRewriteASTlWalker,
266*16467b97STreehugger Robot                "a",
267*16467b97STreehugger Robot                "a 3");
268*16467b97STreehugger Robot        assertEquals(found, "(a 3)");
269*16467b97STreehugger Robot    }
270*16467b97STreehugger Robot
271*16467b97STreehugger Robot    function testAutoDupTreeWithRuleRootAndLabels() {
272*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTmLexer,
273*16467b97STreehugger Robot                t051treeRewriteASTmParser,
274*16467b97STreehugger Robot                "a",
275*16467b97STreehugger Robot                t051treeRewriteASTmWalker,
276*16467b97STreehugger Robot                "a",
277*16467b97STreehugger Robot                "a 3");
278*16467b97STreehugger Robot        assertEquals(found, "(a 3)");
279*16467b97STreehugger Robot    }
280*16467b97STreehugger Robot
281*16467b97STreehugger Robot    function testAutoDupTreeWithRuleRootAndListLabels() {
282*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTnLexer,
283*16467b97STreehugger Robot                t051treeRewriteASTnParser,
284*16467b97STreehugger Robot                "a",
285*16467b97STreehugger Robot                t051treeRewriteASTnWalker,
286*16467b97STreehugger Robot                "a",
287*16467b97STreehugger Robot                "a 3");
288*16467b97STreehugger Robot        assertEquals(found, "(a 3)");
289*16467b97STreehugger Robot    }
290*16467b97STreehugger Robot
291*16467b97STreehugger Robot    function testAutoDupNestedTree() {
292*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASToLexer,
293*16467b97STreehugger Robot                t051treeRewriteASToParser,
294*16467b97STreehugger Robot                "a",
295*16467b97STreehugger Robot                t051treeRewriteASToWalker,
296*16467b97STreehugger Robot                "a",
297*16467b97STreehugger Robot                "a b 3");
298*16467b97STreehugger Robot        assertEquals(found, "(a (b 3))");
299*16467b97STreehugger Robot    }
300*16467b97STreehugger Robot
301*16467b97STreehugger Robot    function testDelete() {
302*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTpLexer,
303*16467b97STreehugger Robot                t051treeRewriteASTpParser,
304*16467b97STreehugger Robot                "a",
305*16467b97STreehugger Robot                t051treeRewriteASTpWalker,
306*16467b97STreehugger Robot                "a",
307*16467b97STreehugger Robot                "abc");
308*16467b97STreehugger Robot        assertEquals(found, "");
309*16467b97STreehugger Robot    }
310*16467b97STreehugger Robot
311*16467b97STreehugger Robot    function testSetMatchNoRewrite() {
312*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTqLexer,
313*16467b97STreehugger Robot                t051treeRewriteASTqParser,
314*16467b97STreehugger Robot                "a",
315*16467b97STreehugger Robot                t051treeRewriteASTqWalker,
316*16467b97STreehugger Robot                "a",
317*16467b97STreehugger Robot                "abc 34");
318*16467b97STreehugger Robot        assertEquals(found, "abc 34");
319*16467b97STreehugger Robot    }
320*16467b97STreehugger Robot
321*16467b97STreehugger Robot    function testSetMatchNoRewriteLevel2() {
322*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTrLexer,
323*16467b97STreehugger Robot                t051treeRewriteASTrParser,
324*16467b97STreehugger Robot                "a",
325*16467b97STreehugger Robot                t051treeRewriteASTrWalker,
326*16467b97STreehugger Robot                "a",
327*16467b97STreehugger Robot                "abc 34");
328*16467b97STreehugger Robot        assertEquals(found, "(abc 34)");
329*16467b97STreehugger Robot    }
330*16467b97STreehugger Robot
331*16467b97STreehugger Robot    function testSetMatchNoRewriteLevel2Root() {
332*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTsLexer,
333*16467b97STreehugger Robot                t051treeRewriteASTsParser,
334*16467b97STreehugger Robot                "a",
335*16467b97STreehugger Robot                t051treeRewriteASTsWalker,
336*16467b97STreehugger Robot                "a",
337*16467b97STreehugger Robot                "abc 34");
338*16467b97STreehugger Robot        assertEquals(found, "(abc 34)");
339*16467b97STreehugger Robot    }
340*16467b97STreehugger Robot
341*16467b97STreehugger Robot    function testRewriteModeCombinedRewriteAndAuto() {
342*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTtLexer,
343*16467b97STreehugger Robot                t051treeRewriteASTtParser,
344*16467b97STreehugger Robot                "a",
345*16467b97STreehugger Robot                t051treeRewriteASTtWalker,
346*16467b97STreehugger Robot                "a",
347*16467b97STreehugger Robot                "abc 34");
348*16467b97STreehugger Robot        assertEquals(found, "(ick 34)");
349*16467b97STreehugger Robot
350*16467b97STreehugger Robot        found = execTreeParser(t051treeRewriteASTtLexer,
351*16467b97STreehugger Robot                t051treeRewriteASTtParser,
352*16467b97STreehugger Robot                "a",
353*16467b97STreehugger Robot                t051treeRewriteASTtWalker,
354*16467b97STreehugger Robot                "a",
355*16467b97STreehugger Robot                "34");
356*16467b97STreehugger Robot        assertEquals(found, "34");
357*16467b97STreehugger Robot    }
358*16467b97STreehugger Robot
359*16467b97STreehugger Robot    function testRewriteModeFlatTree() {
360*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTuLexer,
361*16467b97STreehugger Robot                t051treeRewriteASTuParser,
362*16467b97STreehugger Robot                "a",
363*16467b97STreehugger Robot                t051treeRewriteASTuWalker,
364*16467b97STreehugger Robot                "s",
365*16467b97STreehugger Robot                "abc 34");
366*16467b97STreehugger Robot        assertEquals(found, "abc 1");
367*16467b97STreehugger Robot    }
368*16467b97STreehugger Robot
369*16467b97STreehugger Robot    function testRewriteModeChainRuleFlatTree() {
370*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTvLexer,
371*16467b97STreehugger Robot                t051treeRewriteASTvParser,
372*16467b97STreehugger Robot                "a",
373*16467b97STreehugger Robot                t051treeRewriteASTvWalker,
374*16467b97STreehugger Robot                "s",
375*16467b97STreehugger Robot                "abc 34");
376*16467b97STreehugger Robot        assertEquals(found, "34 abc");
377*16467b97STreehugger Robot    }
378*16467b97STreehugger Robot
379*16467b97STreehugger Robot    function testRewriteModeChainRuleTree() {
380*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTwLexer,
381*16467b97STreehugger Robot                t051treeRewriteASTwParser,
382*16467b97STreehugger Robot                "a",
383*16467b97STreehugger Robot                t051treeRewriteASTwWalker,
384*16467b97STreehugger Robot                "s",
385*16467b97STreehugger Robot                "abc 34");
386*16467b97STreehugger Robot        assertEquals(found, "34");
387*16467b97STreehugger Robot    }
388*16467b97STreehugger Robot
389*16467b97STreehugger Robot    function testRewriteModeChainRuleTree2() {
390*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTxLexer,
391*16467b97STreehugger Robot                t051treeRewriteASTxParser,
392*16467b97STreehugger Robot                "a",
393*16467b97STreehugger Robot                t051treeRewriteASTxWalker,
394*16467b97STreehugger Robot                "s",
395*16467b97STreehugger Robot                "abc 34");
396*16467b97STreehugger Robot        assertEquals(found, "34");
397*16467b97STreehugger Robot    }
398*16467b97STreehugger Robot
399*16467b97STreehugger Robot    function testRewriteModeChainRuleTree3() {
400*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTyLexer,
401*16467b97STreehugger Robot                t051treeRewriteASTyParser,
402*16467b97STreehugger Robot                "a",
403*16467b97STreehugger Robot                t051treeRewriteASTyWalker,
404*16467b97STreehugger Robot                "s",
405*16467b97STreehugger Robot                "boo abc 34");
406*16467b97STreehugger Robot        assertEquals(found, "boo 34");
407*16467b97STreehugger Robot    }
408*16467b97STreehugger Robot
409*16467b97STreehugger Robot    function testRewriteModeChainRuleTree4() {
410*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTzLexer,
411*16467b97STreehugger Robot                t051treeRewriteASTzParser,
412*16467b97STreehugger Robot                "a",
413*16467b97STreehugger Robot                t051treeRewriteASTzWalker,
414*16467b97STreehugger Robot                "s",
415*16467b97STreehugger Robot                "boo abc 34");
416*16467b97STreehugger Robot        assertEquals(found, "(boo 34)");
417*16467b97STreehugger Robot    }
418*16467b97STreehugger Robot
419*16467b97STreehugger Robot    function testRewriteModeChainRuleTree5() {
420*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTaaLexer,
421*16467b97STreehugger Robot                t051treeRewriteASTaaParser,
422*16467b97STreehugger Robot                "a",
423*16467b97STreehugger Robot                t051treeRewriteASTaaWalker,
424*16467b97STreehugger Robot                "s",
425*16467b97STreehugger Robot                "boo abc 34");
426*16467b97STreehugger Robot        assertEquals(found, "(boo 34)");
427*16467b97STreehugger Robot    }
428*16467b97STreehugger Robot
429*16467b97STreehugger Robot    function testRewriteModeWithPredicatedRewrites() {
430*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTabLexer,
431*16467b97STreehugger Robot                t051treeRewriteASTabParser,
432*16467b97STreehugger Robot                "a",
433*16467b97STreehugger Robot                t051treeRewriteASTabWalker,
434*16467b97STreehugger Robot                "s",
435*16467b97STreehugger Robot                "abc 34");
436*16467b97STreehugger Robot        assertEquals(found, "(root (ick 34))");
437*16467b97STreehugger Robot    }
438*16467b97STreehugger Robot
439*16467b97STreehugger Robot    function testWildcard() {
440*16467b97STreehugger Robot        var found = execTreeParser(t051treeRewriteASTacLexer,
441*16467b97STreehugger Robot                t051treeRewriteASTacParser,
442*16467b97STreehugger Robot                "a",
443*16467b97STreehugger Robot                t051treeRewriteASTacWalker,
444*16467b97STreehugger Robot                "s",
445*16467b97STreehugger Robot                "abc 34");
446*16467b97STreehugger Robot        assertEquals(found, "34");
447*16467b97STreehugger Robot    }
448*16467b97STreehugger Robot</script>
449*16467b97STreehugger Robot
450*16467b97STreehugger Robot</head>
451*16467b97STreehugger Robot<body>
452*16467b97STreehugger Robot    <h1>t051treeRewriteAST</h1>
453*16467b97STreehugger Robot</body>
454*16467b97STreehugger Robot</html>
455