Reworked evaluation to use internal type instead of boost::any

This commit is contained in:
2019-05-24 19:14:30 +02:00
parent fed4c65bef
commit 4a034bc051
10 changed files with 197 additions and 132 deletions

View File

@@ -6,11 +6,14 @@
#include <boost/any.hpp>
#include "../Binder/BoundStatements/BoundStatement.hpp"
#include "../Script.hpp"
#include "EvalValues/EvalValue.hpp"
#include "EvalValues/NumericEvalValue.hpp"
using namespace boost;
class Evaluator {
any* _result;
EvalValue* _result;
Script* _scriptData;
@@ -18,14 +21,12 @@ class Evaluator {
void EvaluateBlockStatement(BoundBlockStatement* statement);
void EvaluateExpressionStatement(BoundExpressionStatement* statement);
any* EvaluateExpression(BoundExpression* expression);
long EvaluateIntegerExpression(BoundExpression* expression);
double EvaluateFloatExpression(BoundExpression* expression);
bool EvaluateBoolExpression(BoundExpression* expression);
std::string EvaluateStringExpression(BoundExpression* expression);
EvalValue* EvaluateExpression(BoundExpression* expression);
NumericEvalValue* EvaluateIntegerExpression(BoundExpression* expression);
EvalValue* EvaluateBoolExpression(BoundExpression* expression);
EvalValue* EvaluateStringExpression(BoundExpression* expression);
long EvaluateIntegerBinary(BoundBinaryExpression* expression);
double EvaluateFloatBinary(BoundBinaryExpression *expression);
NumericEvalValue* EvaluateIntegerBinary(BoundBinaryExpression* expression);
public:
Evaluator(Script* script){
_scriptData = script;