lib/webidl/parser/idl.rb in webidl-0.0.7 vs lib/webidl/parser/idl.rb in webidl-0.0.8
- old
+ new
@@ -4184,10 +4184,17 @@
node_cache[:Nullable][start_index] = r0
r0
end
+ module Array0
+ def ws
+ elements[1]
+ end
+
+ end
+
def _nt_Array
start_index = index
if node_cache[:Array].has_key?(index)
cached = node_cache[:Array][index]
if cached
@@ -4195,14 +4202,37 @@
@index = cached.interval.end
end
return cached
end
- if has_terminal?("[]", false, index)
- r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
- @index += 2
+ i1, s1 = index, []
+ if has_terminal?("[", false, index)
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
else
- terminal_parse_failure("[]")
+ terminal_parse_failure("[")
+ r2 = nil
+ end
+ s1 << r2
+ if r2
+ r3 = _nt_ws
+ s1 << r3
+ if r3
+ if has_terminal?("]", false, index)
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
+ @index += 1
+ else
+ terminal_parse_failure("]")
+ r4 = nil
+ end
+ s1 << r4
+ end
+ end
+ if s1.last
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
+ r1.extend(Array0)
+ else
+ @index = i1
r1 = nil
end
if r1
r0 = r1
else