<!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>