diff options
author | benjhayden@chromium.org <benjhayden@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-11 21:03:26 +0000 |
---|---|---|
committer | benjhayden@chromium.org <benjhayden@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-11 21:03:26 +0000 |
commit | 9d27318a0a0dbbb7312b8026be240d8def439406 (patch) | |
tree | cc6cf11ea0fbb4f6ea2eb62c3bc41d49864d2e7a /ppapi/generators/idl_parser.py | |
parent | df66ed60b88d0331b3bd815622a77047cdc1e0d8 (diff) | |
download | chromium_src-9d27318a0a0dbbb7312b8026be240d8def439406.zip chromium_src-9d27318a0a0dbbb7312b8026be240d8def439406.tar.gz chromium_src-9d27318a0a0dbbb7312b8026be240d8def439406.tar.bz2 |
Switch the downloads API over to IDL/json_schema_compiler
Modify ppapi/generators/idl_parser.py to
0: not require a file-level comment (but generate the same parse tree structure),
1: actually support ext_attrs (modifiers) for dictionaries, and
2: support [ext_attr=(symbols|values)].
Modify json_schema_compiler to
0: use "base::Value" and any_helper.ANY_CLASS instead of Value and Any in order to support ArrayBuffers named |value| or |any|,
1: actually test that namespaces and dictionaries are sorted correctly,
2: fix HGenerator._FieldDependencyOrder(),
3: support [inline_doc] on dictionaries and enums,
4: support descriptions on enums,
5: support documentation_permissions_required,
6: support [legalValues=(values...)].
Review URL: https://chromiumcodereview.appspot.com/10639020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146201 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/generators/idl_parser.py')
-rwxr-xr-x | ppapi/generators/idl_parser.py | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/ppapi/generators/idl_parser.py b/ppapi/generators/idl_parser.py index f1045c3..22517d0 100755 --- a/ppapi/generators/idl_parser.py +++ b/ppapi/generators/idl_parser.py @@ -221,6 +221,15 @@ class IDLParser(IDLLexer): p[0] = ListFromConcat(Copyright, Filedoc, p[3], p[4]) if self.parse_debug: DumpReduction('top', p) + def p_top_short(self, p): + """top : COMMENT ext_attr_block top_list""" + Copyright = self.BuildComment('Copyright', p, 1) + Filedoc = IDLNode('Comment', self.lexobj.filename, p.lineno(2)-1, + p.lexpos(2)-1, [self.BuildAttribute('NAME', ''), + self.BuildAttribute('FORM', 'cc')]) + p[0] = ListFromConcat(Copyright, Filedoc, p[2], p[3]) + if self.parse_debug: DumpReduction('top', p) + # Build a list of top level items. def p_top_list(self, p): """top_list : callback_decl top_list @@ -289,11 +298,11 @@ class IDLParser(IDLLexer): # # Dictionary # -# A dictionary contains is a named list of optional and required members. +# A dictionary is a named list of optional and required members. # def p_dictionary_block(self, p): """dictionary_block : modifiers DICTIONARY SYMBOL '{' struct_list '}' ';'""" - p[0] = self.BuildNamed('Dictionary', p, 3, ListFromConcat(p[5])) + p[0] = self.BuildNamed('Dictionary', p, 3, ListFromConcat(p[1], p[5])) # # Callback @@ -370,6 +379,29 @@ class IDLParser(IDLLexer): p[0] = ListFromConcat(self.BuildAttribute(p[1], 'True'), p[2]) if self.parse_debug: DumpReduction('ext_attribute_list', p) + def p_ext_attr_list_values(self, p): + """ext_attr_list : SYMBOL '=' '(' values ')' ext_attr_cont + | SYMBOL '=' '(' symbols ')' ext_attr_cont""" + p[0] = ListFromConcat(self.BuildAttribute(p[1], p[4]), p[6]) + + def p_values(self, p): + """values : value values_cont""" + p[0] = ListFromConcat(p[1], p[2]) + + def p_symbols(self, p): + """symbols : SYMBOL symbols_cont""" + p[0] = ListFromConcat(p[1], p[2]) + + def p_symbols_cont(self, p): + """symbols_cont : ',' SYMBOL symbols_cont + | """ + if len(p) > 1: p[0] = ListFromConcat(p[2], p[3]) + + def p_values_cont(self, p): + """values_cont : ',' value values_cont + | """ + if len(p) > 1: p[0] = ListFromConcat(p[2], p[3]) + def p_ext_attr_cont(self, p): """ext_attr_cont : ',' ext_attr_list |""" @@ -555,7 +587,7 @@ class IDLParser(IDLLexer): def p_param_item(self, p): """param_item : modifiers optional SYMBOL arrays identifier""" typeref = self.BuildAttribute('TYPEREF', p[3]) - children = ListFromConcat(p[1],p[2], typeref, p[4]) + children = ListFromConcat(p[1], p[2], typeref, p[4]) p[0] = self.BuildNamed('Param', p, 5, children) if self.parse_debug: DumpReduction('param_item', p) |