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

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

Issue 139613005: Support default values for complex objects in mojom. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 10 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 default ordinal SEMI""" 98 """field : typename NAME default ordinal SEMI"""
99 p[0] = ('FIELD', p[1], p[2], p[4], p[3]) 99 p[0] = ('FIELD', p[1], p[2], p[4], p[3])
100 100
101 def p_default(self, p): 101 def p_default(self, p):
102 """default : EQUALS expression 102 """default : EQUALS expression
103 | EQUALS expression_array 103 | EQUALS expression_object
104 | """ 104 | """
105 if len(p) > 2: 105 if len(p) > 2:
106 p[0] = p[2] 106 p[0] = p[2]
107 107
108 def p_interface(self, p): 108 def p_interface(self, p):
109 """interface : attribute_section INTERFACE NAME LBRACE interface_body \ 109 """interface : attribute_section INTERFACE NAME LBRACE interface_body \
110 RBRACE SEMI""" 110 RBRACE SEMI"""
111 p[0] = ('INTERFACE', p[3], p[1], p[5]) 111 p[0] = ('INTERFACE', p[3], p[1], p[5])
112 112
113 def p_interface_body(self, p): 113 def p_interface_body(self, p):
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 def p_enum_field(self, p): 183 def p_enum_field(self, p):
184 """enum_field : NAME 184 """enum_field : NAME
185 | NAME EQUALS expression""" 185 | NAME EQUALS expression"""
186 if len(p) == 2: 186 if len(p) == 2:
187 p[0] = ('ENUM_FIELD', p[1], None) 187 p[0] = ('ENUM_FIELD', p[1], None)
188 else: 188 else:
189 p[0] = ('ENUM_FIELD', p[1], p[3]) 189 p[0] = ('ENUM_FIELD', p[1], p[3])
190 190
191 ### Expressions ### 191 ### Expressions ###
192 192
193 def p_expression_object(self, p):
194 """expression_object : expression_array
195 | LBRACE expression_object_elements RBRACE """
196 if len(p) < 3:
197 p[0] = p[1]
198 else:
199 p[0] = ('OBJECT', p[2])
200
201 def p_expression_object_elements(self, p):
202 """expression_object_elements : expression_object
203 | expression_object COMMA expression_object_ele ments
204 | """
205 if len(p) == 2:
206 p[0] = ListFromConcat(p[1])
207 elif len(p) > 3:
208 p[0] = ListFromConcat(p[1], p[3])
209
193 def p_expression_array(self, p): 210 def p_expression_array(self, p):
194 """expression_array : expression 211 """expression_array : expression
195 | LBRACKET expression_array_elements RBRACKET """ 212 | LBRACKET expression_array_elements RBRACKET """
196 if len(p) < 3: 213 if len(p) < 3:
197 p[0] = p[1] 214 p[0] = p[1]
198 else: 215 else:
199 p[0] = p[2] 216 p[0] = ('ARRAY', p[2])
200 217
201 def p_expression_array_elements(self, p): 218 def p_expression_array_elements(self, p):
202 """expression_array_elements : expression 219 """expression_array_elements : expression_object
203 | expression COMMA expression_array_elements 220 | expression_object COMMA expression_array_elem ents
204 | """ 221 | """
205 if len(p) == 2: 222 if len(p) == 2:
206 p[0] = ListFromConcat(p[1]) 223 p[0] = ListFromConcat(p[1])
207 elif len(p) > 3: 224 elif len(p) > 3:
208 p[0] = ListFromConcat(p[1], p[3]) 225 p[0] = ListFromConcat(p[1], p[3])
209 226
210 def p_expression(self, p): 227 def p_expression(self, p):
211 """expression : conditional_expression""" 228 """expression : conditional_expression"""
212 p[0] = p[1] 229 p[0] = p[1]
213 230
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 def Main(): 313 def Main():
297 if len(sys.argv) < 2: 314 if len(sys.argv) < 2:
298 print("usage: %s filename" % (sys.argv[0])) 315 print("usage: %s filename" % (sys.argv[0]))
299 sys.exit(1) 316 sys.exit(1)
300 tree = Parse(filename=sys.argv[1]) 317 tree = Parse(filename=sys.argv[1])
301 print(tree) 318 print(tree)
302 319
303 320
304 if __name__ == '__main__': 321 if __name__ == '__main__':
305 Main() 322 Main()
OLDNEW
« no previous file with comments | « mojo/public/bindings/pylib/generate/mojom_generator.py ('k') | mojo/public/bindings/tests/sample_service.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698