<!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>t049treeparser</title>
<!-- ANTLR includes -->
<script type="text/javascript" src="../../lib/antlr3-all.js"></script>
<script type="text/javascript" src="t049treeparseraLexer.js"></script>
<script type="text/javascript" src="t049treeparseraParser.js"></script>
<script type="text/javascript" src="t049treeparseraWalker.js"></script>
<script type="text/javascript" src="t049treeparserbLexer.js"></script>
<script type="text/javascript" src="t049treeparserbParser.js"></script>
<script type="text/javascript" src="t049treeparserbWalker.js"></script>
<script type="text/javascript" src="t049treeparsercLexer.js"></script>
<script type="text/javascript" src="t049treeparsercParser.js"></script>
<script type="text/javascript" src="t049treeparsercWalker.js"></script>
<script type="text/javascript" src="t049treeparserdLexer.js"></script>
<script type="text/javascript" src="t049treeparserdParser.js"></script>
<script type="text/javascript" src="t049treeparserdWalker.js"></script>
<script type="text/javascript" src="t049treeparsereLexer.js"></script>
<script type="text/javascript" src="t049treeparsereParser.js"></script>
<script type="text/javascript" src="t049treeparsereWalker.js"></script>
<script type="text/javascript" src="t049treeparserfLexer.js"></script>
<script type="text/javascript" src="t049treeparserfParser.js"></script>
<script type="text/javascript" src="t049treeparserfWalker.js"></script>
<script type="text/javascript" src="t049treeparsergLexer.js"></script>
<script type="text/javascript" src="t049treeparsergParser.js"></script>
<script type="text/javascript" src="t049treeparsergWalker.js"></script>
<script type="text/javascript" src="t049treeparserhLexer.js"></script>
<script type="text/javascript" src="t049treeparserhParser.js"></script>
<script type="text/javascript" src="t049treeparserhWalker.js"></script>
<script type="text/javascript" src="t049treeparseriLexer.js"></script>
<script type="text/javascript" src="t049treeparseriParser.js"></script>
<script type="text/javascript" src="t049treeparseriWalker.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);
walker[treeEntry]();
return walker._output;
}
function walkerClass(base) {
var TWalker = function() {
TWalker.superclass.constructor.apply(this, arguments);
this._output = "";
this.traces = [];
};
org.antlr.lang.extend(TWalker, base, {
capture: function(t) {
this._output += t;
},
traceIn: function(ruleName, ruleIndex) {
this.traces.push(">"+ruleName);
},
traceOut: function(ruleName, ruleIndex) {
this.traces.push("<"+ruleName);
},
recover: function(input, re) {
throw re;
}
});
return TWalker;
}
function testFlatList() {
var found = execTreeParser(t049treeparseraLexer,
t049treeparseraParser,
"a",
t049treeparseraWalker,
"a",
"abc 34");
assertEquals(found, "abc, 34");
}
function testSimpleTree() {
var found = execTreeParser(t049treeparserbLexer,
t049treeparserbParser,
"a",
t049treeparserbWalker,
"a",
"abc 34");
assertEquals(found, "abc, 34");
}
function testFlatVsTreeDecision() {
var found = execTreeParser(t049treeparsercLexer,
t049treeparsercParser,
"a",
t049treeparsercWalker,
"a",
"a 1 b 2");
assertEquals(found, "^(a 1)b 2\n");
}
function testFlatVsTreeDecision2() {
var found = execTreeParser(t049treeparserdLexer,
t049treeparserdParser,
"a",
t049treeparserdWalker,
"a",
"a 1 2 3 b 4 5");
assertEquals(found, "^(a 3)b 5\n");
}
function testCyclicDFALookahead() {
var found = execTreeParser(t049treeparsereLexer,
t049treeparsereParser,
"a",
t049treeparsereWalker,
"a",
"a 1 2 3.");
assertEquals(found, "alt 1");
}
function testNullableChildList() {
var found = execTreeParser(t049treeparserfLexer,
t049treeparserfParser,
"a",
t049treeparserfWalker,
"a",
"abc");
assertEquals(found, "abc");
}
function testNullableChildList2() {
var found = execTreeParser(t049treeparsergLexer,
t049treeparsergParser,
"a",
t049treeparsergWalker,
"a",
"abc 3;");
assertEquals(found, "abc");
}
function testNullableChildList3() {
var found = execTreeParser(t049treeparserhLexer,
t049treeparserhParser,
"a",
t049treeparserhWalker,
"a",
"abc 3 def;");
assertEquals(found, "abc, def");
}
function testActionsAfterRoot() {
var found = execTreeParser(t049treeparseriLexer,
t049treeparseriParser,
"a",
t049treeparseriWalker,
"a",
"abc;");
assertEquals(found, "abc, 2");
}
</script>
</head>
<body>
<h1>t049treeparser</h1>
</body>
</html>