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>t049treeparser</title>
      6 
      7 <!-- ANTLR includes -->
      8 <script type="text/javascript" src="../../lib/antlr3-all.js"></script>
      9 <script type="text/javascript" src="t049treeparseraLexer.js"></script>
     10 <script type="text/javascript" src="t049treeparseraParser.js"></script>
     11 <script type="text/javascript" src="t049treeparseraWalker.js"></script>
     12 <script type="text/javascript" src="t049treeparserbLexer.js"></script>
     13 <script type="text/javascript" src="t049treeparserbParser.js"></script>
     14 <script type="text/javascript" src="t049treeparserbWalker.js"></script>
     15 <script type="text/javascript" src="t049treeparsercLexer.js"></script>
     16 <script type="text/javascript" src="t049treeparsercParser.js"></script>
     17 <script type="text/javascript" src="t049treeparsercWalker.js"></script>
     18 <script type="text/javascript" src="t049treeparserdLexer.js"></script>
     19 <script type="text/javascript" src="t049treeparserdParser.js"></script>
     20 <script type="text/javascript" src="t049treeparserdWalker.js"></script>
     21 <script type="text/javascript" src="t049treeparsereLexer.js"></script>
     22 <script type="text/javascript" src="t049treeparsereParser.js"></script>
     23 <script type="text/javascript" src="t049treeparsereWalker.js"></script>
     24 <script type="text/javascript" src="t049treeparserfLexer.js"></script>
     25 <script type="text/javascript" src="t049treeparserfParser.js"></script>
     26 <script type="text/javascript" src="t049treeparserfWalker.js"></script>
     27 <script type="text/javascript" src="t049treeparsergLexer.js"></script>
     28 <script type="text/javascript" src="t049treeparsergParser.js"></script>
     29 <script type="text/javascript" src="t049treeparsergWalker.js"></script>
     30 <script type="text/javascript" src="t049treeparserhLexer.js"></script>
     31 <script type="text/javascript" src="t049treeparserhParser.js"></script>
     32 <script type="text/javascript" src="t049treeparserhWalker.js"></script>
     33 <script type="text/javascript" src="t049treeparseriLexer.js"></script>
     34 <script type="text/javascript" src="t049treeparseriParser.js"></script>
     35 <script type="text/javascript" src="t049treeparseriWalker.js"></script>
     36 
     37 
     38 
     39 <!-- JsUnit include -->
     40 <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>
     41 
     42 <!-- Test Code -->
     43 <script type="text/javascript">
     44     function execTreeParser(lexerCls, parserCls, grammarEntry, walkerCls, treeEntry, xinput)
     45     {
     46         var cstream = new org.antlr.runtime.ANTLRStringStream(xinput),
     47             lexer = new lexerCls(cstream),
     48             tstream = new org.antlr.runtime.CommonTokenStream(lexer),
     49             parser = new parserCls(tstream);
     50         var r = parser[grammarEntry]();
     51 
     52         var nodes = new org.antlr.runtime.tree.CommonTreeNodeStream(r.getTree());
     53         nodes.setTokenStream(tstream);
     54         var walker = new (walkerClass(walkerCls))(nodes);
     55         walker[treeEntry]();
     56 
     57         return walker._output;
     58     }
     59 
     60     function walkerClass(base) {
     61         var TWalker = function() {
     62             TWalker.superclass.constructor.apply(this, arguments);
     63             this._output = "";
     64             this.traces = [];
     65         };
     66 
     67         org.antlr.lang.extend(TWalker, base, {
     68             capture: function(t) {
     69                 this._output += t;
     70             },
     71             traceIn: function(ruleName, ruleIndex) {
     72                 this.traces.push(">"+ruleName);
     73             },
     74             traceOut: function(ruleName, ruleIndex) {
     75                 this.traces.push("<"+ruleName);
     76             },
     77             recover: function(input, re) {
     78                 throw re;
     79             }
     80         });
     81 
     82         return TWalker;
     83     }
     84 
     85     function testFlatList() {
     86         var found = execTreeParser(t049treeparseraLexer,
     87                 t049treeparseraParser,
     88                 "a",
     89                 t049treeparseraWalker,
     90                 "a",
     91                 "abc 34");
     92         assertEquals(found, "abc, 34");
     93     }
     94 
     95     function testSimpleTree() {
     96         var found = execTreeParser(t049treeparserbLexer,
     97                 t049treeparserbParser,
     98                 "a",
     99                 t049treeparserbWalker,
    100                 "a",
    101                 "abc 34");
    102         assertEquals(found, "abc, 34");
    103     }
    104 
    105     function testFlatVsTreeDecision() {
    106         var found = execTreeParser(t049treeparsercLexer,
    107                 t049treeparsercParser,
    108                 "a",
    109                 t049treeparsercWalker,
    110                 "a",
    111                 "a 1 b 2");
    112         assertEquals(found, "^(a 1)b 2\n");
    113     }
    114 
    115     function testFlatVsTreeDecision2() {
    116         var found = execTreeParser(t049treeparserdLexer,
    117                 t049treeparserdParser,
    118                 "a",
    119                 t049treeparserdWalker,
    120                 "a",
    121                 "a 1 2 3 b 4 5");
    122         assertEquals(found, "^(a 3)b 5\n");
    123     }
    124 
    125     function testCyclicDFALookahead() {
    126         var found = execTreeParser(t049treeparsereLexer,
    127                 t049treeparsereParser,
    128                 "a",
    129                 t049treeparsereWalker,
    130                 "a",
    131                 "a 1 2 3.");
    132         assertEquals(found, "alt 1");
    133     }
    134 
    135     function testNullableChildList() {
    136         var found = execTreeParser(t049treeparserfLexer,
    137                 t049treeparserfParser,
    138                 "a",
    139                 t049treeparserfWalker,
    140                 "a",
    141                 "abc");
    142         assertEquals(found, "abc");
    143     }
    144 
    145     function testNullableChildList2() {
    146         var found = execTreeParser(t049treeparsergLexer,
    147                 t049treeparsergParser,
    148                 "a",
    149                 t049treeparsergWalker,
    150                 "a",
    151                 "abc 3;");
    152         assertEquals(found, "abc");
    153     }
    154 
    155     function testNullableChildList3() {
    156         var found = execTreeParser(t049treeparserhLexer,
    157                 t049treeparserhParser,
    158                 "a",
    159                 t049treeparserhWalker,
    160                 "a",
    161                 "abc 3 def;");
    162         assertEquals(found, "abc, def");
    163     }
    164 
    165     function testActionsAfterRoot() {
    166         var found = execTreeParser(t049treeparseriLexer,
    167                 t049treeparseriParser,
    168                 "a",
    169                 t049treeparseriWalker,
    170                 "a",
    171                 "abc;");
    172         assertEquals(found, "abc, 2");
    173     }
    174 
    175 
    176 </script>
    177 
    178 </head>
    179 <body>
    180     <h1>t049treeparser</h1>
    181 </body>
    182 </html>
    183