Mercurial > jsparser
comparison parser-demo.js @ 11:49145e1db3e5
added an interactive tokenization display.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sat, 30 May 2009 16:38:20 -0700 |
parents | 8de776b8ed31 |
children | 1b7ea033b3f6 |
comparison
equal
deleted
inserted
replaced
10:8de776b8ed31 | 11:49145e1db3e5 |
---|---|
40 ignore: true}) | 40 ignore: true}) |
41 ]; | 41 ]; |
42 | 42 |
43 $(window).ready( | 43 $(window).ready( |
44 function() { | 44 function() { |
45 function print(text) { | |
46 var node = document.createTextNode(text.toString() + '\n'); | |
47 $('.output').append(node); | |
48 } | |
49 | |
50 var code = $('.input').text(); | 45 var code = $('.input').text(); |
51 var tokens = Parsing.tokenize({lexicon: MyLexicon, | 46 var tokens = Parsing.tokenize({lexicon: MyLexicon, |
52 text: code}); | 47 text: code}); |
53 | 48 |
54 function printTokens(tokens) { | 49 jQuery.each( |
55 tokens.forEach( | 50 tokens, |
56 function(token) { | 51 function() { |
57 var repr = token.name; | 52 var token = this; |
58 if (token.value) | 53 var node = $('<span class="token"></span>'); |
59 repr += ":" + token.value; | 54 node.text(token.value); |
60 repr += " @L" + token.lineNo + ":" + token.charNo; | 55 node.hover( |
61 print(repr); | 56 function onIn() { |
62 }); | 57 var overlay = $('<div class="overlay"></div>'); |
63 } | 58 overlay.text(token.name); |
59 overlay.css({left: $(this).position().left}); | |
60 $(this).append(overlay); | |
61 $(this).addClass("highlight"); | |
62 }, | |
63 function onOut() { | |
64 $(".overlay", this).remove(); | |
65 $(this).removeClass("highlight"); | |
66 }); | |
67 $('.tokenization').append(node); | |
68 }); | |
64 | 69 |
65 printTokens(tokens); | |
66 var parser = new Parsing.Parser(tokens); | 70 var parser = new Parsing.Parser(tokens); |
67 print(parser.parse()); | 71 $('.parse-tree').text(parser.parse().toString()); |
68 }); | 72 }); |