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/idl_reader.py

Issue 15801003: IDL parser rewrite in Python (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Ready for review! (cleaner) Created 7 years, 5 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/idl_reader.py
diff --git a/Source/bindings/scripts/idl_reader.py b/Source/bindings/scripts/idl_reader.py
index 3118d380cc5726e50b514085440e65c82c60a260..14a24384a8be48261024b17071d8bcc2f4793bd2 100644
--- a/Source/bindings/scripts/idl_reader.py
+++ b/Source/bindings/scripts/idl_reader.py
@@ -26,48 +26,30 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Read an IDL file or complete IDL interface, producing an IdlDefinitions object.
-
-FIXME: Currently a stub, as part of landing the parser incrementally.
-Just create dummy IdlDefinitions objects (no parsing or object building done),
-and resolve dependencies.
-The interface reader should always return None, indicating that bindings should
-not be generated, since the code generator has also not landed yet.
-"""
+"""Read an IDL file or complete IDL interface, producing an IdlDefinitions object."""
import os.path
+import blink_idl_parser
+import idl_definitions_builder
+import idl_validator
import interface_dependency_resolver
-class IdlDefinitions():
- """Top-level IDL class.
-
- In Web IDL spec terms, represents a set of definitions, obtained by parsing
- a set of IDL fragments (i.e., the contents of .idl files).
- See: http://www.w3.org/TR/WebIDL/#idl
- """
- # FIXME: Dummy class; full class hierarchy will be added with parser
- pass
-
-
-def read_idl_definitions(idl_filename, interface_dependencies_filename, additional_idl_filenames):
+def read_idl_definitions(idl_filename, interface_dependencies_filename, additional_idl_filenames, idl_attributes_filename, verbose=False):
"""Returns an IdlDefinitions object for an IDL file, including all dependencies."""
basename = os.path.basename(idl_filename)
- idl_definitions = read_idl_file(idl_filename)
- should_generate_bindings = interface_dependency_resolver.merge_interface_dependencies(idl_definitions, idl_filename, interface_dependencies_filename, additional_idl_filenames)
+ definitions = read_idl_file(idl_filename)
+ should_generate_bindings = interface_dependency_resolver.merge_dependencies(definitions, idl_filename, interface_dependencies_filename, additional_idl_filenames, verbose=verbose)
haraken 2013/07/16 14:17:51 Nit: merge_dependencies => resolve_dependencies ?
Nils Barth (inactive) 2013/07/17 12:05:09 That’s clearer; done! (Internal functions that mer
if not should_generate_bindings:
return None
- # FIXME: turn on validator
- # idl_validator.validate_extended_attributes(idl_definitions, basename, options.idl_attributes_file)
- return idl_definitions
+ idl_validator.validate_extended_attributes(definitions, basename, idl_attributes_filename)
+ return definitions
def read_idl_file(idl_filename, verbose=False):
"""Returns an IdlDefinitions object for an IDL file, without any dependencies."""
- # FIXME: Currently returns dummy object, as parser not present yet.
- # parser = BlinkIDLParser(verbose=verbose)
- # file_node = blink_idl_parser.parse_file(parser, idl_filename)
- # return idl_object_builder.file_node_to_idl_definitions(file_node)
- return IdlDefinitions()
+ parser = blink_idl_parser.BlinkIDLParser(verbose=verbose)
+ file_node = blink_idl_parser.parse_file(parser, idl_filename)
+ return idl_definitions_builder.file_node_to_idl_definitions(file_node)

Powered by Google App Engine
This is Rietveld 408576698