183 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			6.3 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>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>
 |