# Autogenerated from a Treetop grammar. Edits may be lost. module OrigenSTIL module Syntax module Grammar include Treetop::Runtime def root @root ||= :stil_source end module StilSource0 def to_ast n :stil_source, *elements_to_ast end end def _nt_stil_source start_index = index if node_cache[:stil_source].has_key?(index) cached = node_cache[:stil_source][index] if cached node_cache[:stil_source][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do r1 = _nt_stil_source_items if r1 s0 << r1 else break end end if s0.empty? @index = i0 r0 = nil else r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(StilSource0) r0.extend(StilSource0) end node_cache[:stil_source][start_index] = r0 r0 end def _nt_stil_source_items start_index = index if node_cache[:stil_source_items].has_key?(index) cached = node_cache[:stil_source_items][index] if cached node_cache[:stil_source_items][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_S if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_N if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_block_comment if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else r4 = _nt_one_line_comment if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else r5 = _nt_stil_version if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 else r6 = _nt_header_block if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 else r7 = _nt_signals_block if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 else r8 = _nt_signal_groups_block if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r0 = r8 else r9 = _nt_timing_block if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r0 = r9 else r10 = _nt_pattern_exec_block if r10 r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true r0 = r10 else r11 = _nt_pattern_burst_block if r11 r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true r0 = r11 else @index = i0 r0 = nil end end end end end end end end end end end node_cache[:stil_source_items][start_index] = r0 r0 end module StilVersion0 def S elements[1] end def major elements[2] end def minor elements[4] end def s elements[5] end end module StilVersion1 def to_ast n :version, major.text_value.to_i, minor.text_value.to_i end end def _nt_stil_version start_index = index if node_cache[:stil_version].has_key?(index) cached = node_cache[:stil_version][index] if cached node_cache[:stil_version][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("STIL", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"STIL"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) r3 = true @index += 1 else terminal_parse_failure('[0-9]') r3 = nil end s0 << r3 if r3 if (match_len = has_terminal?(".", false, index)) r4 = true @index += match_len else terminal_parse_failure('"."') r4 = nil end s0 << r4 if r4 if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) r5 = true @index += 1 else terminal_parse_failure('[0-9]') r5 = nil end s0 << r5 if r5 r6 = _nt_s s0 << r6 if r6 if (match_len = has_terminal?(";", false, index)) r7 = true @index += match_len else terminal_parse_failure('";"') r7 = nil end s0 << r7 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(StilVersion0) r0.extend(StilVersion1) else @index = i0 r0 = nil end node_cache[:stil_version][start_index] = r0 r0 end module SigrefExpr0 def simple_name elements[0] end end module SigrefExpr1 def s1 elements[1] end def expression_subset elements[2] end def s2 elements[3] end end module SigrefExpr2 def to_ast n :sigref_expr, *elements_to_ast end end def _nt_sigref_expr start_index = index if node_cache[:sigref_expr].has_key?(index) cached = node_cache[:sigref_expr][index] if cached node_cache[:sigref_expr][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index i1, s1 = index, [] r2 = _nt_name s1 << r2 if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(SigrefExpr0) else @index = i1 r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(SigrefExpr2) r0.extend(SigrefExpr2) else i3, s3 = index, [] if (match_len = has_terminal?("'", false, index)) r4 = true @index += match_len else terminal_parse_failure('"\'"') r4 = nil end s3 << r4 if r4 r5 = _nt_s s3 << r5 if r5 r6 = _nt_expression_subset s3 << r6 if r6 r7 = _nt_s s3 << r7 if r7 if (match_len = has_terminal?("'", false, index)) r8 = true @index += match_len else terminal_parse_failure('"\'"') r8 = nil end s3 << r8 end end end end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(SigrefExpr1) else @index = i3 r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 r0.extend(SigrefExpr2) r0.extend(SigrefExpr2) else @index = i0 r0 = nil end end node_cache[:sigref_expr][start_index] = r0 r0 end def _nt_expression_subset start_index = index if node_cache[:expression_subset].has_key?(index) cached = node_cache[:expression_subset][index] if cached node_cache[:expression_subset][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_add if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_subtract if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_name if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else r4 = _nt_paren_expression if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else @index = i0 r0 = nil end end end end node_cache[:expression_subset][start_index] = r0 r0 end def _nt_expression start_index = index if node_cache[:expression].has_key?(index) cached = node_cache[:expression][index] if cached node_cache[:expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_add if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_subtract if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_multiply if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else r4 = _nt_divide if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else r5 = _nt_number_with_unit if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 else r6 = _nt_number if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 else r7 = _nt_name if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 else r8 = _nt_paren_expression if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r0 = r8 else @index = i0 r0 = nil end end end end end end end end node_cache[:expression][start_index] = r0 r0 end def _nt_terminal start_index = index if node_cache[:terminal].has_key?(index) cached = node_cache[:terminal][index] if cached node_cache[:terminal][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_number_with_unit if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_number if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_name if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else r4 = _nt_paren_expression if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else @index = i0 r0 = nil end end end end node_cache[:terminal][start_index] = r0 r0 end module Add0 def terminal elements[0] end def s1 elements[1] end def s2 elements[3] end def expression elements[4] end end module Add1 def to_ast n :add, *elements_to_ast end end def _nt_add start_index = index if node_cache[:add].has_key?(index) cached = node_cache[:add][index] if cached node_cache[:add][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_terminal s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("+", false, index)) r3 = true @index += match_len else terminal_parse_failure('"+"') r3 = nil end s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 r5 = _nt_expression s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Add0) r0.extend(Add1) else @index = i0 r0 = nil end node_cache[:add][start_index] = r0 r0 end module Subtract0 def terminal elements[0] end def s1 elements[1] end def s2 elements[3] end def expression elements[4] end end module Subtract1 def to_ast n :subtract, *elements_to_ast end end def _nt_subtract start_index = index if node_cache[:subtract].has_key?(index) cached = node_cache[:subtract][index] if cached node_cache[:subtract][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_terminal s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("-", false, index)) r3 = true @index += match_len else terminal_parse_failure('"-"') r3 = nil end s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 r5 = _nt_expression s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Subtract0) r0.extend(Subtract1) else @index = i0 r0 = nil end node_cache[:subtract][start_index] = r0 r0 end module Multiply0 def terminal elements[0] end def s1 elements[1] end def s2 elements[3] end def expression elements[4] end end module Multiply1 def to_ast n :multiply, *elements_to_ast end end def _nt_multiply start_index = index if node_cache[:multiply].has_key?(index) cached = node_cache[:multiply][index] if cached node_cache[:multiply][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_terminal s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("*", false, index)) r3 = true @index += match_len else terminal_parse_failure('"*"') r3 = nil end s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 r5 = _nt_expression s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Multiply0) r0.extend(Multiply1) else @index = i0 r0 = nil end node_cache[:multiply][start_index] = r0 r0 end module Divide0 def terminal elements[0] end def s1 elements[1] end def s2 elements[3] end def expression elements[4] end end module Divide1 def to_ast n :divide, *elements_to_ast end end def _nt_divide start_index = index if node_cache[:divide].has_key?(index) cached = node_cache[:divide][index] if cached node_cache[:divide][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_terminal s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("/", false, index)) r3 = true @index += match_len else terminal_parse_failure('"/"') r3 = nil end s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 r5 = _nt_expression s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Divide0) r0.extend(Divide1) else @index = i0 r0 = nil end node_cache[:divide][start_index] = r0 r0 end module ParenExpression0 def s1 elements[1] end def expression elements[2] end def s2 elements[3] end end module ParenExpression1 def to_ast n :parens, *elements_to_ast end end def _nt_paren_expression start_index = index if node_cache[:paren_expression].has_key?(index) cached = node_cache[:paren_expression][index] if cached node_cache[:paren_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("(", false, index)) r1 = true @index += match_len else terminal_parse_failure('"("') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r3 = _nt_expression s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(")", false, index)) r5 = true @index += match_len else terminal_parse_failure('")"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(ParenExpression0) r0.extend(ParenExpression1) else @index = i0 r0 = nil end node_cache[:paren_expression][start_index] = r0 r0 end module TimeExpr0 def s1 elements[1] end def expression elements[2] end def s2 elements[3] end end module TimeExpr1 def to_ast n :time_expr, *elements_to_ast end end def _nt_time_expr start_index = index if node_cache[:time_expr].has_key?(index) cached = node_cache[:time_expr][index] if cached node_cache[:time_expr][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("'", false, index)) r1 = true @index += match_len else terminal_parse_failure('"\'"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r3 = _nt_expression s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?("'", false, index)) r5 = true @index += match_len else terminal_parse_failure('"\'"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(TimeExpr0) r0.extend(TimeExpr1) else @index = i0 r0 = nil end node_cache[:time_expr][start_index] = r0 r0 end module NumberWithUnit0 def value elements[0] end def prefix elements[1] end def units elements[2] end end module NumberWithUnit1 def to_ast children = [] children << n(:value, value.text_value.to_i) children << n(:prefix, prefix.text_value) if respond_to?(:prefix) children << n(:units, units.text_value) n :number_with_unit, *children end end def _nt_number_with_unit start_index = index if node_cache[:number_with_unit].has_key?(index) cached = node_cache[:number_with_unit][index] if cached node_cache[:number_with_unit][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] s1, i1 = [], index loop do r2 = _nt_number 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 r4 = _nt_engineering_prefix if r4 r3 = r4 else r3 = instantiate_node(SyntaxNode,input, index...index) end s0 << r3 if r3 r5 = _nt_si_unit s0 << r5 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(NumberWithUnit0) r0.extend(NumberWithUnit1) else @index = i0 r0 = nil end node_cache[:number_with_unit][start_index] = r0 r0 end def _nt_si_unit start_index = index if node_cache[:si_unit].has_key?(index) cached = node_cache[:si_unit][index] if cached node_cache[:si_unit][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if (match_len = has_terminal?("A", false, index)) r1 = true @index += match_len else terminal_parse_failure('"A"') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if (match_len = has_terminal?("Cel", false, index)) r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Cel"') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else if (match_len = has_terminal?("F", false, index)) r3 = true @index += match_len else terminal_parse_failure('"F"') r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else if (match_len = has_terminal?("H", false, index)) r4 = true @index += match_len else terminal_parse_failure('"H"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else if (match_len = has_terminal?("Hz", false, index)) r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Hz"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 else if (match_len = has_terminal?("m", false, index)) r6 = true @index += match_len else terminal_parse_failure('"m"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 else if (match_len = has_terminal?("Ohm", false, index)) r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Ohm"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 else if (match_len = has_terminal?("s", false, index)) r8 = true @index += match_len else terminal_parse_failure('"s"') r8 = nil end if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r0 = r8 else if (match_len = has_terminal?("W", false, index)) r9 = true @index += match_len else terminal_parse_failure('"W"') r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r0 = r9 else if (match_len = has_terminal?("V", false, index)) r10 = true @index += match_len else terminal_parse_failure('"V"') r10 = nil end if r10 r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true r0 = r10 else @index = i0 r0 = nil end end end end end end end end end end node_cache[:si_unit][start_index] = r0 r0 end def _nt_engineering_prefix start_index = index if node_cache[:engineering_prefix].has_key?(index) cached = node_cache[:engineering_prefix][index] if cached node_cache[:engineering_prefix][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if (match_len = has_terminal?("E", false, index)) r1 = true @index += match_len else terminal_parse_failure('"E"') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if (match_len = has_terminal?("P", false, index)) r2 = true @index += match_len else terminal_parse_failure('"P"') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else if (match_len = has_terminal?("T", false, index)) r3 = true @index += match_len else terminal_parse_failure('"T"') r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else if (match_len = has_terminal?("G", false, index)) r4 = true @index += match_len else terminal_parse_failure('"G"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else if (match_len = has_terminal?("M", false, index)) r5 = true @index += match_len else terminal_parse_failure('"M"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 else if (match_len = has_terminal?("k", false, index)) r6 = true @index += match_len else terminal_parse_failure('"k"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 else if (match_len = has_terminal?("m", false, index)) r7 = true @index += match_len else terminal_parse_failure('"m"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 else if (match_len = has_terminal?("u", false, index)) r8 = true @index += match_len else terminal_parse_failure('"u"') r8 = nil end if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r0 = r8 else if (match_len = has_terminal?("n", false, index)) r9 = true @index += match_len else terminal_parse_failure('"n"') r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r0 = r9 else if (match_len = has_terminal?("p", false, index)) r10 = true @index += match_len else terminal_parse_failure('"p"') r10 = nil end if r10 r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true r0 = r10 else if (match_len = has_terminal?("f", false, index)) r11 = true @index += match_len else terminal_parse_failure('"f"') r11 = nil end if r11 r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true r0 = r11 else if (match_len = has_terminal?("a", false, index)) r12 = true @index += match_len else terminal_parse_failure('"a"') r12 = nil end if r12 r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true r0 = r12 else @index = i0 r0 = nil end end end end end end end end end end end end node_cache[:engineering_prefix][start_index] = r0 r0 end module HeaderBlock0 def s1 elements[1] end def s2 elements[3] end def s3 elements[5] end def s4 elements[7] end def s5 elements[9] end def s6 elements[11] end end module HeaderBlock1 def to_ast n :header, *elements_to_ast end end def _nt_header_block start_index = index if node_cache[:header_block].has_key?(index) cached = node_cache[:header_block][index] if cached node_cache[:header_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Header", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Header"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 r6 = _nt_title if r6 r5 = r6 else r5 = instantiate_node(SyntaxNode,input, index...index) end s0 << r5 if r5 r7 = _nt_s s0 << r7 if r7 r9 = _nt_date if r9 r8 = r9 else r8 = instantiate_node(SyntaxNode,input, index...index) end s0 << r8 if r8 r10 = _nt_s s0 << r10 if r10 r12 = _nt_source if r12 r11 = r12 else r11 = instantiate_node(SyntaxNode,input, index...index) end s0 << r11 if r11 r13 = _nt_s s0 << r13 if r13 r15 = _nt_history if r15 r14 = r15 else r14 = instantiate_node(SyntaxNode,input, index...index) end s0 << r14 if r14 r16 = _nt_s s0 << r16 if r16 if (match_len = has_terminal?("}", false, index)) r17 = true @index += match_len else terminal_parse_failure('"}"') r17 = nil end s0 << r17 end end end end end end end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(HeaderBlock0) r0.extend(HeaderBlock1) else @index = i0 r0 = nil end node_cache[:header_block][start_index] = r0 r0 end module Title0 end module Title1 def S elements[1] end def value elements[3] end def s elements[5] end end module Title2 def to_ast n :title, value.text_value end end def _nt_title start_index = index if node_cache[:title].has_key?(index) cached = node_cache[:title][index] if cached node_cache[:title][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Title", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Title"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 if (match_len = has_terminal?('"', false, index)) r3 = true @index += match_len else terminal_parse_failure('\'"\'') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] i6 = index if (match_len = has_terminal?('"', false, index)) r7 = true @index += match_len else terminal_parse_failure('\'"\'') r7 = nil end if r7 @index = i6 r6 = nil terminal_parse_failure('\'"\'', true) else @terminal_failures.pop @index = i6 r6 = instantiate_node(SyntaxNode,input, index...index) end s5 << r6 if r6 if index < input_length r8 = true @index += 1 else terminal_parse_failure("any character") r8 = nil end s5 << r8 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Title0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 if (match_len = has_terminal?('"', false, index)) r9 = true @index += match_len else terminal_parse_failure('\'"\'') r9 = nil end s0 << r9 if r9 r10 = _nt_s s0 << r10 if r10 if (match_len = has_terminal?(";", false, index)) r11 = true @index += match_len else terminal_parse_failure('";"') r11 = nil end s0 << r11 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Title1) r0.extend(Title2) else @index = i0 r0 = nil end node_cache[:title][start_index] = r0 r0 end module Date0 end module Date1 def S elements[1] end def value elements[3] end def s elements[5] end end module Date2 def to_ast n :date, value.text_value end end def _nt_date start_index = index if node_cache[:date].has_key?(index) cached = node_cache[:date][index] if cached node_cache[:date][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Date", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Date"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 if (match_len = has_terminal?('"', false, index)) r3 = true @index += match_len else terminal_parse_failure('\'"\'') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] i6 = index if (match_len = has_terminal?('"', false, index)) r7 = true @index += match_len else terminal_parse_failure('\'"\'') r7 = nil end if r7 @index = i6 r6 = nil terminal_parse_failure('\'"\'', true) else @terminal_failures.pop @index = i6 r6 = instantiate_node(SyntaxNode,input, index...index) end s5 << r6 if r6 if index < input_length r8 = true @index += 1 else terminal_parse_failure("any character") r8 = nil end s5 << r8 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Date0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 if (match_len = has_terminal?('"', false, index)) r9 = true @index += match_len else terminal_parse_failure('\'"\'') r9 = nil end s0 << r9 if r9 r10 = _nt_s s0 << r10 if r10 if (match_len = has_terminal?(";", false, index)) r11 = true @index += match_len else terminal_parse_failure('";"') r11 = nil end s0 << r11 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Date1) r0.extend(Date2) else @index = i0 r0 = nil end node_cache[:date][start_index] = r0 r0 end module Source0 end module Source1 def S elements[1] end def value elements[3] end def s elements[5] end end module Source2 def to_ast n :date, value.text_value end end def _nt_source start_index = index if node_cache[:source].has_key?(index) cached = node_cache[:source][index] if cached node_cache[:source][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Source", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Source"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 if (match_len = has_terminal?('"', false, index)) r3 = true @index += match_len else terminal_parse_failure('\'"\'') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] i6 = index if (match_len = has_terminal?('"', false, index)) r7 = true @index += match_len else terminal_parse_failure('\'"\'') r7 = nil end if r7 @index = i6 r6 = nil terminal_parse_failure('\'"\'', true) else @terminal_failures.pop @index = i6 r6 = instantiate_node(SyntaxNode,input, index...index) end s5 << r6 if r6 if index < input_length r8 = true @index += 1 else terminal_parse_failure("any character") r8 = nil end s5 << r8 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Source0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 if (match_len = has_terminal?('"', false, index)) r9 = true @index += match_len else terminal_parse_failure('\'"\'') r9 = nil end s0 << r9 if r9 r10 = _nt_s s0 << r10 if r10 if (match_len = has_terminal?(";", false, index)) r11 = true @index += match_len else terminal_parse_failure('";"') r11 = nil end s0 << r11 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Source1) r0.extend(Source2) else @index = i0 r0 = nil end node_cache[:source][start_index] = r0 r0 end module History0 def s elements[0] end def annotation elements[1] end end module History1 def s1 elements[1] end def s2 elements[4] end end module History2 def to_ast n :history, *elements_to_ast end end def _nt_history start_index = index if node_cache[:history].has_key?(index) cached = node_cache[:history][index] if cached node_cache[:history][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("History", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"History"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_annotation s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(History0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?("}", false, index)) r9 = true @index += match_len else terminal_parse_failure('"}"') r9 = nil end s0 << r9 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(History1) r0.extend(History2) else @index = i0 r0 = nil end node_cache[:history][start_index] = r0 r0 end module Annotation0 end module Annotation1 def s1 elements[1] end def value elements[3] end def s2 elements[4] end end module Annotation2 def to_ast n :annotation, value.text_value end end def _nt_annotation start_index = index if node_cache[:annotation].has_key?(index) cached = node_cache[:annotation][index] if cached node_cache[:annotation][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Ann", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Ann"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{*", false, index)) r3 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"{*"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] i6 = index if (match_len = has_terminal?("*}", false, index)) r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"*}"') r7 = nil end if r7 @index = i6 r6 = nil terminal_parse_failure('"*}"', true) else @terminal_failures.pop @index = i6 r6 = instantiate_node(SyntaxNode,input, index...index) end s5 << r6 if r6 if index < input_length r8 = true @index += 1 else terminal_parse_failure("any character") r8 = nil end s5 << r8 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Annotation0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 r9 = _nt_s s0 << r9 if r9 if (match_len = has_terminal?("*}", false, index)) r10 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"*}"') r10 = nil end s0 << r10 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Annotation1) r0.extend(Annotation2) else @index = i0 r0 = nil end node_cache[:annotation][start_index] = r0 r0 end module SignalsBlock0 def s elements[0] end def signal elements[1] end end module SignalsBlock1 def s1 elements[1] end def s2 elements[4] end end module SignalsBlock2 def to_ast n :signals, *elements_to_ast end end def _nt_signals_block start_index = index if node_cache[:signals_block].has_key?(index) cached = node_cache[:signals_block][index] if cached node_cache[:signals_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Signals", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Signals"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_signal s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(SignalsBlock0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?("}", false, index)) r9 = true @index += match_len else terminal_parse_failure('"}"') r9 = nil end s0 << r9 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(SignalsBlock1) r0.extend(SignalsBlock2) else @index = i0 r0 = nil end node_cache[:signals_block][start_index] = r0 r0 end module Signal0 def signame elements[0] end def S elements[1] end def type elements[2] end def s elements[3] end end module Signal1 def s1 elements[1] end def s2 elements[3] end def s3 elements[5] end def s4 elements[7] end def s5 elements[9] end def s6 elements[11] end def s7 elements[13] end def s8 elements[15] end end module Signal2 def signame elements[0] end def S elements[1] end def type elements[2] end def s elements[3] end def properties elements[4] end end module Signal3 def to_ast n :signal, signame.text_value, type.text_value end end def _nt_signal start_index = index if node_cache[:signal].has_key?(index) cached = node_cache[:signal][index] if cached node_cache[:signal][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index i1, s1 = index, [] r2 = _nt_name s1 << r2 if r2 r3 = _nt_S s1 << r3 if r3 i4 = index if (match_len = has_terminal?("InOut", false, index)) r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"InOut"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r4 = r5 else if (match_len = has_terminal?("Out", false, index)) r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Out"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r4 = r6 else if (match_len = has_terminal?("In", false, index)) r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"In"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r4 = r7 else if (match_len = has_terminal?("Supply", false, index)) r8 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Supply"') r8 = nil end if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r4 = r8 else if (match_len = has_terminal?("Pseudo", false, index)) r9 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Pseudo"') r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r4 = r9 else @index = i4 r4 = nil end end end end end s1 << r4 if r4 r10 = _nt_s s1 << r10 if r10 if (match_len = has_terminal?(";", false, index)) r11 = true @index += match_len else terminal_parse_failure('";"') r11 = nil end s1 << r11 end end end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(Signal0) else @index = i1 r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(Signal3) r0.extend(Signal3) else i12, s12 = index, [] r13 = _nt_name s12 << r13 if r13 r14 = _nt_S s12 << r14 if r14 i15 = index if (match_len = has_terminal?("InOut", false, index)) r16 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"InOut"') r16 = nil end if r16 r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true r15 = r16 else if (match_len = has_terminal?("Out", false, index)) r17 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Out"') r17 = nil end if r17 r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true r15 = r17 else if (match_len = has_terminal?("In", false, index)) r18 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"In"') r18 = nil end if r18 r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true r15 = r18 else if (match_len = has_terminal?("Supply", false, index)) r19 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Supply"') r19 = nil end if r19 r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true r15 = r19 else if (match_len = has_terminal?("Pseudo", false, index)) r20 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Pseudo"') r20 = nil end if r20 r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true r15 = r20 else @index = i15 r15 = nil end end end end end s12 << r15 if r15 r21 = _nt_s s12 << r21 if r21 i22, s22 = index, [] if (match_len = has_terminal?("{", false, index)) r23 = true @index += match_len else terminal_parse_failure('"{"') r23 = nil end s22 << r23 if r23 r24 = _nt_s s22 << r24 if r24 r26 = _nt_termination if r26 r25 = r26 else r25 = instantiate_node(SyntaxNode,input, index...index) end s22 << r25 if r25 r27 = _nt_s s22 << r27 if r27 r29 = _nt_default_state if r29 r28 = r29 else r28 = instantiate_node(SyntaxNode,input, index...index) end s22 << r28 if r28 r30 = _nt_s s22 << r30 if r30 r32 = _nt_base if r32 r31 = r32 else r31 = instantiate_node(SyntaxNode,input, index...index) end s22 << r31 if r31 r33 = _nt_s s22 << r33 if r33 r35 = _nt_alignment if r35 r34 = r35 else r34 = instantiate_node(SyntaxNode,input, index...index) end s22 << r34 if r34 r36 = _nt_s s22 << r36 if r36 r38 = _nt_scan_in if r38 r37 = r38 else r37 = instantiate_node(SyntaxNode,input, index...index) end s22 << r37 if r37 r39 = _nt_s s22 << r39 if r39 r41 = _nt_scan_out if r41 r40 = r41 else r40 = instantiate_node(SyntaxNode,input, index...index) end s22 << r40 if r40 r42 = _nt_s s22 << r42 if r42 r44 = _nt_data_bit_count if r44 r43 = r44 else r43 = instantiate_node(SyntaxNode,input, index...index) end s22 << r43 if r43 r45 = _nt_s s22 << r45 if r45 if (match_len = has_terminal?("}", false, index)) r46 = true @index += match_len else terminal_parse_failure('"}"') r46 = nil end s22 << r46 end end end end end end end end end end end end end end end end if s22.last r22 = instantiate_node(SyntaxNode,input, i22...index, s22) r22.extend(Signal1) else @index = i22 r22 = nil end s12 << r22 end end end end if s12.last r12 = instantiate_node(SyntaxNode,input, i12...index, s12) r12.extend(Signal2) else @index = i12 r12 = nil end if r12 r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true r0 = r12 r0.extend(Signal3) r0.extend(Signal3) else @index = i0 r0 = nil end end node_cache[:signal][start_index] = r0 r0 end module Termination0 def S elements[1] end def value elements[2] end def s elements[3] end end module Termination1 def to_ast n :termination, value.text_value end end def _nt_termination start_index = index if node_cache[:termination].has_key?(index) cached = node_cache[:termination][index] if cached node_cache[:termination][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Termination", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Termination"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 i3 = index if (match_len = has_terminal?("TerminateHigh", false, index)) r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateHigh"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r3 = r4 else if (match_len = has_terminal?("TerminateLow", false, index)) r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateLow"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r3 = r5 else if (match_len = has_terminal?("TerminateOff", false, index)) r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateOff"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r3 = r6 else if (match_len = has_terminal?("TerminateUknown", false, index)) r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateUknown"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r3 = r7 else @index = i3 r3 = nil end end end end s0 << r3 if r3 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?(";", false, index)) r9 = true @index += match_len else terminal_parse_failure('";"') r9 = nil end s0 << r9 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Termination0) r0.extend(Termination1) else @index = i0 r0 = nil end node_cache[:termination][start_index] = r0 r0 end module DefaultState0 def S elements[1] end def value elements[2] end def s elements[3] end end module DefaultState1 def to_ast n :default_state, value.text_value end end def _nt_default_state start_index = index if node_cache[:default_state].has_key?(index) cached = node_cache[:default_state][index] if cached node_cache[:default_state][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("DefaultState", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"DefaultState"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 i3 = index if (match_len = has_terminal?("U", false, index)) r4 = true @index += match_len else terminal_parse_failure('"U"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r3 = r4 else if (match_len = has_terminal?("D", false, index)) r5 = true @index += match_len else terminal_parse_failure('"D"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r3 = r5 else if (match_len = has_terminal?("Z", false, index)) r6 = true @index += match_len else terminal_parse_failure('"Z"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r3 = r6 else if (match_len = has_terminal?("ForceUp", false, index)) r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"ForceUp"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r3 = r7 else if (match_len = has_terminal?("ForceDown", false, index)) r8 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"ForceDown"') r8 = nil end if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r3 = r8 else if (match_len = has_terminal?("ForceOff", false, index)) r9 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"ForceOff"') r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r3 = r9 else @index = i3 r3 = nil end end end end end end s0 << r3 if r3 r10 = _nt_s s0 << r10 if r10 if (match_len = has_terminal?(";", false, index)) r11 = true @index += match_len else terminal_parse_failure('";"') r11 = nil end s0 << r11 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(DefaultState0) r0.extend(DefaultState1) else @index = i0 r0 = nil end node_cache[:default_state][start_index] = r0 r0 end module Base0 def S1 elements[1] end def type elements[2] end def S2 elements[3] end def chars elements[4] end def s elements[5] end end module Base1 def to_ast n :base, type.text_value, chars.text_value end end def _nt_base start_index = index if node_cache[:base].has_key?(index) cached = node_cache[:base][index] if cached node_cache[:base][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Base", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Base"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 i3 = index if (match_len = has_terminal?("Hex", false, index)) r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Hex"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r3 = r4 else if (match_len = has_terminal?("Dec", false, index)) r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Dec"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r3 = r5 else @index = i3 r3 = nil end end s0 << r3 if r3 r6 = _nt_S s0 << r6 if r6 r7 = _nt_waveform_character_list s0 << r7 if r7 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?(";", false, index)) r9 = true @index += match_len else terminal_parse_failure('";"') r9 = nil end s0 << r9 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Base0) r0.extend(Base1) else @index = i0 r0 = nil end node_cache[:base][start_index] = r0 r0 end module Alignment0 def S elements[1] end def type elements[2] end def s elements[3] end end module Alignment1 def to_ast n :alignment, type.text_value end end def _nt_alignment start_index = index if node_cache[:alignment].has_key?(index) cached = node_cache[:alignment][index] if cached node_cache[:alignment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Alignment", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Alignment"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 i3 = index if (match_len = has_terminal?("MSB", false, index)) r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"MSB"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r3 = r4 else if (match_len = has_terminal?("LSB", false, index)) r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"LSB"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r3 = r5 else @index = i3 r3 = nil end end s0 << r3 if r3 r6 = _nt_s s0 << r6 if r6 if (match_len = has_terminal?(";", false, index)) r7 = true @index += match_len else terminal_parse_failure('";"') r7 = nil end s0 << r7 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Alignment0) r0.extend(Alignment1) else @index = i0 r0 = nil end node_cache[:alignment][start_index] = r0 r0 end module ScanIn0 def S elements[1] end def size elements[2] end def s elements[3] end end module ScanIn1 def to_ast n :scan_in, size.text_value.to_i end end def _nt_scan_in start_index = index if node_cache[:scan_in].has_key?(index) cached = node_cache[:scan_in][index] if cached node_cache[:scan_in][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("ScanIn", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"ScanIn"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_integer s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(ScanIn0) r0.extend(ScanIn1) else @index = i0 r0 = nil end node_cache[:scan_in][start_index] = r0 r0 end module ScanOut0 def S elements[1] end def size elements[2] end def s elements[3] end end module ScanOut1 def to_ast n :scan_out, size.text_value.to_i end end def _nt_scan_out start_index = index if node_cache[:scan_out].has_key?(index) cached = node_cache[:scan_out][index] if cached node_cache[:scan_out][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("ScanOut", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"ScanOut"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_integer s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(ScanOut0) r0.extend(ScanOut1) else @index = i0 r0 = nil end node_cache[:scan_out][start_index] = r0 r0 end module DataBitCount0 def S elements[1] end def size elements[2] end def s elements[3] end end module DataBitCount1 def to_ast n :data_bit_count, size.text_value.to_i end end def _nt_data_bit_count start_index = index if node_cache[:data_bit_count].has_key?(index) cached = node_cache[:data_bit_count][index] if cached node_cache[:data_bit_count][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("DataBitCount", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"DataBitCount"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_integer s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(DataBitCount0) r0.extend(DataBitCount1) else @index = i0 r0 = nil end node_cache[:data_bit_count][start_index] = r0 r0 end def _nt_waveform_character_list start_index = index if node_cache[:waveform_character_list].has_key?(index) cached = node_cache[:waveform_character_list][index] if cached node_cache[:waveform_character_list][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9]'] ||= Regexp.new(gr), :regexp, index) r1 = true @index += 1 else terminal_parse_failure('[a-zA-Z0-9]') r1 = nil end if r1 s0 << r1 else break end end if s0.empty? @index = i0 r0 = nil else r0 = instantiate_node(SyntaxNode,input, i0...index, s0) end node_cache[:waveform_character_list][start_index] = r0 r0 end module SignalGroupsBlock0 def s elements[0] end def signal_group elements[1] end end module SignalGroupsBlock1 def s1 elements[1] end def s2 elements[3] end def s3 elements[6] end end module SignalGroupsBlock2 def to_ast n :signal_groups, *elements_to_ast end end def _nt_signal_groups_block start_index = index if node_cache[:signal_groups_block].has_key?(index) cached = node_cache[:signal_groups_block][index] if cached node_cache[:signal_groups_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("SignalGroups", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"SignalGroups"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r4 = _nt_name if r4 r3 = r4 else r3 = instantiate_node(SyntaxNode,input, index...index) end s0 << r3 if r3 r5 = _nt_s s0 << r5 if r5 if (match_len = has_terminal?("{", false, index)) r6 = true @index += match_len else terminal_parse_failure('"{"') r6 = nil end s0 << r6 if r6 s7, i7 = [], index loop do i8, s8 = index, [] r9 = _nt_s s8 << r9 if r9 r10 = _nt_signal_group s8 << r10 end if s8.last r8 = instantiate_node(SyntaxNode,input, i8...index, s8) r8.extend(SignalGroupsBlock0) else @index = i8 r8 = nil end if r8 s7 << r8 else break end end r7 = instantiate_node(SyntaxNode,input, i7...index, s7) s0 << r7 if r7 r11 = _nt_s s0 << r11 if r11 if (match_len = has_terminal?("}", false, index)) r12 = true @index += match_len else terminal_parse_failure('"}"') r12 = nil end s0 << r12 end end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(SignalGroupsBlock1) r0.extend(SignalGroupsBlock2) else @index = i0 r0 = nil end node_cache[:signal_groups_block][start_index] = r0 r0 end module SignalGroup0 def name elements[0] end def s1 elements[1] end def s2 elements[3] end def sigref_expr elements[4] end def s3 elements[5] end end module SignalGroup1 def s1 elements[1] end def s2 elements[3] end def s3 elements[5] end def s4 elements[7] end def s5 elements[9] end def s6 elements[11] end def s7 elements[13] end def s8 elements[15] end end module SignalGroup2 def name elements[0] end def s1 elements[1] end def s2 elements[3] end def sigref_expr elements[4] end def s3 elements[5] end def properties elements[6] end end module SignalGroup3 def to_ast n :signal_group, *elements_to_ast end end def _nt_signal_group start_index = index if node_cache[:signal_group].has_key?(index) cached = node_cache[:signal_group][index] if cached node_cache[:signal_group][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index i1, s1 = index, [] r2 = _nt_name s1 << r2 if r2 r3 = _nt_s s1 << r3 if r3 if (match_len = has_terminal?("=", false, index)) r4 = true @index += match_len else terminal_parse_failure('"="') r4 = nil end s1 << r4 if r4 r5 = _nt_s s1 << r5 if r5 r6 = _nt_sigref_expr s1 << r6 if r6 r7 = _nt_s s1 << r7 if r7 if (match_len = has_terminal?(";", false, index)) r8 = true @index += match_len else terminal_parse_failure('";"') r8 = nil end s1 << r8 end end end end end end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(SignalGroup0) else @index = i1 r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(SignalGroup3) r0.extend(SignalGroup3) else i9, s9 = index, [] r10 = _nt_name s9 << r10 if r10 r11 = _nt_s s9 << r11 if r11 if (match_len = has_terminal?("=", false, index)) r12 = true @index += match_len else terminal_parse_failure('"="') r12 = nil end s9 << r12 if r12 r13 = _nt_s s9 << r13 if r13 r14 = _nt_sigref_expr s9 << r14 if r14 r15 = _nt_s s9 << r15 if r15 i16, s16 = index, [] if (match_len = has_terminal?("{", false, index)) r17 = true @index += match_len else terminal_parse_failure('"{"') r17 = nil end s16 << r17 if r17 r18 = _nt_s s16 << r18 if r18 r20 = _nt_termination if r20 r19 = r20 else r19 = instantiate_node(SyntaxNode,input, index...index) end s16 << r19 if r19 r21 = _nt_s s16 << r21 if r21 r23 = _nt_default_state if r23 r22 = r23 else r22 = instantiate_node(SyntaxNode,input, index...index) end s16 << r22 if r22 r24 = _nt_s s16 << r24 if r24 r26 = _nt_base if r26 r25 = r26 else r25 = instantiate_node(SyntaxNode,input, index...index) end s16 << r25 if r25 r27 = _nt_s s16 << r27 if r27 r29 = _nt_alignment if r29 r28 = r29 else r28 = instantiate_node(SyntaxNode,input, index...index) end s16 << r28 if r28 r30 = _nt_s s16 << r30 if r30 r32 = _nt_scan_in if r32 r31 = r32 else r31 = instantiate_node(SyntaxNode,input, index...index) end s16 << r31 if r31 r33 = _nt_s s16 << r33 if r33 r35 = _nt_scan_out if r35 r34 = r35 else r34 = instantiate_node(SyntaxNode,input, index...index) end s16 << r34 if r34 r36 = _nt_s s16 << r36 if r36 r38 = _nt_data_bit_count if r38 r37 = r38 else r37 = instantiate_node(SyntaxNode,input, index...index) end s16 << r37 if r37 r39 = _nt_s s16 << r39 if r39 if (match_len = has_terminal?("}", false, index)) r40 = true @index += match_len else terminal_parse_failure('"}"') r40 = nil end s16 << r40 end end end end end end end end end end end end end end end end if s16.last r16 = instantiate_node(SyntaxNode,input, i16...index, s16) r16.extend(SignalGroup1) else @index = i16 r16 = nil end s9 << r16 end end end end end end if s9.last r9 = instantiate_node(SyntaxNode,input, i9...index, s9) r9.extend(SignalGroup2) else @index = i9 r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r0 = r9 r0.extend(SignalGroup3) r0.extend(SignalGroup3) else @index = i0 r0 = nil end end node_cache[:signal_group][start_index] = r0 r0 end module PatternExecBlock0 def s elements[0] end def category elements[1] end end module PatternExecBlock1 def s elements[0] end def selector elements[1] end end module PatternExecBlock2 def s elements[0] end def timing elements[1] end end module PatternExecBlock3 def s elements[0] end def pattern_burst elements[1] end end module PatternExecBlock4 def S elements[1] end def s1 elements[3] end def s2 elements[9] end end module PatternExecBlock5 def to_ast n :pattern_exec, *elements_to_ast end end def _nt_pattern_exec_block start_index = index if node_cache[:pattern_exec_block].has_key?(index) cached = node_cache[:pattern_exec_block][index] if cached node_cache[:pattern_exec_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("PatternExec", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"PatternExec"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r4 = _nt_name if r4 r3 = r4 else r3 = instantiate_node(SyntaxNode,input, index...index) end s0 << r3 if r3 r5 = _nt_s s0 << r5 if r5 if (match_len = has_terminal?("{", false, index)) r6 = true @index += match_len else terminal_parse_failure('"{"') r6 = nil end s0 << r6 if r6 s7, i7 = [], index loop do i8, s8 = index, [] r9 = _nt_s s8 << r9 if r9 r10 = _nt_category s8 << r10 end if s8.last r8 = instantiate_node(SyntaxNode,input, i8...index, s8) r8.extend(PatternExecBlock0) else @index = i8 r8 = nil end if r8 s7 << r8 else break end end r7 = instantiate_node(SyntaxNode,input, i7...index, s7) s0 << r7 if r7 s11, i11 = [], index loop do i12, s12 = index, [] r13 = _nt_s s12 << r13 if r13 r14 = _nt_selector s12 << r14 end if s12.last r12 = instantiate_node(SyntaxNode,input, i12...index, s12) r12.extend(PatternExecBlock1) else @index = i12 r12 = nil end if r12 s11 << r12 else break end end r11 = instantiate_node(SyntaxNode,input, i11...index, s11) s0 << r11 if r11 i16, s16 = index, [] r17 = _nt_s s16 << r17 if r17 r18 = _nt_timing s16 << r18 end if s16.last r16 = instantiate_node(SyntaxNode,input, i16...index, s16) r16.extend(PatternExecBlock2) else @index = i16 r16 = nil end if r16 r15 = r16 else r15 = instantiate_node(SyntaxNode,input, index...index) end s0 << r15 if r15 i20, s20 = index, [] r21 = _nt_s s20 << r21 if r21 r22 = _nt_pattern_burst s20 << r22 end if s20.last r20 = instantiate_node(SyntaxNode,input, i20...index, s20) r20.extend(PatternExecBlock3) else @index = i20 r20 = nil end if r20 r19 = r20 else r19 = instantiate_node(SyntaxNode,input, index...index) end s0 << r19 if r19 r23 = _nt_s s0 << r23 if r23 if (match_len = has_terminal?("}", false, index)) r24 = true @index += match_len else terminal_parse_failure('"}"') r24 = nil end s0 << r24 end end end end end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(PatternExecBlock4) r0.extend(PatternExecBlock5) else @index = i0 r0 = nil end node_cache[:pattern_exec_block][start_index] = r0 r0 end module Category0 def S elements[1] end def nm elements[2] end def s elements[3] end end module Category1 def to_ast n :category, nm.text_value end end def _nt_category start_index = index if node_cache[:category].has_key?(index) cached = node_cache[:category][index] if cached node_cache[:category][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Category", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Category"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Category0) r0.extend(Category1) else @index = i0 r0 = nil end node_cache[:category][start_index] = r0 r0 end module Selector0 def S elements[1] end def nm elements[2] end def s elements[3] end end module Selector1 def to_ast n :selector, nm.text_value end end def _nt_selector start_index = index if node_cache[:selector].has_key?(index) cached = node_cache[:selector][index] if cached node_cache[:selector][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Selector", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Selector"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Selector0) r0.extend(Selector1) else @index = i0 r0 = nil end node_cache[:selector][start_index] = r0 r0 end module Timing0 def S elements[1] end def nm elements[2] end def s elements[3] end end module Timing1 def to_ast n :timing, nm.text_value end end def _nt_timing start_index = index if node_cache[:timing].has_key?(index) cached = node_cache[:timing][index] if cached node_cache[:timing][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Timing", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Timing"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Timing0) r0.extend(Timing1) else @index = i0 r0 = nil end node_cache[:timing][start_index] = r0 r0 end module PatternBurst0 def S elements[1] end def nm elements[2] end def s elements[3] end end module PatternBurst1 def to_ast n :pattern_burst, nm.text_value end end def _nt_pattern_burst start_index = index if node_cache[:pattern_burst].has_key?(index) cached = node_cache[:pattern_burst][index] if cached node_cache[:pattern_burst][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("PatternBurst", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"PatternBurst"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(PatternBurst0) r0.extend(PatternBurst1) else @index = i0 r0 = nil end node_cache[:pattern_burst][start_index] = r0 r0 end module PatternBurstBlock0 def s elements[0] end def signal_groups elements[1] end end module PatternBurstBlock1 def s elements[0] end def macro_defs elements[1] end end module PatternBurstBlock2 def s elements[0] end def procedures elements[1] end end module PatternBurstBlock3 def s elements[0] end def scan_structures elements[1] end end module PatternBurstBlock4 def s elements[0] end def start elements[1] end end module PatternBurstBlock5 def s elements[0] end def stop elements[1] end end module PatternBurstBlock6 def s elements[0] end def termination_block elements[1] end end module PatternBurstBlock7 def s elements[0] end def pat_list elements[1] end end module PatternBurstBlock8 def S elements[1] end def name elements[2] end def s1 elements[3] end def s2 elements[13] end end module PatternBurstBlock9 def to_ast n :pattern_burst, *elements_to_ast end end def _nt_pattern_burst_block start_index = index if node_cache[:pattern_burst_block].has_key?(index) cached = node_cache[:pattern_burst_block][index] if cached node_cache[:pattern_burst_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("PatternBurst", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"PatternBurst"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?("{", false, index)) r5 = true @index += match_len else terminal_parse_failure('"{"') r5 = nil end s0 << r5 if r5 s6, i6 = [], index loop do i7, s7 = index, [] r8 = _nt_s s7 << r8 if r8 r9 = _nt_signal_groups s7 << r9 end if s7.last r7 = instantiate_node(SyntaxNode,input, i7...index, s7) r7.extend(PatternBurstBlock0) else @index = i7 r7 = nil end if r7 s6 << r7 else break end end r6 = instantiate_node(SyntaxNode,input, i6...index, s6) s0 << r6 if r6 s10, i10 = [], index loop do i11, s11 = index, [] r12 = _nt_s s11 << r12 if r12 r13 = _nt_macro_defs s11 << r13 end if s11.last r11 = instantiate_node(SyntaxNode,input, i11...index, s11) r11.extend(PatternBurstBlock1) else @index = i11 r11 = nil end if r11 s10 << r11 else break end end r10 = instantiate_node(SyntaxNode,input, i10...index, s10) s0 << r10 if r10 i15, s15 = index, [] r16 = _nt_s s15 << r16 if r16 r17 = _nt_procedures s15 << r17 end if s15.last r15 = instantiate_node(SyntaxNode,input, i15...index, s15) r15.extend(PatternBurstBlock2) else @index = i15 r15 = nil end if r15 r14 = r15 else r14 = instantiate_node(SyntaxNode,input, index...index) end s0 << r14 if r14 i19, s19 = index, [] r20 = _nt_s s19 << r20 if r20 r21 = _nt_scan_structures s19 << r21 end if s19.last r19 = instantiate_node(SyntaxNode,input, i19...index, s19) r19.extend(PatternBurstBlock3) else @index = i19 r19 = nil end if r19 r18 = r19 else r18 = instantiate_node(SyntaxNode,input, index...index) end s0 << r18 if r18 i23, s23 = index, [] r24 = _nt_s s23 << r24 if r24 r25 = _nt_start s23 << r25 end if s23.last r23 = instantiate_node(SyntaxNode,input, i23...index, s23) r23.extend(PatternBurstBlock4) else @index = i23 r23 = nil end if r23 r22 = r23 else r22 = instantiate_node(SyntaxNode,input, index...index) end s0 << r22 if r22 i27, s27 = index, [] r28 = _nt_s s27 << r28 if r28 r29 = _nt_stop s27 << r29 end if s27.last r27 = instantiate_node(SyntaxNode,input, i27...index, s27) r27.extend(PatternBurstBlock5) else @index = i27 r27 = nil end if r27 r26 = r27 else r26 = instantiate_node(SyntaxNode,input, index...index) end s0 << r26 if r26 s30, i30 = [], index loop do i31, s31 = index, [] r32 = _nt_s s31 << r32 if r32 r33 = _nt_termination_block s31 << r33 end if s31.last r31 = instantiate_node(SyntaxNode,input, i31...index, s31) r31.extend(PatternBurstBlock6) else @index = i31 r31 = nil end if r31 s30 << r31 else break end end r30 = instantiate_node(SyntaxNode,input, i30...index, s30) s0 << r30 if r30 s34, i34 = [], index loop do i35, s35 = index, [] r36 = _nt_s s35 << r36 if r36 r37 = _nt_pat_list s35 << r37 end if s35.last r35 = instantiate_node(SyntaxNode,input, i35...index, s35) r35.extend(PatternBurstBlock7) else @index = i35 r35 = nil end if r35 s34 << r35 else break end end if s34.empty? @index = i34 r34 = nil else r34 = instantiate_node(SyntaxNode,input, i34...index, s34) end s0 << r34 if r34 r38 = _nt_s s0 << r38 if r38 if (match_len = has_terminal?("}", false, index)) r39 = true @index += match_len else terminal_parse_failure('"}"') r39 = nil end s0 << r39 end end end end end end end end end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(PatternBurstBlock8) r0.extend(PatternBurstBlock9) else @index = i0 r0 = nil end node_cache[:pattern_burst_block][start_index] = r0 r0 end module SignalGroups0 def S elements[1] end def nm elements[2] end def s elements[3] end end module SignalGroups1 def to_ast n :signal_groups, nm.text_value end end def _nt_signal_groups start_index = index if node_cache[:signal_groups].has_key?(index) cached = node_cache[:signal_groups][index] if cached node_cache[:signal_groups][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("SignalGroups", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"SignalGroups"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(SignalGroups0) r0.extend(SignalGroups1) else @index = i0 r0 = nil end node_cache[:signal_groups][start_index] = r0 r0 end module MacroDefs0 def S elements[1] end def nm elements[2] end def s elements[3] end end module MacroDefs1 def to_ast n :macro_defs, nm.text_value end end def _nt_macro_defs start_index = index if node_cache[:macro_defs].has_key?(index) cached = node_cache[:macro_defs][index] if cached node_cache[:macro_defs][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("MacroDefs", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"MacroDefs"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(MacroDefs0) r0.extend(MacroDefs1) else @index = i0 r0 = nil end node_cache[:macro_defs][start_index] = r0 r0 end module Procedures0 def S elements[1] end def nm elements[2] end def s elements[3] end end module Procedures1 def to_ast n :procedures, nm.text_value end end def _nt_procedures start_index = index if node_cache[:procedures].has_key?(index) cached = node_cache[:procedures][index] if cached node_cache[:procedures][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Procedures", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Procedures"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Procedures0) r0.extend(Procedures1) else @index = i0 r0 = nil end node_cache[:procedures][start_index] = r0 r0 end module ScanStructures0 def S elements[1] end def nm elements[2] end def s elements[3] end end module ScanStructures1 def to_ast n :scan_structures, nm.text_value end end def _nt_scan_structures start_index = index if node_cache[:scan_structures].has_key?(index) cached = node_cache[:scan_structures][index] if cached node_cache[:scan_structures][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("ScanStructures", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"ScanStructures"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(ScanStructures0) r0.extend(ScanStructures1) else @index = i0 r0 = nil end node_cache[:scan_structures][start_index] = r0 r0 end module Start0 def S elements[1] end def nm elements[2] end def s elements[3] end end module Start1 def to_ast n :start, nm.text_value end end def _nt_start start_index = index if node_cache[:start].has_key?(index) cached = node_cache[:start][index] if cached node_cache[:start][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Start", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Start"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Start0) r0.extend(Start1) else @index = i0 r0 = nil end node_cache[:start][start_index] = r0 r0 end module Stop0 def S elements[1] end def nm elements[2] end def s elements[3] end end module Stop1 def to_ast n :stop, nm.text_value end end def _nt_stop start_index = index if node_cache[:stop].has_key?(index) cached = node_cache[:stop][index] if cached node_cache[:stop][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Stop", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Stop"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Stop0) r0.extend(Stop1) else @index = i0 r0 = nil end node_cache[:stop][start_index] = r0 r0 end module TerminationBlock0 def s elements[0] end def termination_item elements[1] end end module TerminationBlock1 def s1 elements[1] end def s2 elements[4] end end module TerminationBlock2 def to_ast n :termination_block, *elements_to_ast end end def _nt_termination_block start_index = index if node_cache[:termination_block].has_key?(index) cached = node_cache[:termination_block][index] if cached node_cache[:termination_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Termination", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Termination"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_termination_item s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(TerminationBlock0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?("}", false, index)) r9 = true @index += match_len else terminal_parse_failure('"}"') r9 = nil end s0 << r9 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(TerminationBlock1) r0.extend(TerminationBlock2) else @index = i0 r0 = nil end node_cache[:termination_block][start_index] = r0 r0 end module TerminationItem0 def exp elements[0] end def S elements[1] end def value elements[2] end def s elements[3] end end module TerminationItem1 def to_ast n :termination_item, exp.to_ast, value.text_value end end def _nt_termination_item start_index = index if node_cache[:termination_item].has_key?(index) cached = node_cache[:termination_item][index] if cached node_cache[:termination_item][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_sigref_expr s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 i3 = index if (match_len = has_terminal?("TerminateHigh", false, index)) r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateHigh"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r3 = r4 else if (match_len = has_terminal?("TerminateLow", false, index)) r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateLow"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r3 = r5 else if (match_len = has_terminal?("TerminateOff", false, index)) r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateOff"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r3 = r6 else if (match_len = has_terminal?("TerminateUknown", false, index)) r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"TerminateUknown"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r3 = r7 else @index = i3 r3 = nil end end end end s0 << r3 if r3 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?(";", false, index)) r9 = true @index += match_len else terminal_parse_failure('";"') r9 = nil end s0 << r9 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(TerminationItem0) r0.extend(TerminationItem1) else @index = i0 r0 = nil end node_cache[:termination_item][start_index] = r0 r0 end module PatList0 def s elements[0] end def pat_list_item elements[1] end end module PatList1 def s1 elements[1] end def s2 elements[4] end end module PatList2 def to_ast n :pat_list, *elements_to_ast end end def _nt_pat_list start_index = index if node_cache[:pat_list].has_key?(index) cached = node_cache[:pat_list][index] if cached node_cache[:pat_list][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("PatList", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"PatList"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_pat_list_item s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(PatList0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?("}", false, index)) r9 = true @index += match_len else terminal_parse_failure('"}"') r9 = nil end s0 << r9 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(PatList1) r0.extend(PatList2) else @index = i0 r0 = nil end node_cache[:pat_list][start_index] = r0 r0 end module PatListItem0 def s elements[0] end def signal_groups elements[1] end end module PatListItem1 def s elements[0] end def macro_defs elements[1] end end module PatListItem2 def s elements[0] end def procedures elements[1] end end module PatListItem3 def s elements[0] end def scan_structures elements[1] end end module PatListItem4 def s elements[0] end def start elements[1] end end module PatListItem5 def s elements[0] end def stop elements[1] end end module PatListItem6 def s elements[0] end def termination_block elements[1] end end module PatListItem7 def s elements[8] end end module PatListItem8 def attrs elements[0] end end module PatListItem9 def nm elements[0] end def s elements[1] end end module PatListItem10 def to_ast n :pat_list_item, *elements_to_ast end end def _nt_pat_list_item start_index = index if node_cache[:pat_list_item].has_key?(index) cached = node_cache[:pat_list_item][index] if cached node_cache[:pat_list_item][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_name s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 i3 = index if (match_len = has_terminal?(";", false, index)) r4 = true @index += match_len else terminal_parse_failure('";"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r3 = r4 else i5, s5 = index, [] i6, s6 = index, [] if (match_len = has_terminal?("{", false, index)) r7 = true @index += match_len else terminal_parse_failure('"{"') r7 = nil end s6 << r7 if r7 s8, i8 = [], index loop do i9, s9 = index, [] r10 = _nt_s s9 << r10 if r10 r11 = _nt_signal_groups s9 << r11 end if s9.last r9 = instantiate_node(SyntaxNode,input, i9...index, s9) r9.extend(PatListItem0) else @index = i9 r9 = nil end if r9 s8 << r9 else break end end r8 = instantiate_node(SyntaxNode,input, i8...index, s8) s6 << r8 if r8 s12, i12 = [], index loop do i13, s13 = index, [] r14 = _nt_s s13 << r14 if r14 r15 = _nt_macro_defs s13 << r15 end if s13.last r13 = instantiate_node(SyntaxNode,input, i13...index, s13) r13.extend(PatListItem1) else @index = i13 r13 = nil end if r13 s12 << r13 else break end end r12 = instantiate_node(SyntaxNode,input, i12...index, s12) s6 << r12 if r12 i17, s17 = index, [] r18 = _nt_s s17 << r18 if r18 r19 = _nt_procedures s17 << r19 end if s17.last r17 = instantiate_node(SyntaxNode,input, i17...index, s17) r17.extend(PatListItem2) else @index = i17 r17 = nil end if r17 r16 = r17 else r16 = instantiate_node(SyntaxNode,input, index...index) end s6 << r16 if r16 i21, s21 = index, [] r22 = _nt_s s21 << r22 if r22 r23 = _nt_scan_structures s21 << r23 end if s21.last r21 = instantiate_node(SyntaxNode,input, i21...index, s21) r21.extend(PatListItem3) else @index = i21 r21 = nil end if r21 r20 = r21 else r20 = instantiate_node(SyntaxNode,input, index...index) end s6 << r20 if r20 i25, s25 = index, [] r26 = _nt_s s25 << r26 if r26 r27 = _nt_start s25 << r27 end if s25.last r25 = instantiate_node(SyntaxNode,input, i25...index, s25) r25.extend(PatListItem4) else @index = i25 r25 = nil end if r25 r24 = r25 else r24 = instantiate_node(SyntaxNode,input, index...index) end s6 << r24 if r24 i29, s29 = index, [] r30 = _nt_s s29 << r30 if r30 r31 = _nt_stop s29 << r31 end if s29.last r29 = instantiate_node(SyntaxNode,input, i29...index, s29) r29.extend(PatListItem5) else @index = i29 r29 = nil end if r29 r28 = r29 else r28 = instantiate_node(SyntaxNode,input, index...index) end s6 << r28 if r28 s32, i32 = [], index loop do i33, s33 = index, [] r34 = _nt_s s33 << r34 if r34 r35 = _nt_termination_block s33 << r35 end if s33.last r33 = instantiate_node(SyntaxNode,input, i33...index, s33) r33.extend(PatListItem6) else @index = i33 r33 = nil end if r33 s32 << r33 else break end end r32 = instantiate_node(SyntaxNode,input, i32...index, s32) s6 << r32 if r32 r36 = _nt_s s6 << r36 if r36 if (match_len = has_terminal?("}", false, index)) r37 = true @index += match_len else terminal_parse_failure('"}"') r37 = nil end s6 << r37 end end end end end end end end end if s6.last r6 = instantiate_node(SyntaxNode,input, i6...index, s6) r6.extend(PatListItem7) else @index = i6 r6 = nil end s5 << r6 if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(PatListItem8) else @index = i5 r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r3 = r5 else @index = i3 r3 = nil end end s0 << r3 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(PatListItem9) r0.extend(PatListItem10) else @index = i0 r0 = nil end node_cache[:pat_list_item][start_index] = r0 r0 end module TimingBlock0 def s elements[0] end def signal_groups_ref elements[1] end end module TimingBlock1 def s elements[0] end def waveform_table elements[1] end end module TimingBlock2 def s1 elements[1] end def s2 elements[3] end def s3 elements[7] end end module TimingBlock3 def to_ast n :timing, *elements_to_ast end end def _nt_timing_block start_index = index if node_cache[:timing_block].has_key?(index) cached = node_cache[:timing_block][index] if cached node_cache[:timing_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Timing", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Timing"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r4 = _nt_name if r4 r3 = r4 else r3 = instantiate_node(SyntaxNode,input, index...index) end s0 << r3 if r3 r5 = _nt_s s0 << r5 if r5 if (match_len = has_terminal?("{", false, index)) r6 = true @index += match_len else terminal_parse_failure('"{"') r6 = nil end s0 << r6 if r6 s7, i7 = [], index loop do i8, s8 = index, [] r9 = _nt_s s8 << r9 if r9 r10 = _nt_signal_groups_ref s8 << r10 end if s8.last r8 = instantiate_node(SyntaxNode,input, i8...index, s8) r8.extend(TimingBlock0) else @index = i8 r8 = nil end if r8 s7 << r8 else break end end r7 = instantiate_node(SyntaxNode,input, i7...index, s7) s0 << r7 if r7 s11, i11 = [], index loop do i12, s12 = index, [] r13 = _nt_s s12 << r13 if r13 r14 = _nt_waveform_table s12 << r14 end if s12.last r12 = instantiate_node(SyntaxNode,input, i12...index, s12) r12.extend(TimingBlock1) else @index = i12 r12 = nil end if r12 s11 << r12 else break end end r11 = instantiate_node(SyntaxNode,input, i11...index, s11) s0 << r11 if r11 r15 = _nt_s s0 << r15 if r15 if (match_len = has_terminal?("}", false, index)) r16 = true @index += match_len else terminal_parse_failure('"}"') r16 = nil end s0 << r16 end end end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(TimingBlock2) r0.extend(TimingBlock3) else @index = i0 r0 = nil end node_cache[:timing_block][start_index] = r0 r0 end module SignalGroupsRef0 def S elements[1] end def name elements[2] end def s elements[3] end end module SignalGroupsRef1 def to_ast n :signal_groups_ref, *elements_to_ast end end def _nt_signal_groups_ref start_index = index if node_cache[:signal_groups_ref].has_key?(index) cached = node_cache[:signal_groups_ref][index] if cached node_cache[:signal_groups_ref][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("SignalGroups", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"SignalGroups"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(SignalGroupsRef0) r0.extend(SignalGroupsRef1) else @index = i0 r0 = nil end node_cache[:signal_groups_ref][start_index] = r0 r0 end module WaveformTable0 def s elements[0] end def inherit_waveform_table elements[1] end end module WaveformTable1 def S elements[1] end def name elements[2] end def s1 elements[3] end def s2 elements[5] end def s3 elements[8] end def s4 elements[10] end def waveforms elements[11] end def s5 elements[12] end end module WaveformTable2 def to_ast n :waveform_table, *elements_to_ast end end def _nt_waveform_table start_index = index if node_cache[:waveform_table].has_key?(index) cached = node_cache[:waveform_table][index] if cached node_cache[:waveform_table][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("WaveformTable", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"WaveformTable"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?("{", false, index)) r5 = true @index += match_len else terminal_parse_failure('"{"') r5 = nil end s0 << r5 if r5 r6 = _nt_s s0 << r6 if r6 r8 = _nt_period if r8 r7 = r8 else r7 = instantiate_node(SyntaxNode,input, index...index) end s0 << r7 if r7 s9, i9 = [], index loop do i10, s10 = index, [] r11 = _nt_s s10 << r11 if r11 r12 = _nt_inherit_waveform_table s10 << r12 end if s10.last r10 = instantiate_node(SyntaxNode,input, i10...index, s10) r10.extend(WaveformTable0) else @index = i10 r10 = nil end if r10 s9 << r10 else break end end r9 = instantiate_node(SyntaxNode,input, i9...index, s9) s0 << r9 if r9 r13 = _nt_s s0 << r13 if r13 r15 = _nt_sub_waveforms if r15 r14 = r15 else r14 = instantiate_node(SyntaxNode,input, index...index) end s0 << r14 if r14 r16 = _nt_s s0 << r16 if r16 r17 = _nt_waveforms s0 << r17 if r17 r18 = _nt_s s0 << r18 if r18 if (match_len = has_terminal?("}", false, index)) r19 = true @index += match_len else terminal_parse_failure('"}"') r19 = nil end s0 << r19 end end end end end end end end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(WaveformTable1) r0.extend(WaveformTable2) else @index = i0 r0 = nil end node_cache[:waveform_table][start_index] = r0 r0 end module Period0 def S elements[1] end def time_expr elements[2] end def s elements[3] end end module Period1 def to_ast n :period, *elements_to_ast end end def _nt_period start_index = index if node_cache[:period].has_key?(index) cached = node_cache[:period][index] if cached node_cache[:period][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Period", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Period"') r1 = nil end s0 << r1 if r1 r2 = _nt_S s0 << r2 if r2 r3 = _nt_time_expr s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Period0) r0.extend(Period1) else @index = i0 r0 = nil end node_cache[:period][start_index] = r0 r0 end module InheritWaveformTable0 def s1 elements[1] end def name elements[2] end def s2 elements[3] end end module InheritWaveformTable1 def to_ast n :inherit_waveform_table, *elements_to_ast end end def _nt_inherit_waveform_table start_index = index if node_cache[:inherit_waveform_table].has_key?(index) cached = node_cache[:inherit_waveform_table][index] if cached node_cache[:inherit_waveform_table][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("InheritWaveformTable", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"InheritWaveformTable"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(InheritWaveformTable0) r0.extend(InheritWaveformTable1) else @index = i0 r0 = nil end node_cache[:inherit_waveform_table][start_index] = r0 r0 end module InheritWaveform0 def s1 elements[1] end def nm elements[2] end def s2 elements[3] end end module InheritWaveform1 def to_ast n :inherit_waveform, nm.text_value end end def _nt_inherit_waveform start_index = index if node_cache[:inherit_waveform].has_key?(index) cached = node_cache[:inherit_waveform][index] if cached node_cache[:inherit_waveform][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("InheritWaveform", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"InheritWaveform"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r3 = _nt_name s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(InheritWaveform0) r0.extend(InheritWaveform1) else @index = i0 r0 = nil end node_cache[:inherit_waveform][start_index] = r0 r0 end module InheritWaveformWfc0 def s1 elements[1] end def nm elements[2] end def s2 elements[3] end end module InheritWaveformWfc1 def to_ast n :inherit_waveform, nm.text_value end end def _nt_inherit_waveform_wfc start_index = index if node_cache[:inherit_waveform_wfc].has_key?(index) cached = node_cache[:inherit_waveform_wfc][index] if cached node_cache[:inherit_waveform_wfc][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("InheritWaveform", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"InheritWaveform"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 r3 = _nt_name_wfc s0 << r3 if r3 r4 = _nt_s s0 << r4 if r4 if (match_len = has_terminal?(";", false, index)) r5 = true @index += match_len else terminal_parse_failure('";"') r5 = nil end s0 << r5 end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(InheritWaveformWfc0) r0.extend(InheritWaveformWfc1) else @index = i0 r0 = nil end node_cache[:inherit_waveform_wfc][start_index] = r0 r0 end module NameWfc0 def name_segment elements[0] end end module NameWfc1 def wfc_list elements[1] end end module NameWfc2 def to_ast text_value end end def _nt_name_wfc start_index = index if node_cache[:name_wfc].has_key?(index) cached = node_cache[:name_wfc][index] if cached node_cache[:name_wfc][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index i1, s1 = index, [] s2, i2 = [], index loop do i3, s3 = index, [] r4 = _nt_name_segment s3 << r4 if r4 if (match_len = has_terminal?(".", false, index)) r5 = true @index += match_len else terminal_parse_failure('"."') r5 = nil end s3 << r5 end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(NameWfc0) else @index = i3 r3 = nil end 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 s1 << r2 if r2 r6 = _nt_wfc_list s1 << r6 end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(NameWfc1) else @index = i1 r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(NameWfc2) r0.extend(NameWfc2) else r7 = _nt_wfc_list if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 r0.extend(NameWfc2) r0.extend(NameWfc2) else @index = i0 r0 = nil end end node_cache[:name_wfc][start_index] = r0 r0 end def _nt_sub_waveforms start_index = index if node_cache[:sub_waveforms].has_key?(index) cached = node_cache[:sub_waveforms][index] if cached node_cache[:sub_waveforms][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if (match_len = has_terminal?("SubWaveforms", false, index)) r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"SubWaveforms"') r0 = nil end node_cache[:sub_waveforms][start_index] = r0 r0 end module Waveforms0 def s elements[0] end def waveform elements[1] end end module Waveforms1 def s1 elements[1] end def s2 elements[4] end end module Waveforms2 def to_ast n :waveforms, *elements_to_ast end end def _nt_waveforms start_index = index if node_cache[:waveforms].has_key?(index) cached = node_cache[:waveforms][index] if cached node_cache[:waveforms][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("Waveforms", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"Waveforms"') r1 = nil end s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_waveform s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Waveforms0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 r8 = _nt_s s0 << r8 if r8 if (match_len = has_terminal?("}", false, index)) r9 = true @index += match_len else terminal_parse_failure('"}"') r9 = nil end s0 << r9 end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Waveforms1) r0.extend(Waveforms2) else @index = i0 r0 = nil end node_cache[:waveforms][start_index] = r0 r0 end module Waveform0 def s elements[0] end def inherit_waveform elements[1] end end module Waveform1 def s elements[0] end def wfc_definition elements[1] end end module Waveform2 def sigref_expr elements[0] end def s1 elements[1] end def s2 elements[5] end end module Waveform3 def to_ast n :waveform, *elements_to_ast end end def _nt_waveform start_index = index if node_cache[:waveform].has_key?(index) cached = node_cache[:waveform][index] if cached node_cache[:waveform][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_sigref_expr s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_inherit_waveform s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(Waveform0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 s8, i8 = [], index loop do i9, s9 = index, [] r10 = _nt_s s9 << r10 if r10 r11 = _nt_wfc_definition s9 << r11 end if s9.last r9 = instantiate_node(SyntaxNode,input, i9...index, s9) r9.extend(Waveform1) else @index = i9 r9 = nil end if r9 s8 << r9 else break end end r8 = instantiate_node(SyntaxNode,input, i8...index, s8) s0 << r8 if r8 r12 = _nt_s s0 << r12 if r12 if (match_len = has_terminal?("}", false, index)) r13 = true @index += match_len else terminal_parse_failure('"}"') r13 = nil end s0 << r13 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Waveform2) r0.extend(Waveform3) else @index = i0 r0 = nil end node_cache[:waveform][start_index] = r0 r0 end def _nt_wfc_char start_index = index if node_cache[:wfc_char].has_key?(index) cached = node_cache[:wfc_char][index] if cached node_cache[:wfc_char][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if has_terminal?(@regexps[gr = '\A[0-9A-Za-z]'] ||= Regexp.new(gr), :regexp, index) r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('[0-9A-Za-z]') r0 = nil end node_cache[:wfc_char][start_index] = r0 r0 end module WfcList0 def to_ast n :wfc_list, text_value end end def _nt_wfc_list start_index = index if node_cache[:wfc_list].has_key?(index) cached = node_cache[:wfc_list][index] if cached node_cache[:wfc_list][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do r1 = _nt_wfc_char if r1 s0 << r1 else break end end if s0.empty? @index = i0 r0 = nil else r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(WfcList0) r0.extend(WfcList0) end node_cache[:wfc_list][start_index] = r0 r0 end module WfcDefinition0 def s elements[0] end def inherit_waveform_wfc elements[1] end end module WfcDefinition1 def s elements[0] end def event elements[1] end end module WfcDefinition2 def wfc_list elements[0] end def s1 elements[1] end def s2 elements[5] end end module WfcDefinition3 def to_ast n :wfc_definition, *elements_to_ast end end def _nt_wfc_definition start_index = index if node_cache[:wfc_definition].has_key?(index) cached = node_cache[:wfc_definition][index] if cached node_cache[:wfc_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_wfc_list s0 << r1 if r1 r2 = _nt_s s0 << r2 if r2 if (match_len = has_terminal?("{", false, index)) r3 = true @index += match_len else terminal_parse_failure('"{"') r3 = nil end s0 << r3 if r3 s4, i4 = [], index loop do i5, s5 = index, [] r6 = _nt_s s5 << r6 if r6 r7 = _nt_inherit_waveform_wfc s5 << r7 end if s5.last r5 = instantiate_node(SyntaxNode,input, i5...index, s5) r5.extend(WfcDefinition0) else @index = i5 r5 = nil end if r5 s4 << r5 else break end end r4 = instantiate_node(SyntaxNode,input, i4...index, s4) s0 << r4 if r4 s8, i8 = [], index loop do i9, s9 = index, [] r10 = _nt_s s9 << r10 if r10 r11 = _nt_event s9 << r11 end if s9.last r9 = instantiate_node(SyntaxNode,input, i9...index, s9) r9.extend(WfcDefinition1) else @index = i9 r9 = nil end if r9 s8 << r9 else break end end r8 = instantiate_node(SyntaxNode,input, i8...index, s8) s0 << r8 if r8 r12 = _nt_s s0 << r12 if r12 if (match_len = has_terminal?("}", false, index)) r13 = true @index += match_len else terminal_parse_failure('"}"') r13 = nil end s0 << r13 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(WfcDefinition2) r0.extend(WfcDefinition3) else @index = i0 r0 = nil end node_cache[:wfc_definition][start_index] = r0 r0 end module Event0 def s1 elements[1] end def s2 elements[3] end def s3 elements[5] end end module Event1 def to_ast n :event, *elements_to_ast end end def _nt_event start_index = index if node_cache[:event].has_key?(index) cached = node_cache[:event][index] if cached node_cache[:event][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r2 = _nt_event_label if r2 r1 = r2 else r1 = instantiate_node(SyntaxNode,input, index...index) end s0 << r1 if r1 r3 = _nt_s s0 << r3 if r3 r5 = _nt_time_expr if r5 r4 = r5 else r4 = instantiate_node(SyntaxNode,input, index...index) end s0 << r4 if r4 r6 = _nt_s s0 << r6 if r6 r8 = _nt_event_list if r8 r7 = r8 else r7 = instantiate_node(SyntaxNode,input, index...index) end s0 << r7 if r7 r9 = _nt_s s0 << r9 if r9 if (match_len = has_terminal?(";", false, index)) r10 = true @index += match_len else terminal_parse_failure('";"') r10 = nil end s0 << r10 end end end end end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(Event0) r0.extend(Event1) else @index = i0 r0 = nil end node_cache[:event][start_index] = r0 r0 end module EventLabel0 def name elements[0] end end module EventLabel1 def to_ast n :event_label, text_value.chop end end def _nt_event_label start_index = index if node_cache[:event_label].has_key?(index) cached = node_cache[:event_label][index] if cached node_cache[:event_label][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_name s0 << r1 if r1 if (match_len = has_terminal?(":", false, index)) r2 = true @index += match_len else terminal_parse_failure('":"') r2 = nil end s0 << r2 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(EventLabel0) r0.extend(EventLabel1) else @index = i0 r0 = nil end node_cache[:event_label][start_index] = r0 r0 end def _nt_event_char start_index = index if node_cache[:event_char].has_key?(index) cached = node_cache[:event_char][index] if cached node_cache[:event_char][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if (match_len = has_terminal?("D", false, index)) r1 = true @index += match_len else terminal_parse_failure('"D"') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if (match_len = has_terminal?("U", false, index)) r2 = true @index += match_len else terminal_parse_failure('"U"') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else if (match_len = has_terminal?("Z", false, index)) r3 = true @index += match_len else terminal_parse_failure('"Z"') r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else if (match_len = has_terminal?("P", false, index)) r4 = true @index += match_len else terminal_parse_failure('"P"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else if (match_len = has_terminal?("L", false, index)) r5 = true @index += match_len else terminal_parse_failure('"L"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 else if (match_len = has_terminal?("H", false, index)) r6 = true @index += match_len else terminal_parse_failure('"H"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 else if (match_len = has_terminal?("X", false, index)) r7 = true @index += match_len else terminal_parse_failure('"X"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 else if (match_len = has_terminal?("x", false, index)) r8 = true @index += match_len else terminal_parse_failure('"x"') r8 = nil end if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r0 = r8 else if (match_len = has_terminal?("T", false, index)) r9 = true @index += match_len else terminal_parse_failure('"T"') r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r0 = r9 else if (match_len = has_terminal?("V", false, index)) r10 = true @index += match_len else terminal_parse_failure('"V"') r10 = nil end if r10 r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true r0 = r10 else if (match_len = has_terminal?("l", false, index)) r11 = true @index += match_len else terminal_parse_failure('"l"') r11 = nil end if r11 r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true r0 = r11 else if (match_len = has_terminal?("h", false, index)) r12 = true @index += match_len else terminal_parse_failure('"h"') r12 = nil end if r12 r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true r0 = r12 else if (match_len = has_terminal?("t", false, index)) r13 = true @index += match_len else terminal_parse_failure('"t"') r13 = nil end if r13 r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true r0 = r13 else if (match_len = has_terminal?("v", false, index)) r14 = true @index += match_len else terminal_parse_failure('"v"') r14 = nil end if r14 r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true r0 = r14 else if (match_len = has_terminal?("R", false, index)) r15 = true @index += match_len else terminal_parse_failure('"R"') r15 = nil end if r15 r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true r0 = r15 else if (match_len = has_terminal?("G", false, index)) r16 = true @index += match_len else terminal_parse_failure('"G"') r16 = nil end if r16 r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true r0 = r16 else if (match_len = has_terminal?("Q", false, index)) r17 = true @index += match_len else terminal_parse_failure('"Q"') r17 = nil end if r17 r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true r0 = r17 else if (match_len = has_terminal?("M", false, index)) r18 = true @index += match_len else terminal_parse_failure('"M"') r18 = nil end if r18 r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true r0 = r18 else if (match_len = has_terminal?("N", false, index)) r19 = true @index += match_len else terminal_parse_failure('"N"') r19 = nil end if r19 r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true r0 = r19 else if (match_len = has_terminal?("A", false, index)) r20 = true @index += match_len else terminal_parse_failure('"A"') r20 = nil end if r20 r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true r0 = r20 else if (match_len = has_terminal?("B", false, index)) r21 = true @index += match_len else terminal_parse_failure('"B"') r21 = nil end if r21 r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true r0 = r21 else if (match_len = has_terminal?("F", false, index)) r22 = true @index += match_len else terminal_parse_failure('"F"') r22 = nil end if r22 r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true r0 = r22 else if (match_len = has_terminal?("?", false, index)) r23 = true @index += match_len else terminal_parse_failure('"?"') r23 = nil end if r23 r23 = SyntaxNode.new(input, (index-1)...index) if r23 == true r0 = r23 else @index = i0 r0 = nil end end end end end end end end end end end end end end end end end end end end end end end node_cache[:event_char][start_index] = r0 r0 end module EventList0 def event_char elements[1] end end module EventList1 def event_char elements[0] end end module EventList2 def to_ast n :event_list, text_value end end def _nt_event_list start_index = index if node_cache[:event_list].has_key?(index) cached = node_cache[:event_list][index] if cached node_cache[:event_list][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] r1 = _nt_event_char s0 << r1 if r1 s2, i2 = [], index loop do i3, s3 = index, [] if (match_len = has_terminal?("/", false, index)) r4 = true @index += match_len else terminal_parse_failure('"/"') r4 = nil end s3 << r4 if r4 r5 = _nt_event_char s3 << r5 end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(EventList0) 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(EventList1) r0.extend(EventList2) else @index = i0 r0 = nil end node_cache[:event_list][start_index] = r0 r0 end module Name0 def name_segment elements[0] end end module Name1 def name_segment elements[1] end end module Name2 def to_ast n :name, text_value end end def _nt_name start_index = index if node_cache[:name].has_key?(index) cached = node_cache[:name][index] if cached node_cache[:name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index i1, s1 = index, [] s2, i2 = [], index loop do i3, s3 = index, [] r4 = _nt_name_segment s3 << r4 if r4 if (match_len = has_terminal?(".", false, index)) r5 = true @index += match_len else terminal_parse_failure('"."') r5 = nil end s3 << r5 end if s3.last r3 = instantiate_node(SyntaxNode,input, i3...index, s3) r3.extend(Name0) else @index = i3 r3 = nil end 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 s1 << r2 if r2 r6 = _nt_name_segment s1 << r6 end if s1.last r1 = instantiate_node(SyntaxNode,input, i1...index, s1) r1.extend(Name1) else @index = i1 r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(Name2) r0.extend(Name2) else r7 = _nt_name_segment if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 r0.extend(Name2) r0.extend(Name2) else @index = i0 r0 = nil end end node_cache[:name][start_index] = r0 r0 end def _nt_name_segment start_index = index if node_cache[:name_segment].has_key?(index) cached = node_cache[:name_segment][index] if cached node_cache[:name_segment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_simple_identifier if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_escaped_identifier if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else @index = i0 r0 = nil end end node_cache[:name_segment][start_index] = r0 r0 end module SimpleIdentifier0 end def _nt_simple_identifier start_index = index if node_cache[:simple_identifier].has_key?(index) cached = node_cache[:simple_identifier][index] if cached node_cache[:simple_identifier][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] i1 = index r2 = _nt_letter if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r1 = r2 else r3 = _nt_underline if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r1 = r3 else @index = i1 r1 = nil end end s0 << r1 if r1 s4, i4 = [], index loop do r5 = _nt_simple_character 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(SimpleIdentifier0) else @index = i0 r0 = nil end node_cache[:simple_identifier][start_index] = r0 r0 end def _nt_simple_character start_index = index if node_cache[:simple_character].has_key?(index) cached = node_cache[:simple_character][index] if cached node_cache[:simple_character][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_letter if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_digit if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_underline if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else @index = i0 r0 = nil end end end node_cache[:simple_character][start_index] = r0 r0 end def _nt_letter start_index = index if node_cache[:letter].has_key?(index) cached = node_cache[:letter][index] if cached node_cache[:letter][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_upper_case_letter if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_lower_case_letter if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else @index = i0 r0 = nil end end node_cache[:letter][start_index] = r0 r0 end def _nt_upper_case_letter start_index = index if node_cache[:upper_case_letter].has_key?(index) cached = node_cache[:upper_case_letter][index] if cached node_cache[:upper_case_letter][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if has_terminal?(@regexps[gr = '\A[A-Z]'] ||= Regexp.new(gr), :regexp, index) r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('[A-Z]') r0 = nil end node_cache[:upper_case_letter][start_index] = r0 r0 end def _nt_lower_case_letter start_index = index if node_cache[:lower_case_letter].has_key?(index) cached = node_cache[:lower_case_letter][index] if cached node_cache[:lower_case_letter][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if has_terminal?(@regexps[gr = '\A[a-z]'] ||= Regexp.new(gr), :regexp, index) r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('[a-z]') r0 = nil end node_cache[:lower_case_letter][start_index] = r0 r0 end def _nt_underline start_index = index if node_cache[:underline].has_key?(index) cached = node_cache[:underline][index] if cached node_cache[:underline][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if (match_len = has_terminal?("_", false, index)) r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"_"') r0 = nil end node_cache[:underline][start_index] = r0 r0 end module EscapedIdentifier0 end def _nt_escaped_identifier start_index = index if node_cache[:escaped_identifier].has_key?(index) cached = node_cache[:escaped_identifier][index] if cached node_cache[:escaped_identifier][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?('"', false, index)) r1 = true @index += match_len else terminal_parse_failure('\'"\'') r1 = nil end s0 << r1 if r1 s2, i2 = [], index loop do r3 = _nt_escaped_character 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 if (match_len = has_terminal?('"', false, index)) r4 = true @index += match_len else terminal_parse_failure('\'"\'') r4 = nil end s0 << r4 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(EscapedIdentifier0) else @index = i0 r0 = nil end node_cache[:escaped_identifier][start_index] = r0 r0 end def _nt_escaped_character start_index = index if node_cache[:escaped_character].has_key?(index) cached = node_cache[:escaped_character][index] if cached node_cache[:escaped_character][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_simple_character if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_special_character if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else r3 = _nt_whitespace_character if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else @index = i0 r0 = nil end end end node_cache[:escaped_character][start_index] = r0 r0 end def _nt_special_character start_index = index if node_cache[:special_character].has_key?(index) cached = node_cache[:special_character][index] if cached node_cache[:special_character][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if (match_len = has_terminal?("!", false, index)) r1 = true @index += match_len else terminal_parse_failure('"!"') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if (match_len = has_terminal?("@", false, index)) r2 = true @index += match_len else terminal_parse_failure('"@"') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else if (match_len = has_terminal?("#", false, index)) r3 = true @index += match_len else terminal_parse_failure('"#"') r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else if (match_len = has_terminal?("$", false, index)) r4 = true @index += match_len else terminal_parse_failure('"$"') r4 = nil end if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r0 = r4 else if (match_len = has_terminal?("%", false, index)) r5 = true @index += match_len else terminal_parse_failure('"%"') r5 = nil end if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r0 = r5 else if (match_len = has_terminal?("^", false, index)) r6 = true @index += match_len else terminal_parse_failure('"^"') r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 else if (match_len = has_terminal?("&", false, index)) r7 = true @index += match_len else terminal_parse_failure('"&"') r7 = nil end if r7 r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true r0 = r7 else if (match_len = has_terminal?("*", false, index)) r8 = true @index += match_len else terminal_parse_failure('"*"') r8 = nil end if r8 r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true r0 = r8 else if (match_len = has_terminal?("(", false, index)) r9 = true @index += match_len else terminal_parse_failure('"("') r9 = nil end if r9 r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true r0 = r9 else if (match_len = has_terminal?(")", false, index)) r10 = true @index += match_len else terminal_parse_failure('")"') r10 = nil end if r10 r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true r0 = r10 else if (match_len = has_terminal?("-", false, index)) r11 = true @index += match_len else terminal_parse_failure('"-"') r11 = nil end if r11 r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true r0 = r11 else if (match_len = has_terminal?("+", false, index)) r12 = true @index += match_len else terminal_parse_failure('"+"') r12 = nil end if r12 r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true r0 = r12 else if (match_len = has_terminal?("+", false, index)) r13 = true @index += match_len else terminal_parse_failure('"+"') r13 = nil end if r13 r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true r0 = r13 else if (match_len = has_terminal?("|", false, index)) r14 = true @index += match_len else terminal_parse_failure('"|"') r14 = nil end if r14 r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true r0 = r14 else if (match_len = has_terminal?("`", false, index)) r15 = true @index += match_len else terminal_parse_failure('"`"') r15 = nil end if r15 r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true r0 = r15 else if (match_len = has_terminal?("~", false, index)) r16 = true @index += match_len else terminal_parse_failure('"~"') r16 = nil end if r16 r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true r0 = r16 else if (match_len = has_terminal?("{", false, index)) r17 = true @index += match_len else terminal_parse_failure('"{"') r17 = nil end if r17 r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true r0 = r17 else if (match_len = has_terminal?("[", false, index)) r18 = true @index += match_len else terminal_parse_failure('"["') r18 = nil end if r18 r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true r0 = r18 else if (match_len = has_terminal?("}", false, index)) r19 = true @index += match_len else terminal_parse_failure('"}"') r19 = nil end if r19 r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true r0 = r19 else if (match_len = has_terminal?("]", false, index)) r20 = true @index += match_len else terminal_parse_failure('"]"') r20 = nil end if r20 r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true r0 = r20 else if (match_len = has_terminal?(":", false, index)) r21 = true @index += match_len else terminal_parse_failure('":"') r21 = nil end if r21 r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true r0 = r21 else if (match_len = has_terminal?(";", false, index)) r22 = true @index += match_len else terminal_parse_failure('";"') r22 = nil end if r22 r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true r0 = r22 else if (match_len = has_terminal?("'", false, index)) r23 = true @index += match_len else terminal_parse_failure('"\'"') r23 = nil end if r23 r23 = SyntaxNode.new(input, (index-1)...index) if r23 == true r0 = r23 else if (match_len = has_terminal?(",", false, index)) r24 = true @index += match_len else terminal_parse_failure('","') r24 = nil end if r24 r24 = SyntaxNode.new(input, (index-1)...index) if r24 == true r0 = r24 else if (match_len = has_terminal?("<", false, index)) r25 = true @index += match_len else terminal_parse_failure('"<"') r25 = nil end if r25 r25 = SyntaxNode.new(input, (index-1)...index) if r25 == true r0 = r25 else if (match_len = has_terminal?(".", false, index)) r26 = true @index += match_len else terminal_parse_failure('"."') r26 = nil end if r26 r26 = SyntaxNode.new(input, (index-1)...index) if r26 == true r0 = r26 else if (match_len = has_terminal?(">", false, index)) r27 = true @index += match_len else terminal_parse_failure('">"') r27 = nil end if r27 r27 = SyntaxNode.new(input, (index-1)...index) if r27 == true r0 = r27 else if (match_len = has_terminal?("/", false, index)) r28 = true @index += match_len else terminal_parse_failure('"/"') r28 = nil end if r28 r28 = SyntaxNode.new(input, (index-1)...index) if r28 == true r0 = r28 else if (match_len = has_terminal?("?", false, index)) r29 = true @index += match_len else terminal_parse_failure('"?"') r29 = nil end if r29 r29 = SyntaxNode.new(input, (index-1)...index) if r29 == true r0 = r29 else if (match_len = has_terminal?("\\", false, index)) r30 = true @index += match_len else terminal_parse_failure('"\\\\"') r30 = nil end if r30 r30 = SyntaxNode.new(input, (index-1)...index) if r30 == true r0 = r30 else @index = i0 r0 = nil end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end node_cache[:special_character][start_index] = r0 r0 end def _nt_whitespace_character start_index = index if node_cache[:whitespace_character].has_key?(index) cached = node_cache[:whitespace_character][index] if cached node_cache[:whitespace_character][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if (match_len = has_terminal?(" ", false, index)) r1 = true @index += match_len else terminal_parse_failure('" "') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if (match_len = has_terminal?("\t", false, index)) r2 = true @index += match_len else terminal_parse_failure('"\\t"') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else if (match_len = has_terminal?("\n", false, index)) r3 = true @index += match_len else terminal_parse_failure('"\\n"') r3 = nil end if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r0 = r3 else @index = i0 r0 = nil end end end node_cache[:whitespace_character][start_index] = r0 r0 end def _nt_digit start_index = index if node_cache[:digit].has_key?(index) cached = node_cache[:digit][index] if cached node_cache[:digit][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) r0 = instantiate_node(SyntaxNode,input, index...(index + 1)) @index += 1 else terminal_parse_failure('[0-9]') r0 = nil end node_cache[:digit][start_index] = r0 r0 end def _nt_hexdigit start_index = index if node_cache[:hexdigit].has_key?(index) cached = node_cache[:hexdigit][index] if cached node_cache[:hexdigit][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if has_terminal?(@regexps[gr = '\A[a-f]'] ||= Regexp.new(gr), :regexp, index) r1 = true @index += 1 else terminal_parse_failure('[a-f]') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if has_terminal?(@regexps[gr = '\A[A-F]'] ||= Regexp.new(gr), :regexp, index) r2 = true @index += 1 else terminal_parse_failure('[A-F]') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else @index = i0 r0 = nil end end node_cache[:hexdigit][start_index] = r0 r0 end def _nt_hex_number start_index = index if node_cache[:hex_number].has_key?(index) cached = node_cache[:hex_number][index] if cached node_cache[:hex_number][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do r1 = _nt_hexdigit if r1 s0 << r1 else break end end if s0.empty? @index = i0 r0 = nil else r0 = instantiate_node(SyntaxNode,input, i0...index, s0) end node_cache[:hex_number][start_index] = r0 r0 end def _nt_integer start_index = index if node_cache[:integer].has_key?(index) cached = node_cache[:integer][index] if cached node_cache[:integer][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do r1 = _nt_digit if r1 s0 << r1 else break end end if s0.empty? @index = i0 r0 = nil else r0 = instantiate_node(SyntaxNode,input, i0...index, s0) end node_cache[:integer][start_index] = r0 r0 end module SignedInteger0 def integer elements[1] end end def _nt_signed_integer start_index = index if node_cache[:signed_integer].has_key?(index) cached = node_cache[:signed_integer][index] if cached node_cache[:signed_integer][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_integer if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else i2, s2 = index, [] if (match_len = has_terminal?("-", false, index)) r3 = true @index += match_len else terminal_parse_failure('"-"') r3 = nil end s2 << r3 if r3 r4 = _nt_integer s2 << r4 end if s2.last r2 = instantiate_node(SyntaxNode,input, i2...index, s2) r2.extend(SignedInteger0) else @index = i2 r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else @index = i0 r0 = nil end end node_cache[:signed_integer][start_index] = r0 r0 end module Number0 def signed_integer elements[0] end def integer elements[2] end end module Number1 def signed_integer1 elements[0] end def signed_integer2 elements[2] end end module Number2 def signed_integer1 elements[0] end def integer elements[2] end def signed_integer2 elements[4] end end module Number3 def to_ast if text_value.to_f == text_value.to_i text_value.to_i else text_value.to_f end end end def _nt_number start_index = index if node_cache[:number].has_key?(index) cached = node_cache[:number][index] if cached node_cache[:number][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_signed_integer if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 r0.extend(Number3) r0.extend(Number3) else i2, s2 = index, [] r3 = _nt_signed_integer s2 << r3 if r3 if (match_len = has_terminal?(".", false, index)) r4 = true @index += match_len else terminal_parse_failure('"."') r4 = nil end s2 << r4 if r4 r5 = _nt_integer s2 << r5 end end if s2.last r2 = instantiate_node(SyntaxNode,input, i2...index, s2) r2.extend(Number0) else @index = i2 r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 r0.extend(Number3) r0.extend(Number3) else i6, s6 = index, [] r7 = _nt_signed_integer s6 << r7 if r7 if (match_len = has_terminal?("e", false, index)) r8 = true @index += match_len else terminal_parse_failure('"e"') r8 = nil end s6 << r8 if r8 r9 = _nt_signed_integer s6 << r9 end end if s6.last r6 = instantiate_node(SyntaxNode,input, i6...index, s6) r6.extend(Number1) else @index = i6 r6 = nil end if r6 r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true r0 = r6 r0.extend(Number3) r0.extend(Number3) else i10, s10 = index, [] r11 = _nt_signed_integer s10 << r11 if r11 if (match_len = has_terminal?(".", false, index)) r12 = true @index += match_len else terminal_parse_failure('"."') r12 = nil end s10 << r12 if r12 r13 = _nt_integer s10 << r13 if r13 if (match_len = has_terminal?("e", false, index)) r14 = true @index += match_len else terminal_parse_failure('"e"') r14 = nil end s10 << r14 if r14 r15 = _nt_signed_integer s10 << r15 end end end end if s10.last r10 = instantiate_node(SyntaxNode,input, i10...index, s10) r10.extend(Number2) else @index = i10 r10 = nil end if r10 r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true r0 = r10 r0.extend(Number3) r0.extend(Number3) else @index = i0 r0 = nil end end end end node_cache[:number][start_index] = r0 r0 end def _nt_comment start_index = index if node_cache[:comment].has_key?(index) cached = node_cache[:comment][index] if cached node_cache[:comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index r1 = _nt_one_line_comment if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else r2 = _nt_block_comment if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else @index = i0 r0 = nil end end node_cache[:comment][start_index] = r0 r0 end module BlockComment0 end module BlockComment1 def end_of_comment elements[2] end end def _nt_block_comment start_index = index if node_cache[:block_comment].has_key?(index) cached = node_cache[:block_comment][index] if cached node_cache[:block_comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("/*", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"/*"') r1 = nil end s0 << r1 if r1 s2, i2 = [], index loop do i3, s3 = index, [] i4 = index r5 = _nt_end_of_comment if r5 @index = i4 r4 = nil else @index = i4 r4 = instantiate_node(SyntaxNode,input, index...index) end s3 << r4 if r4 if index < input_length r6 = true @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(BlockComment0) else @index = i3 r3 = nil end if r3 s2 << r3 else break end end r2 = instantiate_node(SyntaxNode,input, i2...index, s2) s0 << r2 if r2 r7 = _nt_end_of_comment s0 << r7 end end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(BlockComment1) else @index = i0 r0 = nil end node_cache[:block_comment][start_index] = r0 r0 end def _nt_end_of_comment start_index = index if node_cache[:end_of_comment].has_key?(index) cached = node_cache[:end_of_comment][index] if cached node_cache[:end_of_comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end if (match_len = has_terminal?("*/", false, index)) r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"*/"') r0 = nil end node_cache[:end_of_comment][start_index] = r0 r0 end module OneLineComment0 end module OneLineComment1 end def _nt_one_line_comment start_index = index if node_cache[:one_line_comment].has_key?(index) cached = node_cache[:one_line_comment][index] if cached node_cache[:one_line_comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("//", false, index)) r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) @index += match_len else terminal_parse_failure('"//"') r1 = nil end s0 << r1 if r1 s2, i2 = [], index loop do i3, s3 = index, [] i4 = index r5 = _nt_N if r5 @index = i4 r4 = nil else @index = i4 r4 = instantiate_node(SyntaxNode,input, index...index) end s3 << r4 if r4 if index < input_length r6 = true @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(OneLineComment0) 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(OneLineComment1) else @index = i0 r0 = nil end node_cache[:one_line_comment][start_index] = r0 r0 end def _nt_space start_index = index if node_cache[:space].has_key?(index) cached = node_cache[:space][index] if cached node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0 = index if (match_len = has_terminal?(" ", false, index)) r1 = true @index += match_len else terminal_parse_failure('" "') r1 = nil end if r1 r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true r0 = r1 else if (match_len = has_terminal?("\t", false, index)) r2 = true @index += match_len else terminal_parse_failure('"\\t"') r2 = nil end if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r0 = r2 else @index = i0 r0 = nil end end node_cache[:space][start_index] = r0 r0 end def _nt_s start_index = index if node_cache[:s].has_key?(index) cached = node_cache[:s][index] if cached node_cache[:s][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do i1 = index r2 = _nt_space if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r1 = r2 else r3 = _nt_N if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r1 = r3 else r4 = _nt_one_line_comment if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r1 = r4 else r5 = _nt_block_comment if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r1 = r5 else @index = i1 r1 = nil end end end end if r1 s0 << r1 else break end end r0 = instantiate_node(SyntaxNode,input, i0...index, s0) node_cache[:s][start_index] = r0 r0 end def _nt_S start_index = index if node_cache[:S].has_key?(index) cached = node_cache[:S][index] if cached node_cache[:S][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end s0, i0 = [], index loop do i1 = index r2 = _nt_space if r2 r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true r1 = r2 else r3 = _nt_N if r3 r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true r1 = r3 else r4 = _nt_one_line_comment if r4 r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true r1 = r4 else r5 = _nt_block_comment if r5 r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true r1 = r5 else @index = i1 r1 = nil end end end end if r1 s0 << r1 else break end end if s0.empty? @index = i0 r0 = nil else r0 = instantiate_node(SyntaxNode,input, i0...index, s0) end node_cache[:S][start_index] = r0 r0 end module N0 end def _nt_n start_index = index if node_cache[:n].has_key?(index) cached = node_cache[:n][index] if cached node_cache[:n][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("\r", false, index)) r2 = true @index += match_len else terminal_parse_failure('"\\r"') r2 = nil end if r2 r1 = r2 else r1 = instantiate_node(SyntaxNode,input, index...index) end s0 << r1 if r1 if (match_len = has_terminal?("\n", false, index)) r4 = true @index += match_len else terminal_parse_failure('"\\n"') r4 = nil end if r4 r3 = r4 else r3 = instantiate_node(SyntaxNode,input, index...index) end s0 << r3 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(N0) else @index = i0 r0 = nil end node_cache[:n][start_index] = r0 r0 end module N0 end def _nt_N start_index = index if node_cache[:N].has_key?(index) cached = node_cache[:N][index] if cached node_cache[:N][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true @index = cached.interval.end end return cached end i0, s0 = index, [] if (match_len = has_terminal?("\r", false, index)) r2 = true @index += match_len else terminal_parse_failure('"\\r"') r2 = nil end if r2 r1 = r2 else r1 = instantiate_node(SyntaxNode,input, index...index) end s0 << r1 if r1 if (match_len = has_terminal?("\n", false, index)) r3 = true @index += match_len else terminal_parse_failure('"\\n"') r3 = nil end s0 << r3 end if s0.last r0 = instantiate_node(SyntaxNode,input, i0...index, s0) r0.extend(N0) else @index = i0 r0 = nil end node_cache[:N][start_index] = r0 r0 end end class GrammarParser < Treetop::Runtime::CompiledParser include Grammar end end end