lib/webidl/parser/idl.treetop in webidl-0.1.2 vs lib/webidl/parser/idl.treetop in webidl-0.1.3
- old
+ new
@@ -9,10 +9,12 @@
end
rule Definition
Module
/ Interface
+ / PartialInterface
+ / Dictionary
/ Exception
/ TypeDef
/ ImplementsStatement
end
@@ -22,10 +24,14 @@
rule Interface
"interface" ws name:identifier ws inherits:Inheritance ws "{" ws members:InterfaceMembers ws "}" ws ";" <ParseTree::Interface>
end
+ rule PartialInterface
+ "partial" ws "interface" ws name:identifier ws inherits:Inheritance ws "{" ws members:InterfaceMembers ws "}" ws ";" <ParseTree::PartialInterface>
+ end
+
rule Inheritance
(":" ws names:ScopedNameList <ParseTree::Inheritance>)?
end
# extract to a generic Members syntax node?
@@ -35,10 +41,32 @@
rule InterfaceMember
Const / AttributeOrOperation
end
+ # Dictionary → "dictionary" identifier Inheritance "{" DictionaryMembers "}" ";"
+ rule Dictionary
+ "dictionary" ws name:identifier ws inherits:Inheritance ws "{" ws members:DictionaryMembers ws "}" ws ";" <ParseTree::Dictionary>
+ end
+
+ # [11] DictionaryMembers → ExtendedAttributeList DictionaryMember DictionaryMembers
+ # | ε
+ rule DictionaryMembers
+ (eal:ExtendedAttributeList ws member:DictionaryMember ws members:DictionaryMembers <ParseTree::DictionaryMembers>)?
+ end
+
+ # [12] DictionaryMember → Type identifier DefaultValue ";"
+ rule DictionaryMember
+ type:Type ws name:identifier ws default:DefaultValue ws ";" <ParseTree::DictionaryMember>
+ end
+
+ # [13] DefaultValue → "=" ConstValue
+ # | ε
+ rule DefaultValue
+ ("=" ws const:ConstValue { def build() const.build end })?
+ end
+
rule Exception
"exception" ws name:identifier ws inherits:Inheritance ws "{" ws members:ExceptionMembers ws "}" ws ";" <ParseTree::Exception>
end
# extract to a generic Members syntax node?
@@ -53,14 +81,14 @@
rule ImplementsStatement
implementor:ScopedName ws "implements" ws implementee:ScopedName ws ";" <ParseTree::ImplementsStatement>
end
rule Const
- "const" ws type:Type ws name:identifier ws "=" ws const_expr:ConstExpr ws ";" <ParseTree::Const>
+ "const" ws type:Type ws name:identifier ws "=" ws const_expr:ConstValue ws ";" <ParseTree::Const>
end
- rule ConstExpr
+ rule ConstValue
BooleanLiteral / integer / float
end
rule BooleanLiteral
("true" / "false") { def build() text_value == "true" end }
@@ -105,10 +133,10 @@
rule Special
"getter"
/ "setter"
/ "creator"
/ "deleter"
- / "caller"
+ / "legacycaller"
end
rule OperationRest
type:ReturnType ws optional_id:OptionalIdentifier ws "(" ws args:ArgumentList ws ")" ws raises:Raises ws ";" <ParseTree::Operation>
end