Method: Q#_nt_minus

Defined in:
lib/q/parser.rb

#_nt_minusObject



1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
# File 'lib/q/parser.rb', line 1901

def _nt_minus
  start_index = index
  if node_cache[:minus].has_key?(index)
    cached = node_cache[:minus][index]
    if cached
      node_cache[:minus][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))
    r0.extend(Minus0)
    @index += match_len
  else
    terminal_parse_failure('-')
    r0 = nil
  end

  node_cache[:minus][start_index] = r0

  r0
end