diff --git a/include/xo/interpreter2/VirtualSchematikaMachine.hpp b/include/xo/interpreter2/VirtualSchematikaMachine.hpp index 774659eb..d06deb26 100644 --- a/include/xo/interpreter2/VirtualSchematikaMachine.hpp +++ b/include/xo/interpreter2/VirtualSchematikaMachine.hpp @@ -120,12 +120,18 @@ namespace xo { **/ void _do_eval_lambda_op(); - /** evaluate a variable expression + /** evaluate variable expression (definition) * Require: * - expression in @ref expr_ **/ void _do_eval_variable_op(); + /** evaluate a variable reference (use after definition) + * Require: + * - expression in @ref expr_ + **/ + void _do_eval_varref_op(); + /** evaluate an apply expression * Require: * - expression in @ref expr_ diff --git a/src/interpreter2/VirtualSchematikaMachine.cpp b/src/interpreter2/VirtualSchematikaMachine.cpp index b32f6b24..1395209a 100644 --- a/src/interpreter2/VirtualSchematikaMachine.cpp +++ b/src/interpreter2/VirtualSchematikaMachine.cpp @@ -167,6 +167,9 @@ namespace xo { case exprtype::variable: _do_eval_variable_op(); break; + case exprtype::varref: + _do_eval_varref_op(); + break; case exprtype::apply: _do_eval_apply_op(); break; @@ -210,6 +213,13 @@ namespace xo { assert(false); } + void + VirtualSchematikaMachine::_do_eval_varref_op() + { + // not implemented + assert(false); + } + void VirtualSchematikaMachine::_do_eval_apply_op() {