Class: Nydp::Cond
- Inherits:
-
Object
- Object
- Nydp::Cond
- Extended by:
- Helper
- Includes:
- Helper
- Defined in:
- lib/nydp/cond.rb
Instance Attribute Summary collapse
-
#condition ⇒ Object
readonly
Returns the value of attribute condition.
-
#conditional ⇒ Object
readonly
Returns the value of attribute conditional.
Class Method Summary collapse
Instance Method Summary collapse
- #execute(vm) ⇒ Object
-
#initialize(cond, when_true, when_false) ⇒ Cond
constructor
A new instance of Cond.
- #inspect ⇒ Object
- #to_s ⇒ Object
Methods included from Helper
cons, list, literal?, pair?, sym, sym?
Constructor Details
#initialize(cond, when_true, when_false) ⇒ Cond
Returns a new instance of Cond.
29 30 31 |
# File 'lib/nydp/cond.rb', line 29 def initialize cond, when_true, when_false @condition, @conditional = cond, cons(ExecuteConditionalInstruction.new(when_true, when_false)) end |
Instance Attribute Details
#condition ⇒ Object (readonly)
Returns the value of attribute condition.
27 28 29 |
# File 'lib/nydp/cond.rb', line 27 def condition @condition end |
#conditional ⇒ Object (readonly)
Returns the value of attribute conditional.
27 28 29 |
# File 'lib/nydp/cond.rb', line 27 def conditional @conditional end |
Class Method Details
.build(expressions, bindings) ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/nydp/cond.rb', line 45 def self.build expressions, bindings if expressions.is_a? Nydp::Pair cond = cons Compiler.compile expressions.car, bindings when_true = cons Compiler.compile expressions.cdr.car, bindings when_false = cons Compiler.compile expressions.cdr.cdr.car, bindings new(cond, when_true, when_false) else raise "can't compile Cond: #{expr.inspect}" end end |
Instance Method Details
#execute(vm) ⇒ Object
33 34 35 36 |
# File 'lib/nydp/cond.rb', line 33 def execute vm vm.push_instructions conditional, vm.peek_context vm.push_instructions condition, vm.peek_context end |
#inspect ⇒ Object
38 39 40 |
# File 'lib/nydp/cond.rb', line 38 def inspect "cond:#{condition.inspect}:#{conditional.inspect}" end |
#to_s ⇒ Object
41 42 43 |
# File 'lib/nydp/cond.rb', line 41 def to_s "(cond #{condition.car.to_s} #{conditional.to_s})" end |