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

Unified Diff: mojo/public/tools/bindings/pylib/mojom/parse/translate.py

Issue 380023005: Mojo: Mojom: Add Import, ImportList, and Mojom AST types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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: mojo/public/tools/bindings/pylib/mojom/parse/translate.py
diff --git a/mojo/public/tools/bindings/pylib/mojom/parse/translate.py b/mojo/public/tools/bindings/pylib/mojom/parse/translate.py
index e65015e454e523fe80c95f338e3e0c91bd9639e6..8e680fa36a2af448bc01a165f8ef74a688b1f9eb 100644
--- a/mojo/public/tools/bindings/pylib/mojom/parse/translate.py
+++ b/mojo/public/tools/bindings/pylib/mojom/parse/translate.py
@@ -120,34 +120,25 @@ def _MapConstant(tree):
constant['value'] = tree[3]
return constant
-def _MapImport(tree):
- import_item = {}
- import_item['filename'] = tree[1]
- return import_item
-
class _MojomBuilder(object):
def __init__(self):
self.mojom = {}
def Build(self, tree, name):
- def MapModule(tree, name):
- assert tree[1] is None or tree[1][0] == 'IDENTIFIER'
- mojom = {}
- mojom['name'] = name
- mojom['namespace'] = '' if not tree[1] else tree[1][1]
- mojom['attributes'] = _AttributeListToDict(tree[2])
- mojom['structs'] = _MapTree(_MapStruct, tree[3], 'STRUCT')
- mojom['interfaces'] = _MapTree(_MapInterface, tree[3], 'INTERFACE')
- mojom['enums'] = _MapTree(_MapEnum, tree[3], 'ENUM')
- mojom['constants'] = _MapTree(_MapConstant, tree[3], 'CONST')
- return mojom
-
- modules = [MapModule(item, name) for item in tree if item[0] == 'MODULE']
- if len(modules) != 1:
- raise Exception('A mojom file must contain exactly 1 module.')
- self.mojom = modules[0]
- self.mojom['imports'] = _MapTree(_MapImport, tree, 'IMPORT')
+ assert isinstance(tree, ast.Mojom)
+ self.mojom['name'] = name
+ self.mojom['namespace'] = tree.module.name[1] if tree.module else ''
+ self.mojom['imports'] = \
+ [{'filename': imp.import_filename} for imp in tree.import_list]
+ self.mojom['attributes'] = \
+ _AttributeListToDict(tree.module.attribute_list) if tree.module else {}
+ self.mojom['structs'] = _MapTree(_MapStruct, tree.definition_list, 'STRUCT')
+ self.mojom['interfaces'] = \
+ _MapTree(_MapInterface, tree.definition_list, 'INTERFACE')
+ self.mojom['enums'] = _MapTree(_MapEnum, tree.definition_list, 'ENUM')
+ self.mojom['constants'] = \
+ _MapTree(_MapConstant, tree.definition_list, 'CONST')
return self.mojom

Powered by Google App Engine
This is Rietveld 408576698