Mercurial > jsparser
diff jsparser.js @ 10:8de776b8ed31
made the demo work on the web instead of the command line.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sat, 30 May 2009 16:08:25 -0700 |
parents | bc6f30e0f948 |
children | 95b27aa47788 |
line wrap: on
line diff
--- a/jsparser.js Sat May 30 15:38:03 2009 -0700 +++ b/jsparser.js Sat May 30 16:08:25 2009 -0700 @@ -168,68 +168,3 @@ return value; }; }; - -function testParsing(print) { - var MyLexicon = [ - new Parsing.BinaryOrUnaryOp({name: 'plus', - match: '+', - leftBindingPower: 60}), - - new Parsing.BinaryOrUnaryOp({name: 'minus', - match: '-', - leftBindingPower: 60}), - - new Parsing.Symbol({name: 'left parenthesis', - match: '(', - nullDenotation: function(parser) { - var contents = parser.expression(0); - parser.advance('right parenthesis'); - return contents; - }}), - - new Parsing.Symbol({name: 'right parenthesis', - match: ')'}), - - new Parsing.BinaryOp({name: 'multiply', - match: '*', - leftBindingPower: 70}), - - new Parsing.BinaryOp({name: 'divide', - match: '/', - leftBindingPower: 70}), - - new Parsing.Symbol({name: 'number', - match: /^[0-9]+/, - nullDenotation: function() { - return this; - }, - toString: function() { - return this.value; - }}), - - new Parsing.Symbol({name: 'whitespace', - match: /^\s+/, - ignore: true}) - ]; - - var code = '5+(1-3) * 4+ \n -4'; - var tokens = Parsing.tokenize({lexicon: MyLexicon, - text: code}); - - function printTokens(tokens) { - tokens.forEach( - function(token) { - var repr = token.name; - if (token.value) - repr += ":" + token.value; - repr += " @L" + token.lineNo + ":" + token.charNo; - print(repr); - }); - } - - printTokens(tokens); - var parser = new Parsing.Parser(tokens); - print(parser.parse()); -} - -testParsing(print);