# Autogenerated from a Treetop grammar. Edits may be lost. module N3Grammer # :nodoc:all include Treetop::Runtime def root @root || :document end def _nt_document start_index = index if node_cache[:document].has_key?(index) cached = node_cache[:document][index] @index = cached.interval.end if cached return cached end r0 = _nt_statements node_cache[:document][start_index] = r0 r0 end module Statements0 end module Statements1 end def _nt_statements start_index = index if node_cache[:statements].has_key?(index) cached = node_cache[:statements][index] @index = cached.interval.end if cached return cached end s0, i0 = [], index loop do i1 = index r2 = _nt_space if r2 r1 = r2 else i3, s3 = index, [] i4 = index r5 = _nt_statement if r5 r4 = r5 else r6 = _nt_directive if r6 r4 = r6 else @index = i4 r4 = nil end end s3 << r4 if r4 s7, i7 = [], index loop do r8 = _nt_space if r8 s7 << r8 else break end end r7 = instantiate_node(SyntaxNode,input, i7...index, s7) s3 << r7 if r7 i10, s10 = index, [] if has_terminal?('.', false, index) r11 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('.') r11 = nil end s10 << r11 if r11 s12, i12 = [], index loop do r13 = _nt_space if r13 s12 << r13 else break end end r12 = instantiate_node(SyntaxNode,input, i12...index, s12) s10 << r12 end if s10.last r10 = instantiate_node(SyntaxNode,input, i10...index, s10) r10.extend(Statements0) else @index = i10 r10 = nil end if r10 r9 = r10 else r9 = instantiate_node(SyntaxNode,input, index...index) end s3 << r9 end end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(Statements1) else @index = i3 r3 = nil end if r3 r1 = r3 else @index = i1 r1 = nil end end if r1 s0 << r1 else break end end r0 = instantiate_node(SyntaxNode,input, i0...index, s0) node_cache[:statements][start_index] = r0 r0 end module Statement0 def subject elements[0] end def property_list elements[2] end end def _nt_statement start_index = index if node_cache[:statement].has_key?(index) cached = node_cache[:statement][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] r1 = _nt_subject s0 << r1 if r1 s2, i2 = [], index loop do r3 = _nt_space if r3 s2 << r3 else break end end if s2.empty? @index = i2 r2 = nil else r2 = instantiate_node(SyntaxNode,input, i2...index, s2) end s0 << r2 if r2 r4 = _nt_property_list s0 << r4 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Statement0) else @index = i0 r0 = nil end node_cache[:statement][start_index] = r0 r0 end def _nt_subject start_index = index if node_cache[:subject].has_key?(index) cached = node_cache[:subject][index] @index = cached.interval.end if cached return cached end r0 = _nt_node node_cache[:subject][start_index] = r0 r0 end module Verb0 def prop elements[1] end end module Verb1 def prop elements[1] end end def _nt_verb start_index = index if node_cache[:verb].has_key?(index) cached = node_cache[:verb][index] @index = cached.interval.end if cached return cached end i0 = index i1, s1 = index, [] if has_terminal?(">-", false, index) r2 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure(">-") r2 = nil end s1 << r2 if r2 r3 = _nt_prop s1 << r3 if r3 if has_terminal?("->", false, index) r4 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure("->") r4 = nil end s1 << r4 end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(Verb0) else @index = i1 r1 = nil end if r1 r0 = r1 else i5, s5 = index, [] if has_terminal?("<-", false, index) r6 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure("<-") r6 = nil end s5 << r6 if r6 r7 = _nt_prop s5 << r7 if r7 if has_terminal?("<-", false, index) r8 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure("<-") r8 = nil end s5 << r8 end end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Verb1) else @index = i5 r5 = nil end if r5 r0 = r5 else r9 = _nt_prop if r9 r0 = r9 else if has_terminal?("a", false, index) r10 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("a") r10 = nil end if r10 r0 = r10 else @index = i0 r0 = nil end end end end node_cache[:verb][start_index] = r0 r0 end def _nt_prop start_index = index if node_cache[:prop].has_key?(index) cached = node_cache[:prop][index] @index = cached.interval.end if cached return cached end r0 = _nt_node node_cache[:prop][start_index] = r0 r0 end def _nt_node start_index = index if node_cache[:node].has_key?(index) cached = node_cache[:node][index] @index = cached.interval.end if cached return cached end i0 = index r1 = _nt_uri_ref if r1 r0 = r1 else r2 = _nt_anonnode if r2 r0 = r2 else if has_terminal?('this', false, index) r3 = instantiate_node(SyntaxNode,input, index...(index + 4)) @index += 4 else terminal_parse_failure('this') r3 = nil end if r3 r0 = r3 else @index = i0 r0 = nil end end end node_cache[:node][start_index] = r0 r0 end module Anonnode0 def property_list elements[2] end end module Anonnode1 def statementlist elements[1] end end module Anonnode2 def nodelist elements[1] end end module Anonnode3 def anonnode; true; end end def _nt_anonnode start_index = index if node_cache[:anonnode].has_key?(index) cached = node_cache[:anonnode][index] @index = cached.interval.end if cached return cached end i0 = index i1, s1 = index, [] if has_terminal?("[", false, index) r2 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("[") r2 = nil end s1 << r2 if r2 s3, i3 = [], index loop do r4 = _nt_space if r4 s3 << r4 else break end end r3 = instantiate_node(SyntaxNode,input, i3...index, s3) s1 << r3 if r3 r5 = _nt_property_list s1 << r5 if r5 s6, i6 = [], index loop do r7 = _nt_space if r7 s6 << r7 else break end end r6 = instantiate_node(SyntaxNode,input, i6...index, s6) s1 << r6 if r6 if has_terminal?("]", false, index) r8 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("]") r8 = nil end s1 << r8 end end end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(Anonnode0) else @index = i1 r1 = nil end if r1 r0 = r1 else i9, s9 = index, [] if has_terminal?("{", false, index) r10 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("{") r10 = nil end s9 << r10 if r10 r11 = _nt_statementlist s9 << r11 if r11 if has_terminal?("}", false, index) r12 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("}") r12 = nil end s9 << r12 end end if s9.last r9 = instantiate_node(SyntaxNode,input, i9...index, s9) r9.extend(Anonnode1) else @index = i9 r9 = nil end if r9 r0 = r9 else i13, s13 = index, [] if has_terminal?("(", false, index) r14 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("(") r14 = nil end s13 << r14 if r14 r15 = _nt_nodelist s13 << r15 if r15 if has_terminal?(")", false, index) r16 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(")") r16 = nil end s13 << r16 end end if s13.last r13 = instantiate_node(SyntaxNode,input, i13...index, s13) r13.extend(Anonnode2) r13.extend(Anonnode3) else @index = i13 r13 = nil end if r13 r0 = r13 else @index = i0 r0 = nil end end end node_cache[:anonnode][start_index] = r0 r0 end module PropertyList0 def verb elements[0] end def object_list elements[2] end def property_list elements[6] end end module PropertyList1 def verb elements[0] end def object_list elements[2] end end module PropertyList2 def anonnode elements[1] end end module PropertyList3 def anonnode elements[1] end def property_list elements[3] end end def _nt_property_list start_index = index if node_cache[:property_list].has_key?(index) cached = node_cache[:property_list][index] @index = cached.interval.end if cached return cached end i0 = index i1, s1 = index, [] r2 = _nt_verb s1 << r2 if r2 s3, i3 = [], index loop do r4 = _nt_space if r4 s3 << r4 else break end end if s3.empty? @index = i3 r3 = nil else r3 = instantiate_node(SyntaxNode,input, i3...index, s3) end s1 << r3 if r3 r5 = _nt_object_list s1 << r5 if r5 s6, i6 = [], index loop do r7 = _nt_space if r7 s6 << r7 else break end end r6 = instantiate_node(SyntaxNode,input, i6...index, s6) s1 << r6 if r6 if has_terminal?(";", false, index) r8 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(";") r8 = nil end s1 << r8 if r8 s9, i9 = [], index loop do r10 = _nt_space if r10 s9 << r10 else break end end if s9.empty? @index = i9 r9 = nil else r9 = instantiate_node(SyntaxNode,input, i9...index, s9) end s1 << r9 if r9 r11 = _nt_property_list s1 << r11 end end end end end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(PropertyList0) else @index = i1 r1 = nil end if r1 r0 = r1 else i12, s12 = index, [] r13 = _nt_verb s12 << r13 if r13 s14, i14 = [], index loop do r15 = _nt_space if r15 s14 << r15 else break end end if s14.empty? @index = i14 r14 = nil else r14 = instantiate_node(SyntaxNode,input, i14...index, s14) end s12 << r14 if r14 r16 = _nt_object_list s12 << r16 end end if s12.last r12 = instantiate_node(SyntaxNode,input, i12...index, s12) r12.extend(PropertyList1) else @index = i12 r12 = nil end if r12 r0 = r12 else i17, s17 = index, [] if has_terminal?(":-", false, index) r18 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure(":-") r18 = nil end s17 << r18 if r18 r19 = _nt_anonnode s17 << r19 end if s17.last r17 = instantiate_node(SyntaxNode,input, i17...index, s17) r17.extend(PropertyList2) else @index = i17 r17 = nil end if r17 r0 = r17 else i20, s20 = index, [] if has_terminal?(":-", false, index) r21 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure(":-") r21 = nil end s20 << r21 if r21 r22 = _nt_anonnode s20 << r22 if r22 if has_terminal?(";", false, index) r23 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(";") r23 = nil end s20 << r23 if r23 r24 = _nt_property_list s20 << r24 end end end if s20.last r20 = instantiate_node(SyntaxNode,input, i20...index, s20) r20.extend(PropertyList3) else @index = i20 r20 = nil end if r20 r0 = r20 else if has_terminal?('.', false, index) r25 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('.') r25 = nil end if r25 r0 = r25 else @index = i0 r0 = nil end end end end end node_cache[:property_list][start_index] = r0 r0 end module ObjectList0 def object elements[0] end def object_list elements[3] end end def _nt_object_list start_index = index if node_cache[:object_list].has_key?(index) cached = node_cache[:object_list][index] @index = cached.interval.end if cached return cached end i0 = index i1, s1 = index, [] r2 = _nt_object s1 << r2 if r2 if has_terminal?(",", false, index) r3 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(",") r3 = nil end s1 << r3 if r3 s4, i4 = [], index loop do r5 = _nt_space if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s1 << r4 if r4 r6 = _nt_object_list s1 << r6 end end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(ObjectList0) else @index = i1 r1 = nil end if r1 r0 = r1 else r7 = _nt_object if r7 r0 = r7 else @index = i0 r0 = nil end end node_cache[:object_list][start_index] = r0 r0 end module Directive0 def nprefix elements[2] end def uri_ref elements[5] end end module Directive1 def directive; true; end end def _nt_directive start_index = index if node_cache[:directive].has_key?(index) cached = node_cache[:directive][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] if has_terminal?('@prefix', false, index) r1 = instantiate_node(SyntaxNode,input, index...(index + 7)) @index += 7 else terminal_parse_failure('@prefix') r1 = nil end s0 << r1 if r1 s2, i2 = [], index loop do r3 = _nt_space if r3 s2 << r3 else break end end if s2.empty? @index = i2 r2 = nil else r2 = instantiate_node(SyntaxNode,input, i2...index, s2) end s0 << r2 if r2 r5 = _nt_nprefix if r5 r4 = r5 else r4 = instantiate_node(SyntaxNode,input, index...index) end s0 << r4 if r4 if has_terminal?(':', false, index) r6 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(':') r6 = nil end s0 << r6 if r6 s7, i7 = [], index loop do r8 = _nt_space if r8 s7 << r8 else break end end if s7.empty? @index = i7 r7 = nil else r7 = instantiate_node(SyntaxNode,input, i7...index, s7) end s0 << r7 if r7 r9 = _nt_uri_ref s0 << r9 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Directive0) r0.extend(Directive1) else @index = i0 r0 = nil end node_cache[:directive][start_index] = r0 r0 end module UriRef0 def uri elements[1] end end def _nt_uri_ref start_index = index if node_cache[:uri_ref].has_key?(index) cached = node_cache[:uri_ref][index] @index = cached.interval.end if cached return cached end i0 = index r1 = _nt_qname if r1 r0 = r1 else i2, s2 = index, [] if has_terminal?("<", false, index) r3 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("<") r3 = nil end s2 << r3 if r3 r4 = _nt_URI_Reference s2 << r4 if r4 if has_terminal?(">", false, index) r5 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(">") r5 = nil end s2 << r5 end end if s2.last r2 = instantiate_node(SyntaxNode,input, i2...index, s2) r2.extend(UriRef0) else @index = i2 r2 = nil end if r2 r0 = r2 else @index = i0 r0 = nil end end node_cache[:uri_ref][start_index] = r0 r0 end module Qname0 def nprefix elements[0] end def localname elements[2] end end module Qname1 def localname elements[1] end end def _nt_qname start_index = index if node_cache[:qname].has_key?(index) cached = node_cache[:qname][index] @index = cached.interval.end if cached return cached end i0 = index i1, s1 = index, [] r2 = _nt_nprefix s1 << r2 if r2 if has_terminal?(":", false, index) r3 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(":") r3 = nil end s1 << r3 if r3 r4 = _nt_localname s1 << r4 end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(Qname0) else @index = i1 r1 = nil end if r1 r0 = r1 else i5, s5 = index, [] if has_terminal?(':', false, index) r6 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(':') r6 = nil end s5 << r6 if r6 r7 = _nt_localname s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Qname1) else @index = i5 r5 = nil end if r5 r0 = r5 else @index = i0 r0 = nil end end node_cache[:qname][start_index] = r0 r0 end def _nt_object start_index = index if node_cache[:object].has_key?(index) cached = node_cache[:object][index] @index = cached.interval.end if cached return cached end i0 = index r1 = _nt_subject if r1 r0 = r1 else r2 = _nt_literal if r2 r0 = r2 else @index = i0 r0 = nil end end node_cache[:object][start_index] = r0 r0 end module Literal0 def uri elements[1] end end module Literal1 def language elements[1] end end module Literal2 end def _nt_literal start_index = index if node_cache[:literal].has_key?(index) cached = node_cache[:literal][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] i1 = index r2 = _nt_string_single if r2 r1 = r2 else r3 = _nt_string_multi if r3 r1 = r3 else @index = i1 r1 = nil end end s0 << r1 if r1 i5 = index i6, s6 = index, [] if has_terminal?("^^<", false, index) r7 = instantiate_node(SyntaxNode,input, index...(index + 3)) @index += 3 else terminal_parse_failure("^^<") r7 = nil end s6 << r7 if r7 r8 = _nt_URI_Reference s6 << r8 if r8 if has_terminal?(">", false, index) r9 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure(">") r9 = nil end s6 << r9 end end if s6.last r6 = instantiate_node(SyntaxNode,input, i6...index, s6) r6.extend(Literal0) else @index = i6 r6 = nil end if r6 r5 = r6 else i10, s10 = index, [] if has_terminal?("@", false, index) r11 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("@") r11 = nil end s10 << r11 if r11 r12 = _nt_language s10 << r12 end if s10.last r10 = instantiate_node(SyntaxNode,input, i10...index, s10) r10.extend(Literal1) else @index = i10 r10 = nil end if r10 r5 = r10 else @index = i5 r5 = nil end end if r5 r4 = r5 else r4 = instantiate_node(SyntaxNode,input, index...index) end s0 << r4 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Literal2) else @index = i0 r0 = nil end node_cache[:literal][start_index] = r0 r0 end module Language0 end module Language1 end def _nt_language start_index = index if node_cache[:language].has_key?(index) cached = node_cache[:language][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] s1, i1 = [], index loop do if has_terminal?('\G[a-z]', true, index) r2 = true @index += 1 else r2 = nil end if r2 s1 << r2 else break end end if s1.empty? @index = i1 r1 = nil else r1 = instantiate_node(SyntaxNode,input, i1...index, s1) end s0 << r1 if r1 s3, i3 = [], index loop do i4, s4 = index, [] if has_terminal?("-", false, index) r5 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("-") r5 = nil end s4 << r5 if r5 s6, i6 = [], index loop do if has_terminal?('\G[a-z0-9]', true, index) r7 = true @index += 1 else r7 = nil end if r7 s6 << r7 else break end end if s6.empty? @index = i6 r6 = nil else r6 = instantiate_node(SyntaxNode,input, i6...index, s6) end s4 << r6 end if s4.last r4 = instantiate_node(SyntaxNode,input, i4...index, s4) r4.extend(Language0) else @index = i4 r4 = nil end if r4 s3 << r4 else break end end r3 = instantiate_node(SyntaxNode,input, i3...index, s3) s0 << r3 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Language1) else @index = i0 r0 = nil end node_cache[:language][start_index] = r0 r0 end def _nt_localname start_index = index if node_cache[:localname].has_key?(index) cached = node_cache[:localname][index] @index = cached.interval.end if cached return cached end r0 = _nt_fragid node_cache[:localname][start_index] = r0 r0 end def _nt_URI_Reference start_index = index if node_cache[:URI_Reference].has_key?(index) cached = node_cache[:URI_Reference][index] @index = cached.interval.end if cached return cached end s0, i0 = [], index loop do if has_terminal?('\G[^{}<>]', true, index) r1 = true @index += 1 else r1 = nil end if r1 s0 << r1 else break end end r0 = instantiate_node(SyntaxNode,input, i0...index, s0) node_cache[:URI_Reference][start_index] = r0 r0 end module Nprefix0 end def _nt_nprefix start_index = index if node_cache[:nprefix].has_key?(index) cached = node_cache[:nprefix][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] i1 = index r2 = _nt_alpha if r2 r1 = r2 else if has_terminal?("_", false, index) r3 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("_") r3 = nil end if r3 r1 = r3 else @index = i1 r1 = nil end end s0 << r1 if r1 s4, i4 = [], index loop do r5 = _nt_alphanumeric if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Nprefix0) else @index = i0 r0 = nil end node_cache[:nprefix][start_index] = r0 r0 end module Fragid0 def alpha elements[0] end end def _nt_fragid start_index = index if node_cache[:fragid].has_key?(index) cached = node_cache[:fragid][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] r1 = _nt_alpha s0 << r1 if r1 s2, i2 = [], index loop do r3 = _nt_alphanumeric if r3 s2 << r3 else break end end r2 = instantiate_node(SyntaxNode,input, i2...index, s2) s0 << r2 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Fragid0) else @index = i0 r0 = nil end node_cache[:fragid][start_index] = r0 r0 end def _nt_alpha start_index = index if node_cache[:alpha].has_key?(index) cached = node_cache[:alpha][index] @index = cached.interval.end if cached return cached end if has_terminal?('\G[a-zA-Z]', true, index) r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else r0 = nil end node_cache[:alpha][start_index] = r0 r0 end def _nt_alphanumeric start_index = index if node_cache[:alphanumeric].has_key?(index) cached = node_cache[:alphanumeric][index] @index = cached.interval.end if cached return cached end i0 = index r1 = _nt_alpha if r1 r0 = r1 else if has_terminal?('\G[0-9]', true, index) r2 = true @index += 1 else r2 = nil end if r2 r0 = r2 else if has_terminal?("_", false, index) r3 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("_") r3 = nil end if r3 r0 = r3 else @index = i0 r0 = nil end end end node_cache[:alphanumeric][start_index] = r0 r0 end def _nt_space start_index = index if node_cache[:space].has_key?(index) cached = node_cache[:space][index] @index = cached.interval.end if cached return cached end i0 = index s1, i1 = [], index loop do if has_terminal?('\G[ \\t\\n\\r]', true, index) r2 = true @index += 1 else r2 = nil end if r2 s1 << r2 else break end end if s1.empty? @index = i1 r1 = nil else r1 = instantiate_node(SyntaxNode,input, i1...index, s1) end if r1 r0 = r1 else r3 = _nt_comment if r3 r0 = r3 else @index = i0 r0 = nil end end node_cache[:space][start_index] = r0 r0 end module Comment0 end module Comment1 end def _nt_comment start_index = index if node_cache[:comment].has_key?(index) cached = node_cache[:comment][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] if has_terminal?('#', false, index) r1 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('#') r1 = nil end s0 << r1 if r1 s2, i2 = [], index loop do i3, s3 = index, [] i4 = index if has_terminal?('\G[\\n\\r]', true, index) r5 = true @index += 1 else r5 = nil end if r5 r4 = nil else @index = i4 r4 = instantiate_node(SyntaxNode,input, index...index) end s3 << r4 if r4 if index < input_length r6 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("any character") r6 = nil end s3 << r6 end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(Comment0) else @index = i3 r3 = nil end if r3 s2 << r3 else break end end r2 = instantiate_node(SyntaxNode,input, i2...index, s2) s0 << r2 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Comment1) else @index = i0 r0 = nil end node_cache[:comment][start_index] = r0 r0 end module StringSingle0 end module StringSingle1 end def _nt_string_single start_index = index if node_cache[:string_single].has_key?(index) cached = node_cache[:string_single][index] @index = cached.interval.end if cached return cached end i0 = index i1, s1 = index, [] if has_terminal?('""', false, index) r2 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure('""') r2 = nil end s1 << r2 if r2 i3 = index if has_terminal?('\G["]', true, index) r4 = true @index += 1 else r4 = nil end if r4 r3 = nil else @index = i3 r3 = instantiate_node(SyntaxNode,input, index...index) end s1 << r3 end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(StringSingle0) else @index = i1 r1 = nil end if r1 r0 = r1 else i5, s5 = index, [] if has_terminal?('"', false, index) r6 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('"') r6 = nil end s5 << r6 if r6 s7, i7 = [], index loop do r8 = _nt_string_single_char if r8 s7 << r8 else break end end if s7.empty? @index = i7 r7 = nil else r7 = instantiate_node(SyntaxNode,input, i7...index, s7) end s5 << r7 if r7 if has_terminal?('"', false, index) r9 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('"') r9 = nil end s5 << r9 end end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(StringSingle1) else @index = i5 r5 = nil end if r5 r0 = r5 else @index = i0 r0 = nil end end node_cache[:string_single][start_index] = r0 r0 end module StringSingleChar0 end module StringSingleChar1 def hexdigit1 elements[1] end def hexdigit2 elements[2] end def hexdigit3 elements[3] end def hexdigit4 elements[4] end end module StringSingleChar2 def hexdigit1 elements[2] end def hexdigit2 elements[3] end def hexdigit3 elements[4] end def hexdigit4 elements[5] end def hexdigit5 elements[6] end def hexdigit6 elements[7] end end module StringSingleChar3 end def _nt_string_single_char start_index = index if node_cache[:string_single_char].has_key?(index) cached = node_cache[:string_single_char][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] i1 = index if has_terminal?('\G["\\n\\r]', true, index) r2 = true @index += 1 else r2 = nil end if r2 r1 = nil else @index = i1 r1 = instantiate_node(SyntaxNode,input, index...index) end s0 << r1 if r1 i3 = index i4 = index i5, s5 = index, [] if has_terminal?("\\", false, index) r6 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("\\") r6 = nil end s5 << r6 if r6 if has_terminal?('\G[\\\\\\"nrt]', true, index) r7 = true @index += 1 else r7 = nil end s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(StringSingleChar0) else @index = i5 r5 = nil end if r5 r4 = r5 else i8, s8 = index, [] if has_terminal?("u", false, index) r9 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("u") r9 = nil end s8 << r9 if r9 r10 = _nt_hexdigit s8 << r10 if r10 r11 = _nt_hexdigit s8 << r11 if r11 r12 = _nt_hexdigit s8 << r12 if r12 r13 = _nt_hexdigit s8 << r13 end end end end if s8.last r8 = instantiate_node(SyntaxNode,input, i8...index, s8) r8.extend(StringSingleChar1) else @index = i8 r8 = nil end if r8 r4 = r8 else i14, s14 = index, [] if has_terminal?("U", false, index) r15 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("U") r15 = nil end s14 << r15 if r15 if has_terminal?("00", false, index) r16 = instantiate_node(SyntaxNode,input, index...(index + 2)) @index += 2 else terminal_parse_failure("00") r16 = nil end s14 << r16 if r16 r17 = _nt_hexdigit s14 << r17 if r17 r18 = _nt_hexdigit s14 << r18 if r18 r19 = _nt_hexdigit s14 << r19 if r19 r20 = _nt_hexdigit s14 << r20 if r20 r21 = _nt_hexdigit s14 << r21 if r21 r22 = _nt_hexdigit s14 << r22 end end end end end end end if s14.last r14 = instantiate_node(SyntaxNode,input, i14...index, s14) r14.extend(StringSingleChar2) else @index = i14 r14 = nil end if r14 r4 = r14 else @index = i4 r4 = nil end end end if r4 r3 = r4 else if index < input_length r23 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("any character") r23 = nil end if r23 r3 = r23 else @index = i3 r3 = nil end end s0 << r3 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(StringSingleChar3) else @index = i0 r0 = nil end node_cache[:string_single_char][start_index] = r0 r0 end def _nt_hexdigit start_index = index if node_cache[:hexdigit].has_key?(index) cached = node_cache[:hexdigit][index] @index = cached.interval.end if cached return cached end if has_terminal?('\G[0-9a-fA-F]', true, index) r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else r0 = nil end node_cache[:hexdigit][start_index] = r0 r0 end module StringMulti0 end def _nt_string_multi start_index = index if node_cache[:string_multi].has_key?(index) cached = node_cache[:string_multi][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] if has_terminal?('"""', false, index) r1 = instantiate_node(SyntaxNode,input, index...(index + 3)) @index += 3 else terminal_parse_failure('"""') r1 = nil end s0 << r1 if r1 s2, i2 = [], index loop do r3 = _nt_string_multi_char if r3 s2 << r3 else break end end r2 = instantiate_node(SyntaxNode,input, i2...index, s2) s0 << r2 if r2 if has_terminal?('"""', false, index) r4 = instantiate_node(SyntaxNode,input, index...(index + 3)) @index += 3 else terminal_parse_failure('"""') r4 = nil end s0 << r4 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(StringMulti0) else @index = i0 r0 = nil end node_cache[:string_multi][start_index] = r0 r0 end module StringMultiChar0 end def _nt_string_multi_char start_index = index if node_cache[:string_multi_char].has_key?(index) cached = node_cache[:string_multi_char][index] @index = cached.interval.end if cached return cached end i0, s0 = index, [] i1 = index if has_terminal?('"""', false, index) r2 = instantiate_node(SyntaxNode,input, index...(index + 3)) @index += 3 else terminal_parse_failure('"""') r2 = nil end if r2 r1 = nil else @index = i1 r1 = instantiate_node(SyntaxNode,input, index...index) end s0 << r1 if r1 if index < input_length r3 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure("any character") r3 = nil end s0 << r3 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(StringMultiChar0) else @index = i0 r0 = nil end node_cache[:string_multi_char][start_index] = r0 r0 end end class N3GrammerParser < Treetop::Runtime::CompiledParser include N3Grammer end