1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 3 <head> 4 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 5 <title>t056lexer</title> 6 7 <!-- ANTLR includes --> 8 <script type="text/javascript" src="../../lib/antlr3-all.js"></script> 9 <script type="text/javascript" src="t056lexer1Lexer.js"></script> 10 <script type="text/javascript" src="t056lexer1Parser.js"></script> 11 <script type="text/javascript" src="t056lexer2Lexer.js"></script> 12 <script type="text/javascript" src="t056lexer2Parser.js"></script> 13 <script type="text/javascript" src="t056lexer3Lexer.js"></script> 14 <script type="text/javascript" src="t056lexer3Parser.js"></script> 15 <script type="text/javascript" src="t056lexer4Lexer.js"></script> 16 <script type="text/javascript" src="t056lexer4Parser.js"></script> 17 <script type="text/javascript" src="t056lexer5Lexer.js"></script> 18 <script type="text/javascript" src="t056lexer5Parser.js"></script> 19 <script type="text/javascript" src="t056lexer6Lexer.js"></script> 20 <script type="text/javascript" src="t056lexer6Parser.js"></script> 21 <script type="text/javascript" src="t056lexer7Lexer.js"></script> 22 <script type="text/javascript" src="t056lexer7Parser.js"></script> 23 <script type="text/javascript" src="t056lexer8Lexer.js"></script> 24 <script type="text/javascript" src="t056lexer8Parser.js"></script> 25 <script type="text/javascript" src="t056lexer9Lexer.js"></script> 26 <script type="text/javascript" src="t056lexer9Parser.js"></script> 27 <script type="text/javascript" src="t056lexer10Lexer.js"></script> 28 <script type="text/javascript" src="t056lexer10Parser.js"></script> 29 <script type="text/javascript" src="t056lexer11Lexer.js"></script> 30 <script type="text/javascript" src="t056lexer11Parser.js"></script> 31 <script type="text/javascript" src="t056lexer12.js"></script> 32 <script type="text/javascript" src="t056lexer13.js"></script> 33 <script type="text/javascript" src="t056lexer14.js"></script> 34 <script type="text/javascript" src="t056lexer15.js"></script> 35 36 <!-- JsUnit include --> 37 <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script> 38 39 <!-- Test Code --> 40 <script type="text/javascript"> 41 function execParser(lexerCls, parserCls, grammarEntry, xinput) 42 { 43 var cstream = new org.antlr.runtime.ANTLRStringStream(xinput), 44 lexer = new lexerCls(cstream), 45 tstream = new org.antlr.runtime.CommonTokenStream(lexer), 46 parser = new parserCls(tstream), 47 output = ""; 48 lexer.xlog = function(msg){output += msg;}; 49 parser.xlog = lexer.xlog; 50 var r = parser[grammarEntry](); 51 52 return output; 53 } 54 55 function execLexer(lexerCls, xinput) { 56 var token, 57 cstream = new org.antlr.runtime.ANTLRStringStream(xinput), 58 lexer = new lexerCls(cstream); 59 do { 60 token = lexer.nextToken(); 61 } while (token.getType()!==lexer.EOF); 62 } 63 64 function testSetText() { 65 var found = execParser(t056lexer1Lexer, t056lexer1Parser, "a", "\\t"); 66 assertEquals(" ", found); 67 } 68 69 function testRefToRuleDoesNotSetTokenNorEmitAnother() { 70 // this must return A not I to the parser; calling a nonfragment rule 71 // from a nonfragment rule does not set the overall token. 72 var found = execParser(t056lexer2Lexer, t056lexer2Parser, "a", "-34"); 73 assertEquals("-34", found); 74 } 75 76 function testRefToRuleDoesNotSetChannel() { 77 // this must set channel of A to HIDDEN. $channel is local to rule 78 // like $type. 79 var found = execParser(t056lexer3Lexer, t056lexer3Parser, "a", "- 34"); 80 assertEquals("- 34, channel=0", found); 81 } 82 83 function testWeCanSetType() { 84 var found = execParser(t056lexer4Lexer, t056lexer4Parser, "a", "-34"); 85 assertEquals("-34", found); 86 } 87 88 function testRefToFragment() { 89 // this must return A not I to the parser; calling a nonfragment rule 90 // from a nonfragment rule does not set the overall token. 91 var found = execParser(t056lexer5Lexer, t056lexer5Parser, "a", "-34"); 92 assertEquals("-34", found); 93 } 94 95 function testMultipleRefToFragment() { 96 // this must return A not I to the parser; calling a nonfragment rule 97 // from a nonfragment rule does not set the overall token. 98 var found = execParser(t056lexer6Lexer, t056lexer6Parser, "a", "3.14159"); 99 assertEquals("3.14159", found); 100 } 101 102 function testLabelInSubrule() { 103 // can we see v outside? 104 var found = execParser(t056lexer7Lexer, t056lexer7Parser, "a", "hi 342"); 105 assertEquals("342", found); 106 } 107 108 function testRefToTokenInLexer() { 109 var found = execParser(t056lexer8Lexer, t056lexer8Parser, "a", "342"); 110 assertEquals("342", found); 111 } 112 113 function testListLabelInLexer() { 114 var found = execParser(t056lexer9Lexer, t056lexer9Parser, "a", "33 297"); 115 assertEquals(" 33 297", found); 116 } 117 118 function testDupListRefInLexer() { 119 var found = execParser(t056lexer10Lexer, t056lexer10Parser, "a", "33 297"); 120 assertEquals(" 33 297", found); 121 } 122 123 function testCharLabelInLexer() { 124 var found = execParser(t056lexer11Lexer, t056lexer11Parser, "a", "a"); 125 assertEquals("a", found); 126 } 127 128 function testRepeatedLabelInLexer() { 129 execLexer(t056lexer12, "ababab"); 130 } 131 132 function testRepeatedRuleLabelInLexer() { 133 execLexer(t056lexer13, "aa"); 134 } 135 136 function testIsolatedEOTEdge() { 137 execLexer(t056lexer14, "qbalogna!q"); 138 } 139 140 function testEscapedLiterals() { 141 execLexer(t056lexer15, "\\\""); 142 } 143 </script> 144 145 </head> 146 <body> 147 <h1>t056lexer</h1> 148 </body> 149 </html> 150 151