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

Side by Side Diff: mojo/public/bindings/parse/mojo_parser.py

Issue 138143003: Support default values for POD struct fields in mojom IDL. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Generates a syntax tree from a Mojo IDL file.""" 6 """Generates a syntax tree from a Mojo IDL file."""
7 7
8 8
9 import sys 9 import sys
10 import os.path 10 import os.path
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 p[0] = ('STRUCT', p[3], p[1], p[5]) 88 p[0] = ('STRUCT', p[3], p[1], p[5])
89 89
90 def p_struct_body(self, p): 90 def p_struct_body(self, p):
91 """struct_body : field struct_body 91 """struct_body : field struct_body
92 | enum struct_body 92 | enum struct_body
93 |""" 93 |"""
94 if len(p) > 1: 94 if len(p) > 1:
95 p[0] = ListFromConcat(p[1], p[2]) 95 p[0] = ListFromConcat(p[1], p[2])
96 96
97 def p_field(self, p): 97 def p_field(self, p):
98 """field : typename NAME ordinal SEMI""" 98 """field : typename NAME default ordinal SEMI"""
99 p[0] = ('FIELD', p[1], p[2], p[3]) 99 p[0] = ('FIELD', p[1], p[2], p[4], p[3])
100
101 def p_default(self, p):
102 """default : EQUALS expression
103 | """
104 if len(p) > 2:
105 p[0] = p[2]
100 106
101 def p_interface(self, p): 107 def p_interface(self, p):
102 """interface : attribute_section INTERFACE NAME LBRACE interface_body RBRACE SEMI""" 108 """interface : attribute_section INTERFACE NAME LBRACE interface_body RBRACE SEMI"""
103 p[0] = ('INTERFACE', p[3], p[1], p[5]) 109 p[0] = ('INTERFACE', p[3], p[1], p[5])
104 110
105 def p_interface_body(self, p): 111 def p_interface_body(self, p):
106 """interface_body : method interface_body 112 """interface_body : method interface_body
107 | enum interface_body 113 | enum interface_body
108 | """ 114 | """
109 if len(p) > 1: 115 if len(p) > 1:
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 def Main(): 276 def Main():
271 if len(sys.argv) < 2: 277 if len(sys.argv) < 2:
272 print("usage: %s filename" % (sys.argv[0])) 278 print("usage: %s filename" % (sys.argv[0]))
273 sys.exit(1) 279 sys.exit(1)
274 tree = Parse(filename=sys.argv[1]) 280 tree = Parse(filename=sys.argv[1])
275 print(tree) 281 print(tree)
276 282
277 283
278 if __name__ == '__main__': 284 if __name__ == '__main__':
279 Main() 285 Main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698