| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 def p_root(self, p): | 72 def p_root(self, p): |
| 73 """root : import root | 73 """root : import root |
| 74 | module | 74 | module |
| 75 | definitions""" | 75 | definitions""" |
| 76 if len(p) > 2: | 76 if len(p) > 2: |
| 77 p[0] = _ListFromConcat(p[1], p[2]) | 77 p[0] = _ListFromConcat(p[1], p[2]) |
| 78 else: | 78 else: |
| 79 # Generator expects a module. If one wasn't specified insert one with an | 79 # Generator expects a module. If one wasn't specified insert one with an |
| 80 # empty name. | 80 # empty name. |
| 81 if p[1][0] != 'MODULE': | 81 if p[1][0] != 'MODULE': |
| 82 p[0] = [('MODULE', '', p[1])] | 82 p[0] = [('MODULE', '', [], p[1])] |
| 83 else: | 83 else: |
| 84 p[0] = [p[1]] | 84 p[0] = [p[1]] |
| 85 | 85 |
| 86 def p_import(self, p): | 86 def p_import(self, p): |
| 87 """import : IMPORT STRING_LITERAL""" | 87 """import : IMPORT STRING_LITERAL""" |
| 88 # 'eval' the literal to strip the quotes. | 88 # 'eval' the literal to strip the quotes. |
| 89 p[0] = ('IMPORT', eval(p[2])) | 89 p[0] = ('IMPORT', eval(p[2])) |
| 90 | 90 |
| 91 def p_module(self, p): | 91 def p_module(self, p): |
| 92 """module : MODULE identifier LBRACE definitions RBRACE""" | 92 """module : attribute_section MODULE identifier LBRACE definitions RBRACE""" |
| 93 p[0] = ('MODULE', p[2], p[4]) | 93 p[0] = ('MODULE', p[3], p[1], p[5]) |
| 94 | 94 |
| 95 def p_definitions(self, p): | 95 def p_definitions(self, p): |
| 96 """definitions : definition definitions | 96 """definitions : definition definitions |
| 97 | """ | 97 | """ |
| 98 if len(p) > 1: | 98 if len(p) > 1: |
| 99 p[0] = _ListFromConcat(p[1], p[2]) | 99 p[0] = _ListFromConcat(p[1], p[2]) |
| 100 | 100 |
| 101 def p_definition(self, p): | 101 def p_definition(self, p): |
| 102 """definition : struct | 102 """definition : struct |
| 103 | interface | 103 | interface |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 | 352 |
| 353 def Parse(source, filename): | 353 def Parse(source, filename): |
| 354 lexer = Lexer(filename) | 354 lexer = Lexer(filename) |
| 355 parser = Parser(lexer, source, filename) | 355 parser = Parser(lexer, source, filename) |
| 356 | 356 |
| 357 lex.lex(object=lexer) | 357 lex.lex(object=lexer) |
| 358 yacc.yacc(module=parser, debug=0, write_tables=0) | 358 yacc.yacc(module=parser, debug=0, write_tables=0) |
| 359 | 359 |
| 360 tree = yacc.parse(source) | 360 tree = yacc.parse(source) |
| 361 return tree | 361 return tree |
| OLD | NEW |