Class: FEEL::Parser
- Inherits:
-
Object
- Object
- FEEL::Parser
- 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
- .clean_tree(root_node) ⇒ Object
- .parse(expression, root: nil) ⇒ Object
- .parse_test(expression) ⇒ Object
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 |