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 });