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