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

Unified Diff: Source/bindings/scripts/dump_ir.py

Issue 15801003: IDL parser rewrite in Python (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: [WIP] Full parser Created 7 years, 6 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
Index: Source/bindings/scripts/dump_ir.py
diff --git a/Source/core/scripts/make_internal_runtime_flags.py b/Source/bindings/scripts/dump_ir.py
similarity index 50%
copy from Source/core/scripts/make_internal_runtime_flags.py
copy to Source/bindings/scripts/dump_ir.py
index 522e00f596228c1d322600fc4e5d1036962e66bc..83b73ffd891800cf015ec04c2177d1c83a475a90 100755
--- a/Source/core/scripts/make_internal_runtime_flags.py
+++ b/Source/bindings/scripts/dump_ir.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
# Copyright (C) 2013 Google Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,38 +27,52 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""Dump Blink IR to JSON and pickle
+
+This is for testing IDL parser, and generating parsed files so
+code generator can be developed before parser lands.
+"""
+
+import optparse
import os.path
+# import pickle
import sys
-import in_generator
-import make_runtime_features
-import template_expander
+from blink_idl_lexer import BlinkIDLLexer
+from blink_idl_parser import BlinkIDLParser
+import ast_to_ir
+import ir
+# Base parser is in Chromium src/tools/idl_parser
+module_path, module_name = os.path.split(__file__)
+tools_dir = os.path.join(module_path, os.pardir, os.pardir, os.pardir, os.pardir, os.pardir, 'tools')
+sys.path.append(tools_dir)
-# We want exactly the same parsing as RuntimeFeatureWriter
-# but generate different files.
-class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter):
- class_name = "InternalRuntimeFlags"
+from idl_parser.idl_parser import ParseFile
- def __init__(self, in_file_path, enabled_conditions):
- super(InternalRuntimeFlagsWriter, self).__init__(in_file_path, enabled_conditions)
- self._outputs = {(self.class_name + ".idl"): self.generate_idl,
- (self.class_name + ".h"): self.generate_header,
- }
- @template_expander.use_jinja(class_name + ".idl.tmpl")
- def generate_idl(self):
- return {
- 'features': self._features,
- }
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option('--debug', action='store_true')
+ options, args = parser.parse_args()
+ idl_filename = args[0]
+ idl_basename = os.path.basename(idl_filename)
+ interface_name, _ = os.path.splitext(idl_basename)
+ json_filename = 'JSON/%s.json' % interface_name
+ # pickle_filename = 'PKL/%s.pkl' % interface_name
- @template_expander.use_jinja(class_name + ".h.tmpl")
- def generate_header(self):
- return {
- 'features': self._features,
- 'feature_sets': self._feature_sets(),
- }
+ if idl_basename == 'InspectorInstrumentation.idl':
+ # Non-conformant pseudo-IDL file
+ return
+ parser = BlinkIDLParser(BlinkIDLLexer(), debug=options.debug)
+ filenode = ParseFile(parser, idl_filename)
+ blink_ir = ast_to_ir.web_idl_ast_to_blink_ir(filenode)
+ json_string = ir.ir_to_json(blink_ir, debug=options.debug)
+ with open(json_filename, 'w') as json_file:
+ json_file.write(json_string)
+ # with open(pickle_filename, 'wb') as pickle_file:
+ # pickle.dump(blink_ir, pickle_file)
-if __name__ == "__main__":
- in_generator.Maker(InternalRuntimeFlagsWriter).main(sys.argv)
+if __name__ == '__main__':
+ sys.exit(main())

Powered by Google App Engine
This is Rietveld 408576698