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