17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/janeway/interpreters/tree_constructor.rb', line 17
def self.ast_node_to_interpreter(expr)
case expr
when AST::RootNode then Interpreters::RootNodeInterpreter.new(expr)
when AST::ArraySliceSelector then Interpreters::ArraySliceSelectorInterpreter.new(expr)
when AST::IndexSelector then Interpreters::IndexSelectorInterpreter.new(expr)
when AST::NameSelector then Interpreters::NameSelectorInterpreter.new(expr)
when AST::WildcardSelector then Interpreters::WildcardSelectorInterpreter.new(expr)
when AST::FilterSelector then Interpreters::FilterSelectorInterpreter.new(expr)
when AST::ChildSegment then Interpreters::ChildSegmentInterpreter.new(expr)
when AST::DescendantSegment then Interpreters::DescendantSegmentInterpreter.new(expr)
when AST::BinaryOperator then Interpreters::BinaryOperatorInterpreter.new(expr)
when AST::UnaryOperator then Interpreters::UnaryOperatorInterpreter.new(expr)
when AST::CurrentNode then Interpreters::CurrentNodeInterpreter.new(expr)
when AST::Function then Interpreters::FunctionInterpreter.new(expr)
when AST::StringType, AST::Number, AST::Null, AST::Boolean then Literal.new expr.value
when nil then nil else
raise "Unknown AST expression: #{expr.inspect}"
end
end
|