Class: Furud::Formula::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/furud/formula.rb

Instance Method Summary collapse

Constructor Details

#initialize(source, origin:) ⇒ Parser

Returns a new instance of Parser.



370
371
372
373
374
375
# File 'lib/furud/formula.rb', line 370

def initialize(source, origin:)
  @origin = origin
  source = source.sub(/\A\s*=/, "")
  @tokens = Lexer.new(source, origin).tokens
  @index = 0
end

Instance Method Details

#parse ⇒ Object

Raises:



377
378
379
380
381
382
383
384
# File 'lib/furud/formula.rb', line 377

def parse
  raise ParseError, "formula is empty" if current.type == :eof

  node = comparison
  raise ParseError, "unexpected token #{current.value.inspect} at #{current.position}" unless current.type == :eof

  qualify_sheets(node, @origin.sheet)
end