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

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

Issue 376023002: Mojo: Mojom parser: Make |module| use an |identifier_wrapped|. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased 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
« no previous file with comments | « no previous file | mojo/public/tools/bindings/pylib/mojom/parse/translate.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 def p_root(self, p): 89 def p_root(self, p):
90 """root : import root 90 """root : import root
91 | module 91 | module
92 | definition_list""" 92 | definition_list"""
93 if len(p) > 2: 93 if len(p) > 2:
94 p[0] = _ListFromConcat(p[1], p[2]) 94 p[0] = _ListFromConcat(p[1], p[2])
95 else: 95 else:
96 # Generator expects a module. If one wasn't specified insert one with an 96 # Generator expects a module. If one wasn't specified insert one with an
97 # empty name. 97 # empty name.
98 if p[1][0] != 'MODULE': 98 if p[1][0] != 'MODULE':
99 p[0] = [('MODULE', '', None, p[1])] 99 p[0] = [('MODULE', None, None, p[1])]
100 else: 100 else:
101 p[0] = [p[1]] 101 p[0] = [p[1]]
102 102
103 def p_import(self, p): 103 def p_import(self, p):
104 """import : IMPORT STRING_LITERAL""" 104 """import : IMPORT STRING_LITERAL"""
105 # 'eval' the literal to strip the quotes. 105 # 'eval' the literal to strip the quotes.
106 p[0] = ('IMPORT', eval(p[2])) 106 p[0] = ('IMPORT', eval(p[2]))
107 107
108 def p_module(self, p): 108 def p_module(self, p):
109 """module : attribute_section MODULE identifier LBRACE definition_list \ 109 """module : attribute_section MODULE identifier_wrapped LBRACE \
110 RBRACE""" 110 definition_list RBRACE"""
111 p[0] = ('MODULE', p[3], p[1], p[5]) 111 p[0] = ('MODULE', p[3], p[1], p[5])
112 112
113 def p_definition_list(self, p): 113 def p_definition_list(self, p):
114 """definition_list : definition definition_list 114 """definition_list : definition definition_list
115 | """ 115 | """
116 if len(p) > 1: 116 if len(p) > 1:
117 p[0] = _ListFromConcat(p[1], p[2]) 117 p[0] = _ListFromConcat(p[1], p[2])
118 118
119 def p_definition(self, p): 119 def p_definition(self, p):
120 """definition : struct 120 """definition : struct
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 308
309 def p_constant(self, p): 309 def p_constant(self, p):
310 """constant : literal 310 """constant : literal
311 | identifier_wrapped""" 311 | identifier_wrapped"""
312 p[0] = p[1] 312 p[0] = p[1]
313 313
314 def p_identifier_wrapped(self, p): 314 def p_identifier_wrapped(self, p):
315 """identifier_wrapped : identifier""" 315 """identifier_wrapped : identifier"""
316 p[0] = ('IDENTIFIER', p[1]) 316 p[0] = ('IDENTIFIER', p[1])
317 317
318 # TODO(vtl): Make this produce a "wrapped" identifier (probably as an
319 # |ast.Identifier|, to be added) and get rid of identifier_wrapped.
318 def p_identifier(self, p): 320 def p_identifier(self, p):
319 """identifier : NAME 321 """identifier : NAME
320 | NAME DOT identifier""" 322 | NAME DOT identifier"""
321 p[0] = ''.join(p[1:]) 323 p[0] = ''.join(p[1:])
322 324
323 def p_literal(self, p): 325 def p_literal(self, p):
324 """literal : int 326 """literal : int
325 | float 327 | float
326 | TRUE 328 | TRUE
327 | FALSE 329 | FALSE
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 363
362 def Parse(source, filename): 364 def Parse(source, filename):
363 lexer = Lexer(filename) 365 lexer = Lexer(filename)
364 parser = Parser(lexer, source, filename) 366 parser = Parser(lexer, source, filename)
365 367
366 lex.lex(object=lexer) 368 lex.lex(object=lexer)
367 yacc.yacc(module=parser, debug=0, write_tables=0) 369 yacc.yacc(module=parser, debug=0, write_tables=0)
368 370
369 tree = yacc.parse(source) 371 tree = yacc.parse(source)
370 return tree 372 return tree
OLDNEW
« no previous file with comments | « no previous file | mojo/public/tools/bindings/pylib/mojom/parse/translate.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698