| OLD | NEW |
| 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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 """nonempty_parameter_list : nonempty_parameter_list COMMA parameter""" | 224 """nonempty_parameter_list : nonempty_parameter_list COMMA parameter""" |
| 225 p[0] = p[1] | 225 p[0] = p[1] |
| 226 p[0].Append(p[3]) | 226 p[0].Append(p[3]) |
| 227 | 227 |
| 228 def p_parameter(self, p): | 228 def p_parameter(self, p): |
| 229 """parameter : typename NAME ordinal""" | 229 """parameter : typename NAME ordinal""" |
| 230 p[0] = ast.Parameter(p[2], p[3], p[1], | 230 p[0] = ast.Parameter(p[2], p[3], p[1], |
| 231 filename=self.filename, lineno=p.lineno(2)) | 231 filename=self.filename, lineno=p.lineno(2)) |
| 232 | 232 |
| 233 def p_typename(self, p): | 233 def p_typename(self, p): |
| 234 """typename : basictypename | 234 """typename : nonnullable_typename QSTN |
| 235 | array | 235 | nonnullable_typename""" |
| 236 | fixed_array | 236 if len(p) == 2: |
| 237 | interfacerequest""" | 237 p[0] = p[1] |
| 238 else: |
| 239 p[0] = p[1] + "?" |
| 240 |
| 241 def p_nonnullable_typename(self, p): |
| 242 """nonnullable_typename : basictypename |
| 243 | array |
| 244 | fixed_array |
| 245 | interfacerequest""" |
| 238 p[0] = p[1] | 246 p[0] = p[1] |
| 239 | 247 |
| 240 def p_basictypename(self, p): | 248 def p_basictypename(self, p): |
| 241 """basictypename : identifier | 249 """basictypename : identifier |
| 242 | handletype""" | 250 | handletype""" |
| 243 p[0] = p[1] | 251 p[0] = p[1] |
| 244 | 252 |
| 245 def p_handletype(self, p): | 253 def p_handletype(self, p): |
| 246 """handletype : HANDLE | 254 """handletype : HANDLE |
| 247 | HANDLE LANGLE NAME RANGLE""" | 255 | HANDLE LANGLE NAME RANGLE""" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 | 379 |
| 372 def Parse(source, filename): | 380 def Parse(source, filename): |
| 373 lexer = Lexer(filename) | 381 lexer = Lexer(filename) |
| 374 parser = Parser(lexer, source, filename) | 382 parser = Parser(lexer, source, filename) |
| 375 | 383 |
| 376 lex.lex(object=lexer) | 384 lex.lex(object=lexer) |
| 377 yacc.yacc(module=parser, debug=0, write_tables=0) | 385 yacc.yacc(module=parser, debug=0, write_tables=0) |
| 378 | 386 |
| 379 tree = yacc.parse(source) | 387 tree = yacc.parse(source) |
| 380 return tree | 388 return tree |
| OLD | NEW |