Class: FEEL::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/feel/parser.rb

Overview

Reopen the Treetop-generated Parser class to add convenience methods

Constant Summary collapse

@@parser =
new

Class Method Summary collapse

Class Method Details

.clean_tree(root_node) ⇒ Object



28
29
30
31
32
# File 'lib/feel/parser.rb', line 28

def self.clean_tree(root_node)
  return if(root_node.elements.nil?)
  root_node.elements.delete_if{ |node| node.class.name == "Treetop::Runtime::SyntaxNode" }
  root_node.elements.each { |node| self.clean_tree(node) }
end

.parse(expression, root: nil) ⇒ Object



16
17
18
19
20
# File 'lib/feel/parser.rb', line 16

def self.parse(expression, root: nil)
  @@parser.parse(expression, root: root).tap do |ast|
    raise SyntaxError, "Invalid expression: #{expression.inspect}" unless ast
  end
end

.parse_test(expression) ⇒ Object



22
23
24
25
26
# File 'lib/feel/parser.rb', line 22

def self.parse_test(expression)
  @@parser.parse(expression || "-", root: :simple_unary_tests).tap do |ast|
    raise SyntaxError, "Invalid unary test: #{expression.inspect}" unless ast
  end
end