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