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>t052import</title>
      6 
      7 <!-- ANTLR includes -->
      8 <script type="text/javascript" src="../../lib/antlr3-all.js"></script>
      9 
     10 <script type="text/javascript" src="t052importS1.js"></script>
     11 <script type="text/javascript" src="t052importM1_t052importS1.js"></script>
     12 <script type="text/javascript" src="t052importM1Lexer.js"></script>
     13 <script type="text/javascript" src="t052importM1Parser.js"></script>
     14 
     15 <script type="text/javascript" src="t052importS2.js"></script>
     16 <script type="text/javascript" src="t052importM2_t052importS2.js"></script>
     17 <script type="text/javascript" src="t052importM2Lexer.js"></script>
     18 <script type="text/javascript" src="t052importM2Parser.js"></script>
     19 
     20 <script type="text/javascript" src="t052importS3.js"></script>
     21 <script type="text/javascript" src="t052importM3_t052importS3.js"></script>
     22 <script type="text/javascript" src="t052importM3Lexer.js"></script>
     23 <script type="text/javascript" src="t052importM3Parser.js"></script>
     24 
     25 <script type="text/javascript" src="t052importS4.js"></script>
     26 <script type="text/javascript" src="t052importT4.js"></script>
     27 <script type="text/javascript" src="t052importM4_t052importS4.js"></script>
     28 <script type="text/javascript" src="t052importM4_t052importT4.js"></script>
     29 <script type="text/javascript" src="t052importM4Lexer.js"></script>
     30 <script type="text/javascript" src="t052importM4Parser.js"></script>
     31 
     32 <script type="text/javascript" src="t052importS5.js"></script>
     33 <script type="text/javascript" src="t052importT5.js"></script>
     34 <script type="text/javascript" src="t052importM5_t052importS5.js"></script>
     35 <script type="text/javascript" src="t052importM5_t052importT5.js"></script>
     36 <script type="text/javascript" src="t052importM5Lexer.js"></script>
     37 <script type="text/javascript" src="t052importM5Parser.js"></script>
     38 
     39 <script type="text/javascript" src="t052importS6.js"></script>
     40 <script type="text/javascript" src="t052importM6_t052importS6.js"></script>
     41 <script type="text/javascript" src="t052importM6Lexer.js"></script>
     42 <script type="text/javascript" src="t052importM6Parser.js"></script>
     43 
     44 <script type="text/javascript" src="t052importS7.js"></script>
     45 <script type="text/javascript" src="t052importM7_t052importS7.js"></script>
     46 <script type="text/javascript" src="t052importM7.js"></script>
     47 
     48 <script type="text/javascript" src="t052importS8.js"></script>
     49 <script type="text/javascript" src="t052importM8_t052importS8.js"></script>
     50 <script type="text/javascript" src="t052importM8.js"></script>
     51 
     52 <!-- JsUnit include -->
     53 <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
     54 
     55 <!-- Test Code -->
     56 <script type="text/javascript">
     57     // Parser Tests
     58 
     59     function execLexer(lexerCls, xinput) {
     60         var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
     61             lexer = new (EnhancedParser(lexerCls))(cstream),
     62             token;
     63 
     64         while (true) {
     65             token = lexer.nextToken();
     66             if (!token || token.getType()===org.antlr.runtime.Token.EOF) {
     67                 break;
     68             }
     69             lexer.buf += token.getText();
     70         }
     71 
     72         return lexer.buf; 
     73     }
     74 
     75     function execParser(lexerCls, parserCls, grammarEntry, xinput) {
     76         var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
     77             lexer = new (EnhancedParser(lexerCls))(cstream),
     78             tstream = new org.antlr.runtime.CommonTokenStream(lexer),
     79             parser = new (EnhancedParser(parserCls))(tstream);
     80         var r = parser[grammarEntry]();
     81 
     82         return parser.buf; 
     83     }
     84 
     85     function EnhancedParser(base) {
     86         var T = function() {
     87             T.superclass.constructor.apply(this, arguments);
     88             this.traces = [];
     89             this.buf = "";
     90         };
     91 
     92         org.antlr.lang.extend(T, base, {
     93             capture: function(t) {
     94                 this.buf += t;
     95             },
     96             traceIn: function(ruleName, ruleIndex) {
     97                 this.traces.push(">"+ruleName);
     98             },
     99             traceOut: function(ruleName, ruleIndex) {
    100                 this.traces.push("<"+ruleName);
    101             },
    102             reportError: function(input, re) {
    103                 throw re;
    104             }
    105         });
    106 
    107         return T;
    108     }
    109 
    110     function testDelegatorInvokesDelegateRule() {
    111         var found = execParser(t052importM1Lexer,
    112                 t052importM1Parser,
    113                 "s",
    114                 "b");
    115         assertEquals("S.a", found);
    116     }
    117 
    118     function testDelegatorInvokesDelegateRuleWithArgs() {
    119         var found = execParser(t052importM2Lexer,
    120                 t052importM2Parser,
    121                 "s",
    122                 "b");
    123         assertEquals("S.a1000", found);
    124     }
    125 
    126     function testDelegatorAccessesDelegateMembers() {
    127         var found = execParser(t052importM3Lexer,
    128                 t052importM3Parser,
    129                 "s",
    130                 "b");
    131         assertEquals("foo", found);
    132     }
    133 
    134     function testDelegatorInvokesFirstVersionOfDelegateRule() {
    135         var found = execParser(t052importM4Lexer,
    136                 t052importM4Parser,
    137                 "s",
    138                 "b");
    139         assertEquals("S.a", found);
    140     }
    141 
    142     function testDelegatesSeeSameTokenType() {
    143         var found = execParser(t052importM5Lexer,
    144                 t052importM5Parser,
    145                 "s",
    146                 "aa");
    147         assertEquals("S.x T.y", found);
    148     }
    149 
    150     function testDelegatorRuleOverridesDelegate() {
    151         var found = execParser(t052importM6Lexer,
    152                 t052importM6Parser,
    153                 "a",
    154                 "c");
    155         assertEquals("S.a", found);
    156     }
    157 
    158     // Lexer Tests
    159 
    160     function testLexerDelegatorInvokesDelegateRule() {
    161         var found = execLexer(t052importM7, "abc");
    162         assertEquals("S.A abc", found);
    163     }
    164 
    165     function testLexerDelegatorRuleOverridesDelegate() {
    166         var found = execLexer(t052importM8, "a");
    167         assertEquals("M.A a", found);
    168     }
    169 </script>
    170 
    171 </head>
    172 <body>
    173     <h1>t052import</h1>
    174 </body>
    175 </html>
    176