Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: tools/lexer_generator/generator.py

Issue 141293003: Experimental parser: visualize rule trees. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: . Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/lexer_generator/nfa_builder.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/lexer_generator/generator.py
diff --git a/tools/lexer_generator/generator.py b/tools/lexer_generator/generator.py
index c1efba7318c84bd2b1a28ae590b7b05062e25bf5..8ed2fef731384f9c7e8d7a7f75f394b3b15b88ec 100644
--- a/tools/lexer_generator/generator.py
+++ b/tools/lexer_generator/generator.py
@@ -80,7 +80,18 @@ def generate_html(rule_processor, minimize_default):
if mdfa and mdfa.node_count() != dfa.node_count():
scripts.append(script_template % (mdfa_i, mdfa.to_dot()))
loads.append(load_template % ("mdfa [%s]" % name, mdfa_i))
- body = "\n".join(scripts) + (load_outer_template % "\n".join(loads))
+ body = "\n".join(scripts) + (load_outer_template % "\n".join(loads))
+ return file_template % body
+
+def generate_rule_tree_html(rule_processor):
+ scripts = []
+ loads = []
+ rule_tree_dots = rule_processor.rule_tree_dots()
+ for i, (rule, dot) in enumerate(rule_tree_dots.items()):
+ rule_i = "rule_%d" % i
+ scripts.append(script_template % (rule_i, dot))
+ loads.append(load_template % ("rules [%s]" % rule, rule_i))
+ body = "\n".join(scripts) + (load_outer_template % "\n".join(loads))
return file_template % body
def generate_code(rule_processor, minimize_default):
@@ -104,6 +115,7 @@ if __name__ == '__main__':
parser.add_argument('--no-inline', action='store_true')
parser.add_argument('--verbose', action='store_true')
parser.add_argument('--debug-code', action='store_true')
+ parser.add_argument('--rule-html')
args = parser.parse_args()
minimize_default = not args.no_minimize_default
@@ -136,6 +148,14 @@ if __name__ == '__main__':
if verbose:
print "wrote html to %s" % html_file
+ rule_html_file = args.rule_html
+ if rule_html_file:
+ html = generate_rule_tree_html(rule_processor)
+ with open(rule_html_file, 'w') as f:
+ f.write(html)
+ if verbose:
+ print "wrote html to %s" % rule_html_file
+
code_file = args.code
if code_file:
code_generator = CodeGenerator(rule_processor,
« no previous file with comments | « no previous file | tools/lexer_generator/nfa_builder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698