module Maps::Grammar

Public Instance Methods

_read___() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 2751
def _read___
  address0, index0 = FAILURE, @offset
  cached = @cache[:__][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  remaining0, index1, elements0, address1 = 0, @offset, [], true
  until address1 == FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 =~ /\A[\s]/
      address1 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address1 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "[\\s]"
      end
    end
    unless address1 == FAILURE
      elements0 << address1
      remaining0 -= 1
    end
  end
  if remaining0 <= 0
    address0 = TreeNode.new(@input[index1...@offset], index1, elements0)
    @offset = @offset
  else
    address0 = FAILURE
  end
  @cache[:__][index0] = [address0, @offset]
  return address0
end
_read_apostrophe_string() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1113
def _read_apostrophe_string
  address0, index0 = FAILURE, @offset
  cached = @cache[:apostrophe_string][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 == "'"
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"'\""
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      remaining0, index2, elements1, address4 = 0, @offset, [], true
      until address4 == FAILURE
        chunk1 = nil
        if @offset < @input_size
          chunk1 = @input[@offset...@offset + 1]
        end
        if chunk1 =~ /\A[^']/
          address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address4 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "[^']"
          end
        end
        unless address4 == FAILURE
          elements1 << address4
          remaining0 -= 1
        end
      end
      if remaining0 <= 0
        address3 = TreeNode.new(@input[index2...@offset], index2, elements1)
        @offset = @offset
      else
        address3 = FAILURE
      end
      unless address3 == FAILURE
        elements0 << address3
        address5 = FAILURE
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 1]
        end
        if chunk2 == "'"
          address5 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address5 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\"'\""
          end
        end
        unless address5 == FAILURE
          elements0 << address5
          address6 = FAILURE
          address6 = _read___
          unless address6 == FAILURE
            elements0 << address6
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_apostrophe_string(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:apostrophe_string][index0] = [address0, @offset]
  return address0
end
_read_atom() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 282
def _read_atom
  address0, index0 = FAILURE, @offset
  cached = @cache[:atom][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1 = @offset
  address0 = _read_float_
  if address0 == FAILURE
    @offset = index1
    address0 = _read_number
    if address0 == FAILURE
      @offset = index1
      address0 = _read_string
      if address0 == FAILURE
        @offset = index1
        address0 = _read_apostrophe_string
        if address0 == FAILURE
          @offset = index1
          address0 = _read_list
          if address0 == FAILURE
            @offset = index1
            address0 = _read_chr
            if address0 == FAILURE
              @offset = index1
              address0 = _read_boolean_
              if address0 == FAILURE
                @offset = index1
                address0 = _read_null_
                if address0 == FAILURE
                  @offset = index1
                  address0 = _read_undefined_
                  if address0 == FAILURE
                    @offset = index1
                    address0 = _read_comp_expression_ex
                    if address0 == FAILURE
                      @offset = index1
                      address0 = _read_namespace
                      if address0 == FAILURE
                        @offset = index1
                      end
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end
  @cache[:atom][index0] = [address0, @offset]
  return address0
end
_read_boolean_() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1807
def _read_boolean_
  address0, index0 = FAILURE, @offset
  cached = @cache[:boolean_][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 4]
    end
    if chunk0 == "True"
      address2 = TreeNode.new(@input[@offset...@offset + 4], @offset)
      @offset = @offset + 4
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"True\""
      end
    end
    if address2 == FAILURE
      @offset = index2
      chunk1 = nil
      if @offset < @input_size
        chunk1 = @input[@offset...@offset + 4]
      end
      if chunk1 == "true"
        address2 = TreeNode.new(@input[@offset...@offset + 4], @offset)
        @offset = @offset + 4
      else
        address2 = FAILURE
        if @offset > @failure
          @failure = @offset
          @expected = []
        end
        if @offset == @failure
          @expected << "\"true\""
        end
      end
      if address2 == FAILURE
        @offset = index2
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 5]
        end
        if chunk2 == "False"
          address2 = TreeNode.new(@input[@offset...@offset + 5], @offset)
          @offset = @offset + 5
        else
          address2 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\"False\""
          end
        end
        if address2 == FAILURE
          @offset = index2
          chunk3 = nil
          if @offset < @input_size
            chunk3 = @input[@offset...@offset + 5]
          end
          if chunk3 == "false"
            address2 = TreeNode.new(@input[@offset...@offset + 5], @offset)
            @offset = @offset + 5
          else
            address2 = FAILURE
            if @offset > @failure
              @failure = @offset
              @expected = []
            end
            if @offset == @failure
              @expected << "\"false\""
            end
          end
          if address2 == FAILURE
            @offset = index2
          end
        end
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      address3 = _read___
      unless address3 == FAILURE
        elements0 << address3
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_bool(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:boolean_][index0] = [address0, @offset]
  return address0
end
_read_chr() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1440
def _read_chr
  address0, index0 = FAILURE, @offset
  cached = @cache[:chr][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 =~ /\A[']/
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "[']"
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      chunk1 = nil
      if @offset < @input_size
        chunk1 = @input[@offset...@offset + 1]
      end
      if chunk1 =~ /\A[ !#-~]/
        address3 = TreeNode.new(@input[@offset...@offset + 1], @offset)
        @offset = @offset + 1
      else
        address3 = FAILURE
        if @offset > @failure
          @failure = @offset
          @expected = []
        end
        if @offset == @failure
          @expected << "[ !#-~]"
        end
      end
      unless address3 == FAILURE
        elements0 << address3
        address4 = FAILURE
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 1]
        end
        if chunk2 =~ /\A[']/
          address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address4 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "[']"
          end
        end
        unless address4 == FAILURE
          elements0 << address4
          address5 = FAILURE
          address5 = _read___
          unless address5 == FAILURE
            elements0 << address5
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_char(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:chr][index0] = [address0, @offset]
  return address0
end
_read_comp_expression() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 213
def _read_comp_expression
  address0, index0 = FAILURE, @offset
  cached = @cache[:comp_expression][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read_atom
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    remaining0, index2, elements1, address3 = 0, @offset, [], true
    until address3 == FAILURE
      index3, elements2 = @offset, []
      address4 = FAILURE
      address4 = _read_opt_
      unless address4 == FAILURE
        elements2 << address4
        address5 = FAILURE
        address5 = _read_atom
        unless address5 == FAILURE
          elements2 << address5
        else
          elements2 = nil
          @offset = index3
        end
      else
        elements2 = nil
        @offset = index3
      end
      if elements2.nil?
        address3 = FAILURE
      else
        address3 = TreeNode2.new(@input[index3...@offset], index3, elements2)
        @offset = @offset
      end
      unless address3 == FAILURE
        elements1 << address3
        remaining0 -= 1
      end
    end
    if remaining0 <= 0
      address2 = TreeNode.new(@input[index2...@offset], index2, elements1)
      @offset = @offset
    else
      address2 = FAILURE
    end
    unless address2 == FAILURE
      elements0 << address2
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_comp_exp(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:comp_expression][index0] = [address0, @offset]
  return address0
end
_read_comp_expression_ex() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 904
def _read_comp_expression_ex
  address0, index0 = FAILURE, @offset
  cached = @cache[:comp_expression_ex][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 == "("
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"(\""
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      address3 = _read_comp_expression
      unless address3 == FAILURE
        elements0 << address3
        address4 = FAILURE
        chunk1 = nil
        if @offset < @input_size
          chunk1 = @input[@offset...@offset + 1]
        end
        if chunk1 == ")"
          address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address4 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\")\""
          end
        end
        unless address4 == FAILURE
          elements0 << address4
          address5 = FAILURE
          address5 = _read___
          unless address5 == FAILURE
            elements0 << address5
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_comp_exp_ex(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:comp_expression_ex][index0] = [address0, @offset]
  return address0
end
_read_float_() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1646
def _read_float_
  address0, index0 = FAILURE, @offset
  cached = @cache[:float_][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 == "-"
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"-\""
      end
    end
    if address2 == FAILURE
      address2 = TreeNode.new(@input[index2...index2], index2)
      @offset = index2
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      remaining0, index3, elements1, address4 = 1, @offset, [], true
      until address4 == FAILURE
        chunk1 = nil
        if @offset < @input_size
          chunk1 = @input[@offset...@offset + 1]
        end
        if chunk1 =~ /\A[0-9]/
          address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address4 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "[0-9]"
          end
        end
        unless address4 == FAILURE
          elements1 << address4
          remaining0 -= 1
        end
      end
      if remaining0 <= 0
        address3 = TreeNode.new(@input[index3...@offset], index3, elements1)
        @offset = @offset
      else
        address3 = FAILURE
      end
      unless address3 == FAILURE
        elements0 << address3
        address5 = FAILURE
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 1]
        end
        if chunk2 == "."
          address5 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address5 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\".\""
          end
        end
        unless address5 == FAILURE
          elements0 << address5
          address6 = FAILURE
          remaining1, index4, elements2, address7 = 1, @offset, [], true
          until address7 == FAILURE
            chunk3 = nil
            if @offset < @input_size
              chunk3 = @input[@offset...@offset + 1]
            end
            if chunk3 =~ /\A[0-9]/
              address7 = TreeNode.new(@input[@offset...@offset + 1], @offset)
              @offset = @offset + 1
            else
              address7 = FAILURE
              if @offset > @failure
                @failure = @offset
                @expected = []
              end
              if @offset == @failure
                @expected << "[0-9]"
              end
            end
            unless address7 == FAILURE
              elements2 << address7
              remaining1 -= 1
            end
          end
          if remaining1 <= 0
            address6 = TreeNode.new(@input[index4...@offset], index4, elements2)
            @offset = @offset
          else
            address6 = FAILURE
          end
          unless address6 == FAILURE
            elements0 << address6
            address8 = FAILURE
            address8 = _read___
            unless address8 == FAILURE
              elements0 << address8
            else
              elements0 = nil
              @offset = index1
            end
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_float(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:float_][index0] = [address0, @offset]
  return address0
end
_read_func_call() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 581
def _read_func_call
  address0, index0 = FAILURE, @offset
  cached = @cache[:func_call][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read_unicode_set
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    remaining0, index2, elements1, address3 = 0, @offset, [], true
    until address3 == FAILURE
      address3 = _read_unicode_set_with_numbers
      unless address3 == FAILURE
        elements1 << address3
        remaining0 -= 1
      end
    end
    if remaining0 <= 0
      address2 = TreeNode.new(@input[index2...@offset], index2, elements1)
      @offset = @offset
    else
      address2 = FAILURE
    end
    unless address2 == FAILURE
      elements0 << address2
      address4 = FAILURE
      chunk0 = nil
      if @offset < @input_size
        chunk0 = @input[@offset...@offset + 1]
      end
      if chunk0 == "("
        address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
        @offset = @offset + 1
      else
        address4 = FAILURE
        if @offset > @failure
          @failure = @offset
          @expected = []
        end
        if @offset == @failure
          @expected << "\"(\""
        end
      end
      unless address4 == FAILURE
        elements0 << address4
        address5 = FAILURE
        index3 = @offset
        address5 = _read_atom
        if address5 == FAILURE
          address5 = TreeNode.new(@input[index3...index3], index3)
          @offset = index3
        end
        unless address5 == FAILURE
          elements0 << address5
          address6 = FAILURE
          chunk1 = nil
          if @offset < @input_size
            chunk1 = @input[@offset...@offset + 1]
          end
          if chunk1 == ")"
            address6 = TreeNode.new(@input[@offset...@offset + 1], @offset)
            @offset = @offset + 1
          else
            address6 = FAILURE
            if @offset > @failure
              @failure = @offset
              @expected = []
            end
            if @offset == @failure
              @expected << "\")\""
            end
          end
          unless address6 == FAILURE
            elements0 << address6
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_function_operation(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:func_call][index0] = [address0, @offset]
  return address0
end
_read_func_call_access() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 689
def _read_func_call_access
  address0, index0 = FAILURE, @offset
  cached = @cache[:func_call_access][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  chunk0 = nil
  if @offset < @input_size
    chunk0 = @input[@offset...@offset + 1]
  end
  if chunk0 == "."
    address1 = TreeNode.new(@input[@offset...@offset + 1], @offset)
    @offset = @offset + 1
  else
    address1 = FAILURE
    if @offset > @failure
      @failure = @offset
      @expected = []
    end
    if @offset == @failure
      @expected << "\".\""
    end
  end
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    address2 = _read_unicode_set
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      remaining0, index2, elements1, address4 = 0, @offset, [], true
      until address4 == FAILURE
        address4 = _read_unicode_set_with_numbers
        unless address4 == FAILURE
          elements1 << address4
          remaining0 -= 1
        end
      end
      if remaining0 <= 0
        address3 = TreeNode.new(@input[index2...@offset], index2, elements1)
        @offset = @offset
      else
        address3 = FAILURE
      end
      unless address3 == FAILURE
        elements0 << address3
        address5 = FAILURE
        chunk1 = nil
        if @offset < @input_size
          chunk1 = @input[@offset...@offset + 1]
        end
        if chunk1 == "("
          address5 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address5 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\"(\""
          end
        end
        unless address5 == FAILURE
          elements0 << address5
          address6 = FAILURE
          index3 = @offset
          address6 = _read_atom
          if address6 == FAILURE
            address6 = TreeNode.new(@input[index3...index3], index3)
            @offset = index3
          end
          unless address6 == FAILURE
            elements0 << address6
            address7 = FAILURE
            chunk2 = nil
            if @offset < @input_size
              chunk2 = @input[@offset...@offset + 1]
            end
            if chunk2 == ")"
              address7 = TreeNode.new(@input[@offset...@offset + 1], @offset)
              @offset = @offset + 1
            else
              address7 = FAILURE
              if @offset > @failure
                @failure = @offset
                @expected = []
              end
              if @offset == @failure
                @expected << "\")\""
              end
            end
            unless address7 == FAILURE
              elements0 << address7
            else
              elements0 = nil
              @offset = index1
            end
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_function_operation_access(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:func_call_access][index0] = [address0, @offset]
  return address0
end
_read_list() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1232
def _read_list
  address0, index0 = FAILURE, @offset
  cached = @cache[:list][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 == "["
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"[\""
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      address3 = _read___
      unless address3 == FAILURE
        elements0 << address3
        address4 = FAILURE
        index2 = @offset
        index3, elements1 = @offset, []
        address5 = FAILURE
        address5 = _read_atom
        unless address5 == FAILURE
          elements1 << address5
          address6 = FAILURE
          address6 = _read___
          unless address6 == FAILURE
            elements1 << address6
            address7 = FAILURE
            remaining0, index4, elements2, address8 = 0, @offset, [], true
            until address8 == FAILURE
              index5, elements3 = @offset, []
              address9 = FAILURE
              chunk1 = nil
              if @offset < @input_size
                chunk1 = @input[@offset...@offset + 1]
              end
              if chunk1 == ","
                address9 = TreeNode.new(@input[@offset...@offset + 1], @offset)
                @offset = @offset + 1
              else
                address9 = FAILURE
                if @offset > @failure
                  @failure = @offset
                  @expected = []
                end
                if @offset == @failure
                  @expected << "\",\""
                end
              end
              unless address9 == FAILURE
                elements3 << address9
                address10 = FAILURE
                address10 = _read___
                unless address10 == FAILURE
                  elements3 << address10
                  address11 = FAILURE
                  address11 = _read_atom
                  unless address11 == FAILURE
                    elements3 << address11
                    address12 = FAILURE
                    address12 = _read___
                    unless address12 == FAILURE
                      elements3 << address12
                    else
                      elements3 = nil
                      @offset = index5
                    end
                  else
                    elements3 = nil
                    @offset = index5
                  end
                else
                  elements3 = nil
                  @offset = index5
                end
              else
                elements3 = nil
                @offset = index5
              end
              if elements3.nil?
                address8 = FAILURE
              else
                address8 = TreeNode13.new(@input[index5...@offset], index5, elements3)
                @offset = @offset
              end
              unless address8 == FAILURE
                elements2 << address8
                remaining0 -= 1
              end
            end
            if remaining0 <= 0
              address7 = TreeNode.new(@input[index4...@offset], index4, elements2)
              @offset = @offset
            else
              address7 = FAILURE
            end
            unless address7 == FAILURE
              elements1 << address7
            else
              elements1 = nil
              @offset = index3
            end
          else
            elements1 = nil
            @offset = index3
          end
        else
          elements1 = nil
          @offset = index3
        end
        if elements1.nil?
          address4 = FAILURE
        else
          address4 = TreeNode12.new(@input[index3...@offset], index3, elements1)
          @offset = @offset
        end
        if address4 == FAILURE
          address4 = TreeNode.new(@input[index2...index2], index2)
          @offset = index2
        end
        unless address4 == FAILURE
          elements0 << address4
          address13 = FAILURE
          address13 = _read___
          unless address13 == FAILURE
            elements0 << address13
            address14 = FAILURE
            chunk2 = nil
            if @offset < @input_size
              chunk2 = @input[@offset...@offset + 1]
            end
            if chunk2 == "]"
              address14 = TreeNode.new(@input[@offset...@offset + 1], @offset)
              @offset = @offset + 1
            else
              address14 = FAILURE
              if @offset > @failure
                @failure = @offset
                @expected = []
              end
              if @offset == @failure
                @expected << "\"]\""
              end
            end
            unless address14 == FAILURE
              elements0 << address14
              address15 = FAILURE
              address15 = _read___
              unless address15 == FAILURE
                elements0 << address15
              else
                elements0 = nil
                @offset = index1
              end
            else
              elements0 = nil
              @offset = index1
            end
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_list(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:list][index0] = [address0, @offset]
  return address0
end
_read_map_access() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 491
def _read_map_access
  address0, index0 = FAILURE, @offset
  cached = @cache[:map_access][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  chunk0 = nil
  if @offset < @input_size
    chunk0 = @input[@offset...@offset + 1]
  end
  if chunk0 == "["
    address1 = TreeNode.new(@input[@offset...@offset + 1], @offset)
    @offset = @offset + 1
  else
    address1 = FAILURE
    if @offset > @failure
      @failure = @offset
      @expected = []
    end
    if @offset == @failure
      @expected << "\"[\""
    end
  end
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    address2 = _read_chr
    if address2 == FAILURE
      @offset = index2
      address2 = _read_string
      if address2 == FAILURE
        @offset = index2
        address2 = _read_apostrophe_string
        if address2 == FAILURE
          @offset = index2
          address2 = _read_number
          if address2 == FAILURE
            @offset = index2
          end
        end
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      chunk1 = nil
      if @offset < @input_size
        chunk1 = @input[@offset...@offset + 1]
      end
      if chunk1 == "]"
        address3 = TreeNode.new(@input[@offset...@offset + 1], @offset)
        @offset = @offset + 1
      else
        address3 = FAILURE
        if @offset > @failure
          @failure = @offset
          @expected = []
        end
        if @offset == @failure
          @expected << "\"]\""
        end
      end
      unless address3 == FAILURE
        elements0 << address3
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_lookup_operation(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:map_access][index0] = [address0, @offset]
  return address0
end
_read_namespace() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 821
def _read_namespace
  address0, index0 = FAILURE, @offset
  cached = @cache[:namespace][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    address2 = _read_func_call
    if address2 == FAILURE
      @offset = index2
      address2 = _read_variable
      if address2 == FAILURE
        @offset = index2
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      remaining0, index3, elements1, address4 = 0, @offset, [], true
      until address4 == FAILURE
        index4 = @offset
        address4 = _read_func_call_access
        if address4 == FAILURE
          @offset = index4
          address4 = _read_map_access
          if address4 == FAILURE
            @offset = index4
            address4 = _read_variable_access
            if address4 == FAILURE
              @offset = index4
            end
          end
        end
        unless address4 == FAILURE
          elements1 << address4
          remaining0 -= 1
        end
      end
      if remaining0 <= 0
        address3 = TreeNode.new(@input[index3...@offset], index3, elements1)
        @offset = @offset
      else
        address3 = FAILURE
      end
      unless address3 == FAILURE
        elements0 << address3
        address5 = FAILURE
        address5 = _read___
        unless address5 == FAILURE
          elements0 << address5
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_and_execute_namespace_operation(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:namespace][index0] = [address0, @offset]
  return address0
end
_read_null_() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1929
def _read_null_
  address0, index0 = FAILURE, @offset
  cached = @cache[:null_][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 4]
    end
    if chunk0 == "None"
      address2 = TreeNode.new(@input[@offset...@offset + 4], @offset)
      @offset = @offset + 4
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"None\""
      end
    end
    if address2 == FAILURE
      @offset = index2
      chunk1 = nil
      if @offset < @input_size
        chunk1 = @input[@offset...@offset + 3]
      end
      if chunk1 == "nil"
        address2 = TreeNode.new(@input[@offset...@offset + 3], @offset)
        @offset = @offset + 3
      else
        address2 = FAILURE
        if @offset > @failure
          @failure = @offset
          @expected = []
        end
        if @offset == @failure
          @expected << "\"nil\""
        end
      end
      if address2 == FAILURE
        @offset = index2
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 4]
        end
        if chunk2 == "null"
          address2 = TreeNode.new(@input[@offset...@offset + 4], @offset)
          @offset = @offset + 4
        else
          address2 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\"null\""
          end
        end
        if address2 == FAILURE
          @offset = index2
        end
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      address3 = _read___
      unless address3 == FAILURE
        elements0 << address3
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_null(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:null_][index0] = [address0, @offset]
  return address0
end
_read_number() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 1546
def _read_number
  address0, index0 = FAILURE, @offset
  cached = @cache[:number][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 == "-"
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"-\""
      end
    end
    if address2 == FAILURE
      address2 = TreeNode.new(@input[index2...index2], index2)
      @offset = index2
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      remaining0, index3, elements1, address4 = 1, @offset, [], true
      until address4 == FAILURE
        chunk1 = nil
        if @offset < @input_size
          chunk1 = @input[@offset...@offset + 1]
        end
        if chunk1 =~ /\A[0-9]/
          address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address4 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "[0-9]"
          end
        end
        unless address4 == FAILURE
          elements1 << address4
          remaining0 -= 1
        end
      end
      if remaining0 <= 0
        address3 = TreeNode.new(@input[index3...@offset], index3, elements1)
        @offset = @offset
      else
        address3 = FAILURE
      end
      unless address3 == FAILURE
        elements0 << address3
        address5 = FAILURE
        address5 = _read___
        unless address5 == FAILURE
          elements0 << address5
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_number(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:number][index0] = [address0, @offset]
  return address0
end
_read_opt_() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 2089
def _read_opt_
  address0, index0 = FAILURE, @offset
  cached = @cache[:opt_][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    index2 = @offset
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 == "+"
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"+\""
      end
    end
    if address2 == FAILURE
      @offset = index2
      chunk1 = nil
      if @offset < @input_size
        chunk1 = @input[@offset...@offset + 1]
      end
      if chunk1 == "-"
        address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
        @offset = @offset + 1
      else
        address2 = FAILURE
        if @offset > @failure
          @failure = @offset
          @expected = []
        end
        if @offset == @failure
          @expected << "\"-\""
        end
      end
      if address2 == FAILURE
        @offset = index2
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 1]
        end
        if chunk2 == "*"
          address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address2 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "\"*\""
          end
        end
        if address2 == FAILURE
          @offset = index2
          chunk3 = nil
          if @offset < @input_size
            chunk3 = @input[@offset...@offset + 1]
          end
          if chunk3 == "/"
            address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
            @offset = @offset + 1
          else
            address2 = FAILURE
            if @offset > @failure
              @failure = @offset
              @expected = []
            end
            if @offset == @failure
              @expected << "\"/\""
            end
          end
          if address2 == FAILURE
            @offset = index2
            chunk4 = nil
            if @offset < @input_size
              chunk4 = @input[@offset...@offset + 2]
            end
            if chunk4 == "<="
              address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
              @offset = @offset + 2
            else
              address2 = FAILURE
              if @offset > @failure
                @failure = @offset
                @expected = []
              end
              if @offset == @failure
                @expected << "\"<=\""
              end
            end
            if address2 == FAILURE
              @offset = index2
              chunk5 = nil
              if @offset < @input_size
                chunk5 = @input[@offset...@offset + 2]
              end
              if chunk5 == ">="
                address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                @offset = @offset + 2
              else
                address2 = FAILURE
                if @offset > @failure
                  @failure = @offset
                  @expected = []
                end
                if @offset == @failure
                  @expected << "\">=\""
                end
              end
              if address2 == FAILURE
                @offset = index2
                chunk6 = nil
                if @offset < @input_size
                  chunk6 = @input[@offset...@offset + 2]
                end
                if chunk6 == "!="
                  address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                  @offset = @offset + 2
                else
                  address2 = FAILURE
                  if @offset > @failure
                    @failure = @offset
                    @expected = []
                  end
                  if @offset == @failure
                    @expected << "\"!=\""
                  end
                end
                if address2 == FAILURE
                  @offset = index2
                  chunk7 = nil
                  if @offset < @input_size
                    chunk7 = @input[@offset...@offset + 2]
                  end
                  if chunk7 == "=="
                    address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                    @offset = @offset + 2
                  else
                    address2 = FAILURE
                    if @offset > @failure
                      @failure = @offset
                      @expected = []
                    end
                    if @offset == @failure
                      @expected << "\"==\""
                    end
                  end
                  if address2 == FAILURE
                    @offset = index2
                    chunk8 = nil
                    if @offset < @input_size
                      chunk8 = @input[@offset...@offset + 1]
                    end
                    if chunk8 == "="
                      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
                      @offset = @offset + 1
                    else
                      address2 = FAILURE
                      if @offset > @failure
                        @failure = @offset
                        @expected = []
                      end
                      if @offset == @failure
                        @expected << "\"=\""
                      end
                    end
                    if address2 == FAILURE
                      @offset = index2
                      chunk9 = nil
                      if @offset < @input_size
                        chunk9 = @input[@offset...@offset + 1]
                      end
                      if chunk9 == ">"
                        address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
                        @offset = @offset + 1
                      else
                        address2 = FAILURE
                        if @offset > @failure
                          @failure = @offset
                          @expected = []
                        end
                        if @offset == @failure
                          @expected << "\">\""
                        end
                      end
                      if address2 == FAILURE
                        @offset = index2
                        chunk10 = nil
                        if @offset < @input_size
                          chunk10 = @input[@offset...@offset + 1]
                        end
                        if chunk10 == "<"
                          address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
                          @offset = @offset + 1
                        else
                          address2 = FAILURE
                          if @offset > @failure
                            @failure = @offset
                            @expected = []
                          end
                          if @offset == @failure
                            @expected << "\"<\""
                          end
                        end
                        if address2 == FAILURE
                          @offset = index2
                          chunk11 = nil
                          if @offset < @input_size
                            chunk11 = @input[@offset...@offset + 2]
                          end
                          if chunk11 == "LT"
                            address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                            @offset = @offset + 2
                          else
                            address2 = FAILURE
                            if @offset > @failure
                              @failure = @offset
                              @expected = []
                            end
                            if @offset == @failure
                              @expected << "\"LT\""
                            end
                          end
                          if address2 == FAILURE
                            @offset = index2
                            chunk12 = nil
                            if @offset < @input_size
                              chunk12 = @input[@offset...@offset + 2]
                            end
                            if chunk12 == "GT"
                              address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                              @offset = @offset + 2
                            else
                              address2 = FAILURE
                              if @offset > @failure
                                @failure = @offset
                                @expected = []
                              end
                              if @offset == @failure
                                @expected << "\"GT\""
                              end
                            end
                            if address2 == FAILURE
                              @offset = index2
                              chunk13 = nil
                              if @offset < @input_size
                                chunk13 = @input[@offset...@offset + 2]
                              end
                              if chunk13 == "LE"
                                address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                @offset = @offset + 2
                              else
                                address2 = FAILURE
                                if @offset > @failure
                                  @failure = @offset
                                  @expected = []
                                end
                                if @offset == @failure
                                  @expected << "\"LE\""
                                end
                              end
                              if address2 == FAILURE
                                @offset = index2
                                chunk14 = nil
                                if @offset < @input_size
                                  chunk14 = @input[@offset...@offset + 2]
                                end
                                if chunk14 == "GE"
                                  address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                  @offset = @offset + 2
                                else
                                  address2 = FAILURE
                                  if @offset > @failure
                                    @failure = @offset
                                    @expected = []
                                  end
                                  if @offset == @failure
                                    @expected << "\"GE\""
                                  end
                                end
                                if address2 == FAILURE
                                  @offset = index2
                                  chunk15 = nil
                                  if @offset < @input_size
                                    chunk15 = @input[@offset...@offset + 2]
                                  end
                                  if chunk15 == "EQ"
                                    address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                    @offset = @offset + 2
                                  else
                                    address2 = FAILURE
                                    if @offset > @failure
                                      @failure = @offset
                                      @expected = []
                                    end
                                    if @offset == @failure
                                      @expected << "\"EQ\""
                                    end
                                  end
                                  if address2 == FAILURE
                                    @offset = index2
                                    chunk16 = nil
                                    if @offset < @input_size
                                      chunk16 = @input[@offset...@offset + 2]
                                    end
                                    if chunk16 == "NE"
                                      address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                      @offset = @offset + 2
                                    else
                                      address2 = FAILURE
                                      if @offset > @failure
                                        @failure = @offset
                                        @expected = []
                                      end
                                      if @offset == @failure
                                        @expected << "\"NE\""
                                      end
                                    end
                                    if address2 == FAILURE
                                      @offset = index2
                                      chunk17 = nil
                                      if @offset < @input_size
                                        chunk17 = @input[@offset...@offset + 2]
                                      end
                                      if chunk17 == "lt"
                                        address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                        @offset = @offset + 2
                                      else
                                        address2 = FAILURE
                                        if @offset > @failure
                                          @failure = @offset
                                          @expected = []
                                        end
                                        if @offset == @failure
                                          @expected << "\"lt\""
                                        end
                                      end
                                      if address2 == FAILURE
                                        @offset = index2
                                        chunk18 = nil
                                        if @offset < @input_size
                                          chunk18 = @input[@offset...@offset + 2]
                                        end
                                        if chunk18 == "gt"
                                          address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                          @offset = @offset + 2
                                        else
                                          address2 = FAILURE
                                          if @offset > @failure
                                            @failure = @offset
                                            @expected = []
                                          end
                                          if @offset == @failure
                                            @expected << "\"gt\""
                                          end
                                        end
                                        if address2 == FAILURE
                                          @offset = index2
                                          chunk19 = nil
                                          if @offset < @input_size
                                            chunk19 = @input[@offset...@offset + 2]
                                          end
                                          if chunk19 == "le"
                                            address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                            @offset = @offset + 2
                                          else
                                            address2 = FAILURE
                                            if @offset > @failure
                                              @failure = @offset
                                              @expected = []
                                            end
                                            if @offset == @failure
                                              @expected << "\"le\""
                                            end
                                          end
                                          if address2 == FAILURE
                                            @offset = index2
                                            chunk20 = nil
                                            if @offset < @input_size
                                              chunk20 = @input[@offset...@offset + 2]
                                            end
                                            if chunk20 == "ge"
                                              address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                              @offset = @offset + 2
                                            else
                                              address2 = FAILURE
                                              if @offset > @failure
                                                @failure = @offset
                                                @expected = []
                                              end
                                              if @offset == @failure
                                                @expected << "\"ge\""
                                              end
                                            end
                                            if address2 == FAILURE
                                              @offset = index2
                                              chunk21 = nil
                                              if @offset < @input_size
                                                chunk21 = @input[@offset...@offset + 2]
                                              end
                                              if chunk21 == "eq"
                                                address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                @offset = @offset + 2
                                              else
                                                address2 = FAILURE
                                                if @offset > @failure
                                                  @failure = @offset
                                                  @expected = []
                                                end
                                                if @offset == @failure
                                                  @expected << "\"eq\""
                                                end
                                              end
                                              if address2 == FAILURE
                                                @offset = index2
                                                chunk22 = nil
                                                if @offset < @input_size
                                                  chunk22 = @input[@offset...@offset + 2]
                                                end
                                                if chunk22 == "ne"
                                                  address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                  @offset = @offset + 2
                                                else
                                                  address2 = FAILURE
                                                  if @offset > @failure
                                                    @failure = @offset
                                                    @expected = []
                                                  end
                                                  if @offset == @failure
                                                    @expected << "\"ne\""
                                                  end
                                                end
                                                if address2 == FAILURE
                                                  @offset = index2
                                                  chunk23 = nil
                                                  if @offset < @input_size
                                                    chunk23 = @input[@offset...@offset + 2]
                                                  end
                                                  if chunk23 == "in"
                                                    address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                    @offset = @offset + 2
                                                  else
                                                    address2 = FAILURE
                                                    if @offset > @failure
                                                      @failure = @offset
                                                      @expected = []
                                                    end
                                                    if @offset == @failure
                                                      @expected << "\"in\""
                                                    end
                                                  end
                                                  if address2 == FAILURE
                                                    @offset = index2
                                                    chunk24 = nil
                                                    if @offset < @input_size
                                                      chunk24 = @input[@offset...@offset + 2]
                                                    end
                                                    if chunk24 == "IN"
                                                      address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                      @offset = @offset + 2
                                                    else
                                                      address2 = FAILURE
                                                      if @offset > @failure
                                                        @failure = @offset
                                                        @expected = []
                                                      end
                                                      if @offset == @failure
                                                        @expected << "\"IN\""
                                                      end
                                                    end
                                                    if address2 == FAILURE
                                                      @offset = index2
                                                      chunk25 = nil
                                                      if @offset < @input_size
                                                        chunk25 = @input[@offset...@offset + 2]
                                                      end
                                                      if chunk25 == "or"
                                                        address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                        @offset = @offset + 2
                                                      else
                                                        address2 = FAILURE
                                                        if @offset > @failure
                                                          @failure = @offset
                                                          @expected = []
                                                        end
                                                        if @offset == @failure
                                                          @expected << "\"or\""
                                                        end
                                                      end
                                                      if address2 == FAILURE
                                                        @offset = index2
                                                        chunk26 = nil
                                                        if @offset < @input_size
                                                          chunk26 = @input[@offset...@offset + 2]
                                                        end
                                                        if chunk26 == "OR"
                                                          address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                          @offset = @offset + 2
                                                        else
                                                          address2 = FAILURE
                                                          if @offset > @failure
                                                            @failure = @offset
                                                            @expected = []
                                                          end
                                                          if @offset == @failure
                                                            @expected << "\"OR\""
                                                          end
                                                        end
                                                        if address2 == FAILURE
                                                          @offset = index2
                                                          chunk27 = nil
                                                          if @offset < @input_size
                                                            chunk27 = @input[@offset...@offset + 2]
                                                          end
                                                          if chunk27 == "||"
                                                            address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                            @offset = @offset + 2
                                                          else
                                                            address2 = FAILURE
                                                            if @offset > @failure
                                                              @failure = @offset
                                                              @expected = []
                                                            end
                                                            if @offset == @failure
                                                              @expected << "\"||\""
                                                            end
                                                          end
                                                          if address2 == FAILURE
                                                            @offset = index2
                                                            chunk28 = nil
                                                            if @offset < @input_size
                                                              chunk28 = @input[@offset...@offset + 3]
                                                            end
                                                            if chunk28 == "and"
                                                              address2 = TreeNode.new(@input[@offset...@offset + 3], @offset)
                                                              @offset = @offset + 3
                                                            else
                                                              address2 = FAILURE
                                                              if @offset > @failure
                                                                @failure = @offset
                                                                @expected = []
                                                              end
                                                              if @offset == @failure
                                                                @expected << "\"and\""
                                                              end
                                                            end
                                                            if address2 == FAILURE
                                                              @offset = index2
                                                              chunk29 = nil
                                                              if @offset < @input_size
                                                                chunk29 = @input[@offset...@offset + 3]
                                                              end
                                                              if chunk29 == "AND"
                                                                address2 = TreeNode.new(@input[@offset...@offset + 3], @offset)
                                                                @offset = @offset + 3
                                                              else
                                                                address2 = FAILURE
                                                                if @offset > @failure
                                                                  @failure = @offset
                                                                  @expected = []
                                                                end
                                                                if @offset == @failure
                                                                  @expected << "\"AND\""
                                                                end
                                                              end
                                                              if address2 == FAILURE
                                                                @offset = index2
                                                                chunk30 = nil
                                                                if @offset < @input_size
                                                                  chunk30 = @input[@offset...@offset + 2]
                                                                end
                                                                if chunk30 == "&&"
                                                                  address2 = TreeNode.new(@input[@offset...@offset + 2], @offset)
                                                                  @offset = @offset + 2
                                                                else
                                                                  address2 = FAILURE
                                                                  if @offset > @failure
                                                                    @failure = @offset
                                                                    @expected = []
                                                                  end
                                                                  if @offset == @failure
                                                                    @expected << "\"&&\""
                                                                  end
                                                                end
                                                                if address2 == FAILURE
                                                                  @offset = index2
                                                                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
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      address3 = _read___
      unless address3 == FAILURE
        elements0 << address3
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_opt(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:opt_][index0] = [address0, @offset]
  return address0
end
_read_string() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 994
def _read_string
  address0, index0 = FAILURE, @offset
  cached = @cache[:string][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 1]
    end
    if chunk0 =~ /\A[\"]/
      address2 = TreeNode.new(@input[@offset...@offset + 1], @offset)
      @offset = @offset + 1
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "[\\\"]"
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      remaining0, index2, elements1, address4 = 0, @offset, [], true
      until address4 == FAILURE
        chunk1 = nil
        if @offset < @input_size
          chunk1 = @input[@offset...@offset + 1]
        end
        if chunk1 =~ /\A[ !#-~]/
          address4 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address4 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "[ !#-~]"
          end
        end
        unless address4 == FAILURE
          elements1 << address4
          remaining0 -= 1
        end
      end
      if remaining0 <= 0
        address3 = TreeNode.new(@input[index2...@offset], index2, elements1)
        @offset = @offset
      else
        address3 = FAILURE
      end
      unless address3 == FAILURE
        elements0 << address3
        address5 = FAILURE
        chunk2 = nil
        if @offset < @input_size
          chunk2 = @input[@offset...@offset + 1]
        end
        if chunk2 =~ /\A[\"]/
          address5 = TreeNode.new(@input[@offset...@offset + 1], @offset)
          @offset = @offset + 1
        else
          address5 = FAILURE
          if @offset > @failure
            @failure = @offset
            @expected = []
          end
          if @offset == @failure
            @expected << "[\\\"]"
          end
        end
        unless address5 == FAILURE
          elements0 << address5
          address6 = FAILURE
          address6 = _read___
          unless address6 == FAILURE
            elements0 << address6
          else
            elements0 = nil
            @offset = index1
          end
        else
          elements0 = nil
          @offset = index1
        end
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_string(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:string][index0] = [address0, @offset]
  return address0
end
_read_undefined_() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 2031
def _read_undefined_
  address0, index0 = FAILURE, @offset
  cached = @cache[:undefined_][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read___
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    chunk0 = nil
    if @offset < @input_size
      chunk0 = @input[@offset...@offset + 9]
    end
    if chunk0 == "undefined"
      address2 = TreeNode.new(@input[@offset...@offset + 9], @offset)
      @offset = @offset + 9
    else
      address2 = FAILURE
      if @offset > @failure
        @failure = @offset
        @expected = []
      end
      if @offset == @failure
        @expected << "\"undefined\""
      end
    end
    unless address2 == FAILURE
      elements0 << address2
      address3 = FAILURE
      address3 = _read___
      unless address3 == FAILURE
        elements0 << address3
      else
        elements0 = nil
        @offset = index1
      end
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_undefined(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:undefined_][index0] = [address0, @offset]
  return address0
end
_read_unicode_set() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 338
def _read_unicode_set
  address0, index0 = FAILURE, @offset
  cached = @cache[:unicode_set][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  chunk0 = nil
  if @offset < @input_size
    chunk0 = @input[@offset...@offset + 1]
  end
  if chunk0 =~ /\A[a-zA-Z_$@]/
    address0 = TreeNode.new(@input[@offset...@offset + 1], @offset)
    @offset = @offset + 1
  else
    address0 = FAILURE
    if @offset > @failure
      @failure = @offset
      @expected = []
    end
    if @offset == @failure
      @expected << "[a-zA-Z_$@]"
    end
  end
  @cache[:unicode_set][index0] = [address0, @offset]
  return address0
end
_read_unicode_set_with_numbers() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 366
def _read_unicode_set_with_numbers
  address0, index0 = FAILURE, @offset
  cached = @cache[:unicode_set_with_numbers][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  chunk0 = nil
  if @offset < @input_size
    chunk0 = @input[@offset...@offset + 1]
  end
  if chunk0 =~ /\A[a-zA-Z0-9_$@]/
    address0 = TreeNode.new(@input[@offset...@offset + 1], @offset)
    @offset = @offset + 1
  else
    address0 = FAILURE
    if @offset > @failure
      @failure = @offset
      @expected = []
    end
    if @offset == @failure
      @expected << "[a-zA-Z0-9_$@]"
    end
  end
  @cache[:unicode_set_with_numbers][index0] = [address0, @offset]
  return address0
end
_read_variable() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 394
def _read_variable
  address0, index0 = FAILURE, @offset
  cached = @cache[:variable][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  address1 = _read_unicode_set
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    remaining0, index2, elements1, address3 = 0, @offset, [], true
    until address3 == FAILURE
      address3 = _read_unicode_set_with_numbers
      unless address3 == FAILURE
        elements1 << address3
        remaining0 -= 1
      end
    end
    if remaining0 <= 0
      address2 = TreeNode.new(@input[index2...@offset], index2, elements1)
      @offset = @offset
    else
      address2 = FAILURE
    end
    unless address2 == FAILURE
      elements0 << address2
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_attribute(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:variable][index0] = [address0, @offset]
  return address0
end
_read_variable_access() click to toggle source
# File lib/rookout/processor/paths/canopy/maps.rb, line 441
def _read_variable_access
  address0, index0 = FAILURE, @offset
  cached = @cache[:variable_access][index0]
  if cached
    @offset = cached[1]
    return cached[0]
  end
  index1, elements0 = @offset, []
  address1 = FAILURE
  chunk0 = nil
  if @offset < @input_size
    chunk0 = @input[@offset...@offset + 1]
  end
  if chunk0 == "."
    address1 = TreeNode.new(@input[@offset...@offset + 1], @offset)
    @offset = @offset + 1
  else
    address1 = FAILURE
    if @offset > @failure
      @failure = @offset
      @expected = []
    end
    if @offset == @failure
      @expected << "\".\""
    end
  end
  unless address1 == FAILURE
    elements0 << address1
    address2 = FAILURE
    address2 = _read_variable
    unless address2 == FAILURE
      elements0 << address2
    else
      elements0 = nil
      @offset = index1
    end
  else
    elements0 = nil
    @offset = index1
  end
  if elements0.nil?
    address0 = FAILURE
  else
    address0 = @actions.make_attribute_operation(@input, index1, @offset, elements0)
    @offset = @offset
  end
  @cache[:variable_access][index0] = [address0, @offset]
  return address0
end