455 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			455 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 | |
| <head>
 | |
| <meta http-equiv="content-type" content="text/html;charset=utf-8" />
 | |
| <title>t051treeRewriteAST</title>
 | |
| 
 | |
| <!-- ANTLR includes -->
 | |
| <script type="text/javascript" src="../../lib/antlr3-all.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTaLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTaParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTaWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTbLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTbParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTbWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTcLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTcParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTcWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTdLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTdParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTdWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTeLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTeParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTeWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTfLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTfParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTfWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTgLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTgParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTgWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASThLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASThParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASThWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTiLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTiParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTiWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTjLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTjParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTjWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTkLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTkParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTkWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTlLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTlParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTlWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTmLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTmParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTmWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTnLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTnParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTnWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASToLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASToParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASToWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTpLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTpParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTpWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTqLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTqParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTqWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTrLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTrParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTrWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTsLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTsParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTsWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTtLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTtParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTtWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTuLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTuParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTuWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTvLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTvParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTvWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTwLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTwParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTwWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTxLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTxParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTxWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTyLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTyParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTyWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTzLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTzParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTzWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTaaLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTaaParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTaaWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTabLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTabParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTabWalker.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTacLexer.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTacParser.js"></script>
 | |
| <script type="text/javascript" src="t051treeRewriteASTacWalker.js"></script>
 | |
| 
 | |
| <!-- JsUnit include -->
 | |
| <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
 | |
| 
 | |
| <!-- Test Code -->
 | |
| <script type="text/javascript">
 | |
|     function execTreeParser(lexerCls, parserCls, grammarEntry, walkerCls, treeEntry, xinput)
 | |
|     {
 | |
|         var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
 | |
|             lexer = new lexerCls(cstream),
 | |
|             tstream = new org.antlr.runtime.CommonTokenStream(lexer),
 | |
|             parser = new parserCls(tstream);
 | |
|         var r = parser[grammarEntry]();
 | |
| 
 | |
|         var nodes = new org.antlr.runtime.tree.CommonTreeNodeStream(r.getTree());
 | |
|         nodes.setTokenStream(tstream);
 | |
|         var walker = new (walkerClass(walkerCls))(nodes);
 | |
|         var w = walker[treeEntry]();
 | |
| 
 | |
|         if (w.tree) {
 | |
|             return w.tree.toStringTree();
 | |
|         }
 | |
|         return "";
 | |
|     }
 | |
| 
 | |
|     function walkerClass(base) {
 | |
|         var TWalker = function() {
 | |
|             TWalker.superclass.constructor.apply(this, arguments);
 | |
|             this.traces = [];
 | |
|             this.buf = "";
 | |
|         };
 | |
| 
 | |
|         org.antlr.lang.extend(TWalker, base, {
 | |
|             traceIn: function(ruleName, ruleIndex) {
 | |
|                 this.traces.push(">"+ruleName);
 | |
|             },
 | |
|             traceOut: function(ruleName, ruleIndex) {
 | |
|                 this.traces.push("<"+ruleName);
 | |
|             },
 | |
|             reportError: function(input, re) {
 | |
|                 throw re;
 | |
|             }
 | |
|         });
 | |
| 
 | |
|         return TWalker;
 | |
|     }
 | |
| 
 | |
|     function testFlatList() {
 | |
|         var found = execTreeParser(t051treeRewriteASTaLexer,
 | |
|                 t051treeRewriteASTaParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTaWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "34 abc");
 | |
|     }
 | |
| 
 | |
|     function testSimpleTree() {
 | |
|         var found = execTreeParser(t051treeRewriteASTbLexer,
 | |
|                 t051treeRewriteASTbParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTbWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "(34 abc)");
 | |
|     }
 | |
| 
 | |
|     function testCombinedRewriteAndAuto() {
 | |
|         var found = execTreeParser(t051treeRewriteASTcLexer,
 | |
|                 t051treeRewriteASTcParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTcWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "(34 abc)");
 | |
| 
 | |
|         found = execTreeParser(t051treeRewriteASTcLexer,
 | |
|                 t051treeRewriteASTcParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTcWalker,
 | |
|                 "a",
 | |
|                 "34");
 | |
|         assertEquals(found, "34");
 | |
|     }
 | |
| 
 | |
|     function testAvoidDup() {
 | |
|         var found = execTreeParser(t051treeRewriteASTdLexer,
 | |
|                 t051treeRewriteASTdParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTdWalker,
 | |
|                 "a",
 | |
|                 "abc");
 | |
|         assertEquals(found, "(abc abc)");
 | |
|     }
 | |
| 
 | |
|     function testLoop() {
 | |
|         var found = execTreeParser(t051treeRewriteASTeLexer,
 | |
|                 t051treeRewriteASTeParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTeWalker,
 | |
|                 "a",
 | |
|                 "a b c 3 4 5");
 | |
|         assertEquals(found, "3 4 5 a b c");
 | |
|     }
 | |
| 
 | |
|     function testAutoDup() {
 | |
|         var found = execTreeParser(t051treeRewriteASTfLexer,
 | |
|                 t051treeRewriteASTfParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTfWalker,
 | |
|                 "a",
 | |
|                 "abc");
 | |
|         assertEquals(found, "abc");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupRule() {
 | |
|         var found = execTreeParser(t051treeRewriteASTgLexer,
 | |
|                 t051treeRewriteASTgParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTgWalker,
 | |
|                 "a",
 | |
|                 "a 1");
 | |
|         assertEquals(found, "a 1");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupMultiple() {
 | |
|         var found = execTreeParser(t051treeRewriteASThLexer,
 | |
|                 t051treeRewriteASThParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASThWalker,
 | |
|                 "a",
 | |
|                 "a b 3");
 | |
|         assertEquals(found, "a b 3");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupTree() {
 | |
|         var found = execTreeParser(t051treeRewriteASTiLexer,
 | |
|                 t051treeRewriteASTiParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTiWalker,
 | |
|                 "a",
 | |
|                 "a 3");
 | |
|         assertEquals(found, "(a 3)");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupTreeWithLabels() {
 | |
|         var found = execTreeParser(t051treeRewriteASTjLexer,
 | |
|                 t051treeRewriteASTjParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTjWalker,
 | |
|                 "a",
 | |
|                 "a 3");
 | |
|         assertEquals(found, "(a 3)");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupTreeWithListLabels() {
 | |
|         var found = execTreeParser(t051treeRewriteASTkLexer,
 | |
|                 t051treeRewriteASTkParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTkWalker,
 | |
|                 "a",
 | |
|                 "a 3");
 | |
|         assertEquals(found, "(a 3)");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupTreeWithRuleRoot() {
 | |
|         var found = execTreeParser(t051treeRewriteASTlLexer,
 | |
|                 t051treeRewriteASTlParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTlWalker,
 | |
|                 "a",
 | |
|                 "a 3");
 | |
|         assertEquals(found, "(a 3)");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupTreeWithRuleRootAndLabels() {
 | |
|         var found = execTreeParser(t051treeRewriteASTmLexer,
 | |
|                 t051treeRewriteASTmParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTmWalker,
 | |
|                 "a",
 | |
|                 "a 3");
 | |
|         assertEquals(found, "(a 3)");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupTreeWithRuleRootAndListLabels() {
 | |
|         var found = execTreeParser(t051treeRewriteASTnLexer,
 | |
|                 t051treeRewriteASTnParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTnWalker,
 | |
|                 "a",
 | |
|                 "a 3");
 | |
|         assertEquals(found, "(a 3)");
 | |
|     }
 | |
| 
 | |
|     function testAutoDupNestedTree() {
 | |
|         var found = execTreeParser(t051treeRewriteASToLexer,
 | |
|                 t051treeRewriteASToParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASToWalker,
 | |
|                 "a",
 | |
|                 "a b 3");
 | |
|         assertEquals(found, "(a (b 3))");
 | |
|     }
 | |
| 
 | |
|     function testDelete() {
 | |
|         var found = execTreeParser(t051treeRewriteASTpLexer,
 | |
|                 t051treeRewriteASTpParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTpWalker,
 | |
|                 "a",
 | |
|                 "abc");
 | |
|         assertEquals(found, "");
 | |
|     }
 | |
| 
 | |
|     function testSetMatchNoRewrite() {
 | |
|         var found = execTreeParser(t051treeRewriteASTqLexer,
 | |
|                 t051treeRewriteASTqParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTqWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "abc 34");
 | |
|     }
 | |
| 
 | |
|     function testSetMatchNoRewriteLevel2() {
 | |
|         var found = execTreeParser(t051treeRewriteASTrLexer,
 | |
|                 t051treeRewriteASTrParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTrWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "(abc 34)");
 | |
|     }
 | |
| 
 | |
|     function testSetMatchNoRewriteLevel2Root() {
 | |
|         var found = execTreeParser(t051treeRewriteASTsLexer,
 | |
|                 t051treeRewriteASTsParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTsWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "(abc 34)");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeCombinedRewriteAndAuto() {
 | |
|         var found = execTreeParser(t051treeRewriteASTtLexer,
 | |
|                 t051treeRewriteASTtParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTtWalker,
 | |
|                 "a",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "(ick 34)");
 | |
| 
 | |
|         found = execTreeParser(t051treeRewriteASTtLexer,
 | |
|                 t051treeRewriteASTtParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTtWalker,
 | |
|                 "a",
 | |
|                 "34");
 | |
|         assertEquals(found, "34");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeFlatTree() {
 | |
|         var found = execTreeParser(t051treeRewriteASTuLexer,
 | |
|                 t051treeRewriteASTuParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTuWalker,
 | |
|                 "s",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "abc 1");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeChainRuleFlatTree() {
 | |
|         var found = execTreeParser(t051treeRewriteASTvLexer,
 | |
|                 t051treeRewriteASTvParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTvWalker,
 | |
|                 "s",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "34 abc");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeChainRuleTree() {
 | |
|         var found = execTreeParser(t051treeRewriteASTwLexer,
 | |
|                 t051treeRewriteASTwParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTwWalker,
 | |
|                 "s",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "34");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeChainRuleTree2() {
 | |
|         var found = execTreeParser(t051treeRewriteASTxLexer,
 | |
|                 t051treeRewriteASTxParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTxWalker,
 | |
|                 "s",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "34");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeChainRuleTree3() {
 | |
|         var found = execTreeParser(t051treeRewriteASTyLexer,
 | |
|                 t051treeRewriteASTyParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTyWalker,
 | |
|                 "s",
 | |
|                 "boo abc 34");
 | |
|         assertEquals(found, "boo 34");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeChainRuleTree4() {
 | |
|         var found = execTreeParser(t051treeRewriteASTzLexer,
 | |
|                 t051treeRewriteASTzParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTzWalker,
 | |
|                 "s",
 | |
|                 "boo abc 34");
 | |
|         assertEquals(found, "(boo 34)");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeChainRuleTree5() {
 | |
|         var found = execTreeParser(t051treeRewriteASTaaLexer,
 | |
|                 t051treeRewriteASTaaParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTaaWalker,
 | |
|                 "s",
 | |
|                 "boo abc 34");
 | |
|         assertEquals(found, "(boo 34)");
 | |
|     }
 | |
| 
 | |
|     function testRewriteModeWithPredicatedRewrites() {
 | |
|         var found = execTreeParser(t051treeRewriteASTabLexer,
 | |
|                 t051treeRewriteASTabParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTabWalker,
 | |
|                 "s",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "(root (ick 34))");
 | |
|     }
 | |
| 
 | |
|     function testWildcard() {
 | |
|         var found = execTreeParser(t051treeRewriteASTacLexer,
 | |
|                 t051treeRewriteASTacParser,
 | |
|                 "a",
 | |
|                 t051treeRewriteASTacWalker,
 | |
|                 "s",
 | |
|                 "abc 34");
 | |
|         assertEquals(found, "34");
 | |
|     }
 | |
| </script>
 | |
| 
 | |
| </head>
 | |
| <body>
 | |
|     <h1>t051treeRewriteAST</h1>
 | |
| </body>
 | |
| </html>
 |