Class: Yoda::Typing::Evaluator
- Inherits:
-
Object
- Object
- Yoda::Typing::Evaluator
- Defined in:
- lib/yoda/typing/evaluator.rb
Overview
Evaluator interpret codes abstractly and assumes types of terms.
Instance Attribute Summary collapse
- #context ⇒ Context readonly
Instance Method Summary collapse
- #bind_trace(node, trace) ⇒ Object
- #find_trace(node) ⇒ Trace::Base?
-
#initialize(context) ⇒ Evaluator
constructor
A new instance of Evaluator.
- #process(node) ⇒ Model::Types::Base
Constructor Details
#initialize(context) ⇒ Evaluator
Returns a new instance of Evaluator.
9 10 11 |
# File 'lib/yoda/typing/evaluator.rb', line 9 def initialize(context) @context = context end |
Instance Attribute Details
#context ⇒ Context (readonly)
6 7 8 |
# File 'lib/yoda/typing/evaluator.rb', line 6 def context @context end |
Instance Method Details
#bind_trace(node, trace) ⇒ Object
21 22 23 |
# File 'lib/yoda/typing/evaluator.rb', line 21 def bind_trace(node, trace) context.bind_trace(node, trace) end |
#find_trace(node) ⇒ Trace::Base?
27 28 29 |
# File 'lib/yoda/typing/evaluator.rb', line 27 def find_trace(node) context.find_trace(node) end |
#process(node) ⇒ Model::Types::Base
15 16 17 |
# File 'lib/yoda/typing/evaluator.rb', line 15 def process(node) evaluate(node).tap { |type| bind_trace(node, Traces::Normal.new(context, type)) unless find_trace(node) } end |