| 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 e5269c7fd5f7fbbb942c699692396419a79c8a4b..4225f0a7f2373e293f385b2ff2384e76ff318229 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/parse/parser.py
|
| @@ -21,7 +21,7 @@ def _GetDirAbove(dirname):
|
| try:
|
| imp.find_module("ply")
|
| except ImportError:
|
| - sys.path.append(os.path.join(_GetDirAbove("mojo"), "third_party"))
|
| + sys.path.append(os.path.join(_GetDirAbove("public"), "public/third_party"))
|
| from ply import lex
|
| from ply import yacc
|
|
|
| @@ -114,6 +114,7 @@ class Parser(object):
|
|
|
| def p_definition(self, p):
|
| """definition : struct
|
| + | union
|
| | interface
|
| | enum
|
| | const"""
|
| @@ -173,6 +174,23 @@ class Parser(object):
|
| """struct_field : typename NAME ordinal default SEMI"""
|
| p[0] = ast.StructField(p[2], p[3], p[1], p[4])
|
|
|
| + def p_union(self, p):
|
| + """union : UNION NAME LBRACE union_body RBRACE SEMI"""
|
| + p[0] = ast.Union(p[2], p[4])
|
| +
|
| + def p_union_body_1(self, p):
|
| + """union_body : """
|
| + p[0] = ast.UnionBody()
|
| +
|
| + def p_union_body_2(self, p):
|
| + """union_body : union_body union_field"""
|
| + p[0] = p[1]
|
| + p[1].Append(p[2])
|
| +
|
| + def p_union_field(self, p):
|
| + """union_field : typename NAME ordinal SEMI"""
|
| + p[0] = ast.UnionField(p[2], p[3], p[1])
|
| +
|
| def p_default_1(self, p):
|
| """default : """
|
| p[0] = None
|
|
|