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