IDL parser: add StaticAttribute production

This is a straight upstream from Blink's IDL parser, which will allow
us to drop some overrides there, which in turn will allow us to update
this parser to use the grammar of current Web IDL, where static
attributes are supported differently (via a StaticMember production
that handles both static attributes and static methods.)

Preparation for:
IDL parser: drop AttributeOrOperation and StaticAttribute overrides
https://codereview.chromium.org/336733002/ (in Blink)

...and ultimately for:
IDL parser: align with current Web IDL specification
https://codereview.chromium.org/329853005/

BUG=

Review URL: https://codereview.chromium.org/333853002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@277843 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/tools/idl_parser/idl_parser.py b/tools/idl_parser/idl_parser.py
index 8a682ea..401dc4b 100755
--- a/tools/idl_parser/idl_parser.py
+++ b/tools/idl_parser/idl_parser.py
@@ -434,6 +434,7 @@
   # [30]
   def p_AttributeOrOperation(self, p):
     """AttributeOrOperation : STRINGIFIER StringifierAttributeOrOperation
+                            | StaticAttribute
                             | Attribute
                             | Operation"""
     if len(p) > 2:
@@ -451,6 +452,13 @@
     else:
       p[0] = ListFromConcat(self.BuildAttribute('STRINGIFIER', p[1]), p[1])
 
+  # [31.1] FIXME: temporary production as part of moving |static| into
+  # base parser
+  def p_StaticAttribute(self, p):
+    """StaticAttribute : STATIC Attribute"""
+    p[2].AddChildren(self.BuildTrue('STATIC'))
+    p[0] = p[2]
+
   # [32]
   def p_Attribute(self, p):
     """Attribute : Inherit ReadOnly ATTRIBUTE Type identifier ';'"""