summaryrefslogtreecommitdiffstats
path: root/ppapi/generators/idl_parser.py
diff options
context:
space:
mode:
authorbenjhayden@chromium.org <benjhayden@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-11 21:03:26 +0000
committerbenjhayden@chromium.org <benjhayden@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-11 21:03:26 +0000
commit9d27318a0a0dbbb7312b8026be240d8def439406 (patch)
treecc6cf11ea0fbb4f6ea2eb62c3bc41d49864d2e7a /ppapi/generators/idl_parser.py
parentdf66ed60b88d0331b3bd815622a77047cdc1e0d8 (diff)
downloadchromium_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-xppapi/generators/idl_parser.py38
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)