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

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

Issue 378383002: Mojo: Mojom: Add an AST node type for the module "statement". (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
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/parse/ast.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/tools/bindings/pylib/mojom/parse/parser.py
diff --git a/mojo/public/tools/bindings/pylib/mojom/parse/parser.py b/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
index 9d9dd6b8d8a3a3b5ece539fb44fdfc3f385cb4ff..97c5dcaa5ce953d6bf1aa7dbb0fbfbc70c8ecff2 100644
--- a/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
+++ b/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
@@ -86,19 +86,22 @@ class Parser(object):
#
# See http://www.dabeaz.com/ply/ply.html#ply_nn25 for more details.
+ # TODO(vtl): Get rid of this ('MODULE', ...) stuff and replace it with an
+ # ast.Mojom node. This will require putting the imports into a list (say
+ # ast.ImportList).
+ # TODO(vtl): Get rid of the braces in the module "statement". (Consider
+ # renaming "module" -> "package".)
def p_root(self, p):
"""root : import root
- | module
+ | module LBRACE definition_list RBRACE
| definition_list"""
- if len(p) > 2:
- p[0] = _ListFromConcat(p[1], p[2])
+ if len(p) == 3:
+ p[0] = p[2]
+ p[0].insert(0, p[1])
+ elif len(p) == 5:
+ p[0] = [('MODULE', p[1].name, p[1].attribute_list, p[3])]
else:
- # Generator expects a module. If one wasn't specified insert one with an
- # empty name.
- if p[1][0] != 'MODULE':
- p[0] = [('MODULE', None, None, p[1])]
- else:
- p[0] = [p[1]]
+ p[0] = [('MODULE', None, None, p[1])]
def p_import(self, p):
"""import : IMPORT STRING_LITERAL"""
@@ -106,9 +109,8 @@ class Parser(object):
p[0] = ('IMPORT', eval(p[2]))
def p_module(self, p):
- """module : attribute_section MODULE identifier_wrapped LBRACE \
- definition_list RBRACE"""
- p[0] = ('MODULE', p[3], p[1], p[5])
+ """module : attribute_section MODULE identifier_wrapped """
+ p[0] = ast.Module(p[3], p[1], filename=self.filename, lineno=p.lineno(2))
def p_definition_list(self, p):
"""definition_list : definition definition_list
@@ -123,11 +125,13 @@ class Parser(object):
| const"""
p[0] = p[1]
- def p_attribute_section(self, p):
- """attribute_section : LBRACKET attribute_list RBRACKET
- | """
- if len(p) > 3:
- p[0] = p[2]
+ def p_attribute_section_1(self, p):
+ """attribute_section : """
+ p[0] = None
+
+ def p_attribute_section_2(self, p):
+ """attribute_section : LBRACKET attribute_list RBRACKET"""
+ p[0] = p[2]
def p_attribute_list_1(self, p):
"""attribute_list : """
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/parse/ast.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698