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