// rpimpl_eval.cpp // Copyright (c) Menno Rubingh 2016. Web: [http://rubinghsoftware.de] // // MR Mar 2016. // // Definition of the function 'evaluateRPExpression()': // Evaluate ParsedOperationList (read-only), // using a given VarTable instance (read + write) for the variables. // // Used internally in the RPInterpreter implementation. // // #include "rpimpl_oplist.h" //ParsedOperationList. #include "rpimpl_var.h" //VarTable. #include "rpimpl_stack.h" //StackDbl. #include "rpimpl_ex.h" //SContext, Ex. void evaluateRPExpression( ParsedOperationList const * iOpList, VarTable * uVars ) { StackDbl stack; // Execute the OperationXxx instances. for ( int k = 0; k < iOpList->getN(); k++ ) { OperationBase const * pOp = iOpList->getElem(k); pOp->execute( &stack, uVars ); } // Check that the stack is now empty. if ( stack.getN() != 0 ) { SContext dummy; //Use char number == 0. throw Ex( &dummy, "stacksize != 0 at end of expression" ); } }