176 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			6.1 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>t052import</title>
 | |
| 
 | |
| <!-- ANTLR includes -->
 | |
| <script type="text/javascript" src="../../lib/antlr3-all.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS1.js"></script>
 | |
| <script type="text/javascript" src="t052importM1_t052importS1.js"></script>
 | |
| <script type="text/javascript" src="t052importM1Lexer.js"></script>
 | |
| <script type="text/javascript" src="t052importM1Parser.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS2.js"></script>
 | |
| <script type="text/javascript" src="t052importM2_t052importS2.js"></script>
 | |
| <script type="text/javascript" src="t052importM2Lexer.js"></script>
 | |
| <script type="text/javascript" src="t052importM2Parser.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS3.js"></script>
 | |
| <script type="text/javascript" src="t052importM3_t052importS3.js"></script>
 | |
| <script type="text/javascript" src="t052importM3Lexer.js"></script>
 | |
| <script type="text/javascript" src="t052importM3Parser.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS4.js"></script>
 | |
| <script type="text/javascript" src="t052importT4.js"></script>
 | |
| <script type="text/javascript" src="t052importM4_t052importS4.js"></script>
 | |
| <script type="text/javascript" src="t052importM4_t052importT4.js"></script>
 | |
| <script type="text/javascript" src="t052importM4Lexer.js"></script>
 | |
| <script type="text/javascript" src="t052importM4Parser.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS5.js"></script>
 | |
| <script type="text/javascript" src="t052importT5.js"></script>
 | |
| <script type="text/javascript" src="t052importM5_t052importS5.js"></script>
 | |
| <script type="text/javascript" src="t052importM5_t052importT5.js"></script>
 | |
| <script type="text/javascript" src="t052importM5Lexer.js"></script>
 | |
| <script type="text/javascript" src="t052importM5Parser.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS6.js"></script>
 | |
| <script type="text/javascript" src="t052importM6_t052importS6.js"></script>
 | |
| <script type="text/javascript" src="t052importM6Lexer.js"></script>
 | |
| <script type="text/javascript" src="t052importM6Parser.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS7.js"></script>
 | |
| <script type="text/javascript" src="t052importM7_t052importS7.js"></script>
 | |
| <script type="text/javascript" src="t052importM7.js"></script>
 | |
| 
 | |
| <script type="text/javascript" src="t052importS8.js"></script>
 | |
| <script type="text/javascript" src="t052importM8_t052importS8.js"></script>
 | |
| <script type="text/javascript" src="t052importM8.js"></script>
 | |
| 
 | |
| <!-- JsUnit include -->
 | |
| <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
 | |
| 
 | |
| <!-- Test Code -->
 | |
| <script type="text/javascript">
 | |
|     // Parser Tests
 | |
| 
 | |
|     function execLexer(lexerCls, xinput) {
 | |
|         var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
 | |
|             lexer = new (EnhancedParser(lexerCls))(cstream),
 | |
|             token;
 | |
| 
 | |
|         while (true) {
 | |
|             token = lexer.nextToken();
 | |
|             if (!token || token.getType()===org.antlr.runtime.Token.EOF) {
 | |
|                 break;
 | |
|             }
 | |
|             lexer.buf += token.getText();
 | |
|         }
 | |
| 
 | |
|         return lexer.buf; 
 | |
|     }
 | |
| 
 | |
|     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]();
 | |
| 
 | |
|         return parser.buf; 
 | |
|     }
 | |
| 
 | |
|     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;
 | |
|     }
 | |
| 
 | |
|     function testDelegatorInvokesDelegateRule() {
 | |
|         var found = execParser(t052importM1Lexer,
 | |
|                 t052importM1Parser,
 | |
|                 "s",
 | |
|                 "b");
 | |
|         assertEquals("S.a", found);
 | |
|     }
 | |
| 
 | |
|     function testDelegatorInvokesDelegateRuleWithArgs() {
 | |
|         var found = execParser(t052importM2Lexer,
 | |
|                 t052importM2Parser,
 | |
|                 "s",
 | |
|                 "b");
 | |
|         assertEquals("S.a1000", found);
 | |
|     }
 | |
| 
 | |
|     function testDelegatorAccessesDelegateMembers() {
 | |
|         var found = execParser(t052importM3Lexer,
 | |
|                 t052importM3Parser,
 | |
|                 "s",
 | |
|                 "b");
 | |
|         assertEquals("foo", found);
 | |
|     }
 | |
| 
 | |
|     function testDelegatorInvokesFirstVersionOfDelegateRule() {
 | |
|         var found = execParser(t052importM4Lexer,
 | |
|                 t052importM4Parser,
 | |
|                 "s",
 | |
|                 "b");
 | |
|         assertEquals("S.a", found);
 | |
|     }
 | |
| 
 | |
|     function testDelegatesSeeSameTokenType() {
 | |
|         var found = execParser(t052importM5Lexer,
 | |
|                 t052importM5Parser,
 | |
|                 "s",
 | |
|                 "aa");
 | |
|         assertEquals("S.x T.y", found);
 | |
|     }
 | |
| 
 | |
|     function testDelegatorRuleOverridesDelegate() {
 | |
|         var found = execParser(t052importM6Lexer,
 | |
|                 t052importM6Parser,
 | |
|                 "a",
 | |
|                 "c");
 | |
|         assertEquals("S.a", found);
 | |
|     }
 | |
| 
 | |
|     // Lexer Tests
 | |
| 
 | |
|     function testLexerDelegatorInvokesDelegateRule() {
 | |
|         var found = execLexer(t052importM7, "abc");
 | |
|         assertEquals("S.A abc", found);
 | |
|     }
 | |
| 
 | |
|     function testLexerDelegatorRuleOverridesDelegate() {
 | |
|         var found = execLexer(t052importM8, "a");
 | |
|         assertEquals("M.A a", found);
 | |
|     }
 | |
| </script>
 | |
| 
 | |
| </head>
 | |
| <body>
 | |
|     <h1>t052import</h1>
 | |
| </body>
 | |
| </html>
 |