# HG changeset patch # User Atul Varma # Date 1243767457 25200 # Node ID 95b27aa47788f3c21926c622f8016e9997c548bf # Parent 1b7ea033b3f682af36ed42f3b7c9777d6c21b007 parse tree now displays as html. diff -r 1b7ea033b3f6 -r 95b27aa47788 jsparser.css --- a/jsparser.css Sat May 30 16:55:51 2009 -0700 +++ b/jsparser.css Sun May 31 03:57:37 2009 -0700 @@ -23,3 +23,14 @@ .tokenization { cursor: pointer; } + +.parse-tree span { + display: block; + float: left; +} + +.expression { + margin: 0.25em; + padding: 0.25em; + border: 1px solid gray; +} diff -r 1b7ea033b3f6 -r 95b27aa47788 jsparser.html --- a/jsparser.html Sat May 30 16:55:51 2009 -0700 +++ b/jsparser.html Sun May 31 03:57:37 2009 -0700 @@ -13,7 +13,7 @@

Tokenization


 

Parse Tree

-

+
diff -r 1b7ea033b3f6 -r 95b27aa47788 jsparser.js --- a/jsparser.js Sat May 30 16:55:51 2009 -0700 +++ b/jsparser.js Sun May 31 03:57:37 2009 -0700 @@ -68,6 +68,14 @@ parser.advance(); return this; }, + toHtml: function() { + var span = $(''); + span.append( + $('').text(this.match), + $('').append(this.operand.toHtml()) + ); + return span; + }, toString: function() { return "(" + this.match + this.operand + ")"; } @@ -84,6 +92,15 @@ this.rightOperand = parser.expression(this.leftBindingPower); return this; }, + toHtml: function() { + var span = $(''); + span.append( + $('').append(this.leftOperand.toHtml()), + $('').text(this.match), + $('').append(this.rightOperand.toHtml()) + ); + return span; + }, toString: function() { return ("(" + this.leftOperand + " " + this.match + " " + this.rightOperand + ")"); diff -r 1b7ea033b3f6 -r 95b27aa47788 parser-demo.js --- a/parser-demo.js Sat May 30 16:55:51 2009 -0700 +++ b/parser-demo.js Sun May 31 03:57:37 2009 -0700 @@ -28,6 +28,9 @@ new Parsing.Symbol({name: 'number', match: /^[0-9]+/, + toHtml: function() { + return document.createTextNode(this.value); + }, nullDenotation: function() { return this; }, @@ -45,6 +48,9 @@ $('.tokenization').empty(); $('.parse-tree').empty(); + if (!code) + return; + try { var tokens = Parsing.tokenize({lexicon: MyLexicon, text: code}); @@ -83,7 +89,7 @@ throw e; } - $('.parse-tree').text(parseTree.toString()); + $('.parse-tree').append(parseTree.toHtml()); } $(window).ready(