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

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

Issue 366873007: Mojo: Reformat parser_unittest.py. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: docstring for BaseNode 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generates a syntax tree from a Mojo IDL file.""" 5 """Generates a syntax tree from a Mojo IDL file."""
6 6
7 import imp 7 import imp
8 import os.path 8 import os.path
9 import sys 9 import sys
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 class Parser(object): 66 class Parser(object):
67 67
68 def __init__(self, lexer, source, filename): 68 def __init__(self, lexer, source, filename):
69 self.tokens = lexer.tokens 69 self.tokens = lexer.tokens
70 self.source = source 70 self.source = source
71 self.filename = filename 71 self.filename = filename
72 72
73 def p_root(self, p): 73 def p_root(self, p):
74 """root : import root 74 """root : import root
75 | module 75 | module
76 | definitions""" 76 | definition_list"""
77 if len(p) > 2: 77 if len(p) > 2:
78 p[0] = _ListFromConcat(p[1], p[2]) 78 p[0] = _ListFromConcat(p[1], p[2])
79 else: 79 else:
80 # Generator expects a module. If one wasn't specified insert one with an 80 # Generator expects a module. If one wasn't specified insert one with an
81 # empty name. 81 # empty name.
82 if p[1][0] != 'MODULE': 82 if p[1][0] != 'MODULE':
83 p[0] = [('MODULE', '', None, p[1])] 83 p[0] = [('MODULE', '', None, p[1])]
84 else: 84 else:
85 p[0] = [p[1]] 85 p[0] = [p[1]]
86 86
87 def p_import(self, p): 87 def p_import(self, p):
88 """import : IMPORT STRING_LITERAL""" 88 """import : IMPORT STRING_LITERAL"""
89 # 'eval' the literal to strip the quotes. 89 # 'eval' the literal to strip the quotes.
90 p[0] = ('IMPORT', eval(p[2])) 90 p[0] = ('IMPORT', eval(p[2]))
91 91
92 def p_module(self, p): 92 def p_module(self, p):
93 """module : attribute_section MODULE identifier LBRACE definitions RBRACE""" 93 """module : attribute_section MODULE identifier LBRACE definition_list \
94 RBRACE"""
94 p[0] = ('MODULE', p[3], p[1], p[5]) 95 p[0] = ('MODULE', p[3], p[1], p[5])
95 96
96 def p_definitions(self, p): 97 def p_definition_list(self, p):
97 """definitions : definition definitions 98 """definition_list : definition definition_list
98 | """ 99 | """
99 if len(p) > 1: 100 if len(p) > 1:
100 p[0] = _ListFromConcat(p[1], p[2]) 101 p[0] = _ListFromConcat(p[1], p[2])
101 102
102 def p_definition(self, p): 103 def p_definition(self, p):
103 """definition : struct 104 """definition : struct
104 | interface 105 | interface
105 | enum 106 | enum
106 | const""" 107 | const"""
107 p[0] = p[1] 108 p[0] = p[1]
108 109
109 def p_attribute_section(self, p): 110 def p_attribute_section(self, p):
110 """attribute_section : LBRACKET attributes RBRACKET 111 """attribute_section : LBRACKET attribute_list RBRACKET
111 | """ 112 | """
112 if len(p) > 3: 113 if len(p) > 3:
113 p[0] = p[2] 114 p[0] = p[2]
114 115
115 def p_attributes(self, p): 116 def p_attribute_list(self, p):
116 """attributes : attribute 117 """attribute_list : attribute
117 | attribute COMMA attributes 118 | attribute COMMA attribute_list
118 | """ 119 | """
119 if len(p) == 2: 120 if len(p) == 2:
120 p[0] = _ListFromConcat(p[1]) 121 p[0] = _ListFromConcat(p[1])
121 elif len(p) > 3: 122 elif len(p) > 3:
122 p[0] = _ListFromConcat(p[1], p[3]) 123 p[0] = _ListFromConcat(p[1], p[3])
123 124
124 def p_attribute(self, p): 125 def p_attribute(self, p):
125 """attribute : NAME EQUALS evaled_literal 126 """attribute : NAME EQUALS evaled_literal
126 | NAME EQUALS NAME""" 127 | NAME EQUALS NAME"""
127 p[0] = ('ATTRIBUTE', p[1], p[3]) 128 p[0] = ('ATTRIBUTE', p[1], p[3])
128 129
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 161
161 def p_interface_body(self, p): 162 def p_interface_body(self, p):
162 """interface_body : method interface_body 163 """interface_body : method interface_body
163 | enum interface_body 164 | enum interface_body
164 | const interface_body 165 | const interface_body
165 | """ 166 | """
166 if len(p) > 1: 167 if len(p) > 1:
167 p[0] = _ListFromConcat(p[1], p[2]) 168 p[0] = _ListFromConcat(p[1], p[2])
168 169
169 def p_response(self, p): 170 def p_response(self, p):
170 """response : RESPONSE LPAREN parameters RPAREN 171 """response : RESPONSE LPAREN parameter_list RPAREN
171 | """ 172 | """
172 if len(p) > 3: 173 if len(p) > 3:
173 p[0] = p[3] 174 p[0] = p[3]
174 175
175 def p_method(self, p): 176 def p_method(self, p):
176 """method : NAME ordinal LPAREN parameters RPAREN response SEMI""" 177 """method : NAME ordinal LPAREN parameter_list RPAREN response SEMI"""
177 p[0] = ('METHOD', p[1], p[4], p[2], p[6]) 178 p[0] = ('METHOD', p[1], p[4], p[2], p[6])
178 179
179 def p_parameters(self, p): 180 def p_parameter_list(self, p):
180 """parameters : parameter 181 """parameter_list : parameter
181 | parameter COMMA parameters 182 | parameter COMMA parameter_list
182 | """ 183 | """
183 if len(p) == 1: 184 if len(p) == 1:
184 p[0] = [] 185 p[0] = []
185 elif len(p) == 2: 186 elif len(p) == 2:
186 p[0] = [p[1]] 187 p[0] = [p[1]]
187 else: 188 else:
188 p[0] = [p[1]] + p[3] 189 p[0] = [p[1]] + p[3]
189 190
190 def p_parameter(self, p): 191 def p_parameter(self, p):
191 """parameter : typename NAME ordinal""" 192 """parameter : typename NAME ordinal"""
192 p[0] = ast.Parameter(p[1], p[2], p[3], 193 p[0] = ast.Parameter(p[1], p[2], p[3],
(...skipping 30 matching lines...) Expand all
223 224
224 def p_array(self, p): 225 def p_array(self, p):
225 """array : typename LBRACKET RBRACKET""" 226 """array : typename LBRACKET RBRACKET"""
226 p[0] = p[1] + "[]" 227 p[0] = p[1] + "[]"
227 228
228 def p_fixed_array(self, p): 229 def p_fixed_array(self, p):
229 """fixed_array : typename LBRACKET INT_CONST_DEC RBRACKET""" 230 """fixed_array : typename LBRACKET INT_CONST_DEC RBRACKET"""
230 value = int(p[3]) 231 value = int(p[3])
231 if value == 0 or value > _MAX_ARRAY_SIZE: 232 if value == 0 or value > _MAX_ARRAY_SIZE:
232 raise ParseError(self.filename, "Fixed array size %d invalid" % value, 233 raise ParseError(self.filename, "Fixed array size %d invalid" % value,
233 lineno=p.lineno(1), 234 lineno=p.lineno(3),
234 snippet=self._GetSnippet(p.lineno(1))) 235 snippet=self._GetSnippet(p.lineno(3)))
235 p[0] = p[1] + "[" + p[3] + "]" 236 p[0] = p[1] + "[" + p[3] + "]"
236 237
237 def p_interfacerequest(self, p): 238 def p_interfacerequest(self, p):
238 """interfacerequest : identifier AMP""" 239 """interfacerequest : identifier AMP"""
239 p[0] = p[1] + "&" 240 p[0] = p[1] + "&"
240 241
241 def p_ordinal(self, p): 242 def p_ordinal(self, p):
242 """ordinal : ORDINAL 243 """ordinal : ORDINAL
243 | """ 244 | """
244 if len(p) > 1: 245 if len(p) > 1:
245 value = int(p[1][1:]) 246 value = int(p[1][1:])
246 if value > _MAX_ORDINAL_VALUE: 247 if value > _MAX_ORDINAL_VALUE:
247 raise ParseError(self.filename, "Ordinal value %d too large:" % value, 248 raise ParseError(self.filename, "Ordinal value %d too large:" % value,
248 lineno=p.lineno(1), 249 lineno=p.lineno(1),
249 snippet=self._GetSnippet(p.lineno(1))) 250 snippet=self._GetSnippet(p.lineno(1)))
250 p[0] = ast.Ordinal(value, filename=self.filename, lineno=p.lineno(1)) 251 p[0] = ast.Ordinal(value, filename=self.filename, lineno=p.lineno(1))
251 else: 252 else:
252 p[0] = ast.Ordinal(None) 253 p[0] = ast.Ordinal(None)
253 254
254 def p_enum(self, p): 255 def p_enum(self, p):
255 """enum : ENUM NAME LBRACE enum_fields RBRACE SEMI""" 256 """enum : ENUM NAME LBRACE enum_field_list RBRACE SEMI"""
256 p[0] = ('ENUM', p[2], p[4]) 257 p[0] = ('ENUM', p[2], p[4])
257 258
258 def p_enum_fields(self, p): 259 def p_enum_field_list(self, p):
259 """enum_fields : enum_field 260 """enum_field_list : enum_field
260 | enum_field COMMA enum_fields 261 | enum_field COMMA enum_field_list
261 | """ 262 | """
262 if len(p) == 2: 263 if len(p) == 2:
263 p[0] = _ListFromConcat(p[1]) 264 p[0] = _ListFromConcat(p[1])
264 elif len(p) > 3: 265 elif len(p) > 3:
265 p[0] = _ListFromConcat(p[1], p[3]) 266 p[0] = _ListFromConcat(p[1], p[3])
266 267
267 def p_enum_field(self, p): 268 def p_enum_field(self, p):
268 """enum_field : NAME 269 """enum_field : NAME
269 | NAME EQUALS constant""" 270 | NAME EQUALS constant"""
270 if len(p) == 2: 271 if len(p) == 2:
271 p[0] = ('ENUM_FIELD', p[1], None) 272 p[0] = ('ENUM_FIELD', p[1], None)
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 326
326 def Parse(source, filename): 327 def Parse(source, filename):
327 lexer = Lexer(filename) 328 lexer = Lexer(filename)
328 parser = Parser(lexer, source, filename) 329 parser = Parser(lexer, source, filename)
329 330
330 lex.lex(object=lexer) 331 lex.lex(object=lexer)
331 yacc.yacc(module=parser, debug=0, write_tables=0) 332 yacc.yacc(module=parser, debug=0, write_tables=0)
332 333
333 tree = yacc.parse(source) 334 tree = yacc.parse(source)
334 return tree 335 return tree
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698