Method: Treetop::Compiler::Metagrammar#_nt_declaration_sequence

Defined in:
lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb

#_nt_declaration_sequenceObject



571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
# File 'lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb', line 571

def _nt_declaration_sequence
  start_index = index
  if node_cache[:declaration_sequence].has_key?(index)
    cached = node_cache[:declaration_sequence][index]
    @index = cached.interval.end if cached
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_declaration
  s1 << r2
  if r2
    s3, i3 = [], index
    loop do
      i4, s4 = index, []
      r5 = _nt_space
      s4 << r5
      if r5
        r6 = _nt_declaration
        s4 << r6
      end
      if s4.last
        r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
        r4.extend(DeclarationSequence0)
      else
        self.index = i4
        r4 = nil
      end
      if r4
        s3 << r4
      else
        break
      end
    end
    r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(DeclarationSequence,input, i1...index, s1)
    r1.extend(DeclarationSequence1)
    r1.extend(DeclarationSequence2)
  else
    self.index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    if input.index('', index) == index
      r7 = instantiate_node(SyntaxNode,input, index...(index + 0))
      r7.extend(DeclarationSequence3)
      @index += 0
    else
      terminal_parse_failure('')
      r7 = nil
    end
    if r7
      r0 = r7
    else
      self.index = i0
      r0 = nil
    end
  end

  node_cache[:declaration_sequence][start_index] = r0

  return r0
end