Home | History | Annotate | Download | only in functional
      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