<!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>t053hetero</title>
<!-- ANTLR includes -->
<script type="text/javascript" src="../../lib/antlr3-all.js"></script>
<script type="text/javascript" src="t053heteroT1Lexer.js"></script>
<script type="text/javascript" src="t053heteroT1Parser.js"></script>
<script type="text/javascript" src="t053heteroT2Lexer.js"></script>
<script type="text/javascript" src="t053heteroT2Parser.js"></script>
<script type="text/javascript" src="t053heteroT3Lexer.js"></script>
<script type="text/javascript" src="t053heteroT3Parser.js"></script>
<script type="text/javascript" src="t053heteroT4Lexer.js"></script>
<script type="text/javascript" src="t053heteroT4Parser.js"></script>
<script type="text/javascript" src="t053heteroT5Lexer.js"></script>
<script type="text/javascript" src="t053heteroT5Parser.js"></script>
<script type="text/javascript" src="t053heteroT6Lexer.js"></script>
<script type="text/javascript" src="t053heteroT6Parser.js"></script>
<script type="text/javascript" src="t053heteroT7Lexer.js"></script>
<script type="text/javascript" src="t053heteroT7Parser.js"></script>
<script type="text/javascript" src="t053heteroT8Lexer.js"></script>
<script type="text/javascript" src="t053heteroT8Parser.js"></script>
<script type="text/javascript" src="t053heteroT9Lexer.js"></script>
<script type="text/javascript" src="t053heteroT9Parser.js"></script>
<script type="text/javascript" src="t053heteroT10Lexer.js"></script>
<script type="text/javascript" src="t053heteroT10Parser.js"></script>
<script type="text/javascript" src="t053heteroT11Lexer.js"></script>
<script type="text/javascript" src="t053heteroT11Parser.js"></script>
<script type="text/javascript" src="t053heteroT12Lexer.js"></script>
<script type="text/javascript" src="t053heteroT12Parser.js"></script>
<script type="text/javascript" src="t053heteroT13Lexer.js"></script>
<script type="text/javascript" src="t053heteroT13Parser.js"></script>
<script type="text/javascript" src="t053heteroTP13Parser.js"></script>
<script type="text/javascript" src="t053heteroT14Lexer.js"></script>
<script type="text/javascript" src="t053heteroT14Parser.js"></script>
<script type="text/javascript" src="t053heteroTP14Parser.js"></script>
<script type="text/javascript" src="t053heteroT15Lexer.js"></script>
<script type="text/javascript" src="t053heteroT15Parser.js"></script>
<script type="text/javascript" src="t053heteroTP15Parser.js"></script>
<script type="text/javascript" src="t053heteroT16Lexer.js"></script>
<script type="text/javascript" src="t053heteroT16Parser.js"></script>
<script type="text/javascript" src="t053heteroTP16Parser.js"></script>
<script type="text/javascript" src="t053heteroT17Lexer.js"></script>
<script type="text/javascript" src="t053heteroT17Parser.js"></script>
<script type="text/javascript" src="t053heteroTP17Parser.js"></script>
<script type="text/javascript" src="t053heteroT18Lexer.js"></script>
<script type="text/javascript" src="t053heteroT18Parser.js"></script>
<script type="text/javascript" src="t053heteroTP18Parser.js"></script>
<script type="text/javascript" src="t053heteroT18Lexer.js"></script>
<script type="text/javascript" src="t053heteroT18Parser.js"></script>
<script type="text/javascript" src="t053heteroTP18Parser.js"></script>
<script type="text/javascript" src="t053heteroTLexer.js"></script>
<script type="text/javascript" src="t053heteroTParser.js"></script>
<script type="text/javascript" src="t053heteroTPParser.js"></script>
<!-- JsUnit include -->
<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
<!-- Test Code -->
<script type="text/javascript">
// Parser Tests
function execParser(lexerCls, parserCls, grammarEntry, xinput) {
var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
lexer = new (EnhancedParser(lexerCls))(cstream),
tstream = new org.antlr.runtime.CommonTokenStream(lexer),
parser = new (EnhancedParser(parserCls))(tstream);
var r = parser[grammarEntry]();
if (r) {
return r.getTree().toStringTree();
}
return "";
}
function execTreeParser(lexerCls, parserCls, grammarEntry, walkerCls, treeEntry, xinput)
{
var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
lexer = new (EnhancedParser(lexerCls))(cstream),
tstream = new org.antlr.runtime.CommonTokenStream(lexer),
parser = new (EnhancedParser(parserCls))(tstream);
var r = parser[grammarEntry]();
var nodes = new org.antlr.runtime.tree.CommonTreeNodeStream(r.getTree());
nodes.setTokenStream(tstream);
var walker = new walkerCls(nodes);
r = walker[treeEntry]();
if (r) {
return r.getTree().toStringTree();
}
return "";
}
function EnhancedParser(base) {
var T = function() {
T.superclass.constructor.apply(this, arguments);
this.traces = [];
this.buf = "";
};
org.antlr.lang.extend(T, base, {
capture: function(t) {
this.buf += t;
},
traceIn: function(ruleName, ruleIndex) {
this.traces.push(">"+ruleName);
},
traceOut: function(ruleName, ruleIndex) {
this.traces.push("<"+ruleName);
},
reportError: function(input, re) {
throw re;
}
});
return T;
}
// PARSERS -- AUTO AST
function testToken() {
var found = execParser(
t053heteroT1Lexer,
t053heteroT1Parser,
"a",
"a");
assertEquals("a<V>", found);
}
function testTokenWithLabel() {
var found = execParser(
t053heteroT2Lexer,
t053heteroT2Parser,
"a",
"a");
assertEquals("a<V>", found);
}
function testTokenWithListLabel() {
var found = execParser(
t053heteroT3Lexer,
t053heteroT3Parser,
"a",
"a");
assertEquals("a<V>", found);
}
function testTokenRoot() {
var found = execParser(
t053heteroT4Lexer,
t053heteroT4Parser,
"a",
"a");
assertEquals("a<V>", found);
}
function testTokenRootWithListLabel() {
var found = execParser(
t053heteroT5Lexer,
t053heteroT5Parser,
"a",
"a");
assertEquals("a<V>", found);
}
function testString() {
var found = execParser(
t053heteroT6Lexer,
t053heteroT6Parser,
"a",
"begin");
assertEquals("begin<V>", found);
}
function testStringRoot() {
var found = execParser(
t053heteroT7Lexer,
t053heteroT7Parser,
"a",
"begin");
assertEquals("begin<V>", found);
}
// PARSERS -- REWRITE AST
function testRewriteToken() {
var found = execParser(
t053heteroT8Lexer,
t053heteroT8Parser,
"a",
"a");
assertEquals("a<V>", found);
}
function testrewritetokenwithargs() {
var found = execParser(
t053heteroT9Lexer,
t053heteroT9Parser,
"a",
"a");
assertEquals("<V>;421930 a<V>;9900", found);
}
function testRewriteTokenRoot() {
var found = execParser(
t053heteroT10Lexer,
t053heteroT10Parser,
"a",
"a 2");
assertEquals("(a<V> 2)", found);
}
function testRewriteString() {
var found = execParser(
t053heteroT11Lexer,
t053heteroT11Parser,
"a",
"begin");
assertEquals("begin<V>", found);
}
function testRewriteStringRoot() {
var found = execParser(
t053heteroT12Lexer,
t053heteroT12Parser,
"a",
"begin 2");
assertEquals("(begin<V> 2)", found);
}
// TREE PARSERS -- REWRITE AST
function testTreeParserRewriteFlatList() {
var found = execTreeParser(
t053heteroT13Lexer,
t053heteroT13Parser,
"a",
t053heteroTP13Parser,
"a",
"abc 34");
assertEquals("34<V> abc<W>", found);
}
function testTreeParserRewriteTree() {
var found = execTreeParser(
t053heteroT14Lexer,
t053heteroT14Parser,
"a",
t053heteroTP14Parser,
"a",
"abc 34");
assertEquals("(34<V> abc<W>)", found);
}
function testTreeParserRewriteImaginary() {
var found = execTreeParser(
t053heteroT15Lexer,
t053heteroT15Parser,
"a",
t053heteroTP15Parser,
"a",
"abc");
assertEquals("ROOT<V> abc", found);
}
function testTreeParserRewriteImaginaryWithArgs() {
var found = execTreeParser(
t053heteroT16Lexer,
t053heteroT16Parser,
"a",
t053heteroTP16Parser,
"a",
"abc");
assertEquals("ROOT<V>;42 abc", found);
}
function testTreeParserRewriteImaginaryRoot() {
var found = execTreeParser(
t053heteroT17Lexer,
t053heteroT17Parser,
"a",
t053heteroTP17Parser,
"a",
"abc");
assertEquals("(ROOT<V> abc)", found);
}
function testTreeParserRewriteImaginaryFromReal() {
var found = execTreeParser(
t053heteroT18Lexer,
t053heteroT18Parser,
"a",
t053heteroTP18Parser,
"a",
"abc");
assertEquals("ROOT<V>@1", found);
}
function testTreeParserAutoHeteroAST() {
var found = execTreeParser(
t053heteroTLexer,
t053heteroTParser,
"a",
t053heteroTPParser,
"a",
"abc;");
assertEquals("abc<V> ;<V>", found);
}
</script>
</head>
<body>
<h1>t053hetero</h1>
</body>
</html>