Rework evaluation to use shared pointers, fix bugs
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
#define PORYGONLANG_EVALUATOR_HPP
|
||||
|
||||
#include <string>
|
||||
#include <boost/any.hpp>
|
||||
#include "../Binder/BoundStatements/BoundStatement.hpp"
|
||||
#include "../Script.hpp"
|
||||
#include "EvalValues/EvalValue.hpp"
|
||||
@@ -12,10 +11,10 @@
|
||||
#include "EvalValues/StringEvalValue.hpp"
|
||||
#include "EvaluationScope/EvaluationScope.hpp"
|
||||
|
||||
using namespace boost;
|
||||
using namespace std;
|
||||
|
||||
class Evaluator {
|
||||
EvalValue* _result;
|
||||
shared_ptr<EvalValue> _result;
|
||||
|
||||
Script* _scriptData;
|
||||
EvaluationScope* _evaluationScope;
|
||||
@@ -25,31 +24,29 @@ class Evaluator {
|
||||
void EvaluateAssignmentStatement(BoundAssignmentStatement* statement);
|
||||
void EvaluateFunctionDeclarationStatement(BoundFunctionDeclarationStatement *statement);
|
||||
|
||||
EvalValue* EvaluateExpression(BoundExpression* expression);
|
||||
NumericEvalValue* EvaluateIntegerExpression(BoundExpression* expression);
|
||||
BooleanEvalValue* EvaluateBoolExpression(BoundExpression* expression);
|
||||
StringEvalValue* EvaluateStringExpression(BoundExpression* expression);
|
||||
EvalValue* EvaluateFunctionExpression(BoundExpression *expression);
|
||||
EvalValue *EvaluateNilExpression(BoundExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateExpression(BoundExpression* expression);
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerExpression(BoundExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBoolExpression(BoundExpression* expression);
|
||||
shared_ptr<StringEvalValue> EvaluateStringExpression(BoundExpression* expression);
|
||||
shared_ptr<EvalValue> EvaluateFunctionExpression(BoundExpression *expression);
|
||||
shared_ptr<EvalValue>EvaluateNilExpression(BoundExpression *expression);
|
||||
|
||||
NumericEvalValue* EvaluateIntegerBinary(BoundBinaryExpression* expression);
|
||||
BooleanEvalValue *EvaluateBooleanBinary(BoundBinaryExpression *expression);
|
||||
StringEvalValue *EvaluateStringBinary(BoundBinaryExpression *expression);
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerBinary(BoundBinaryExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBooleanBinary(BoundBinaryExpression *expression);
|
||||
shared_ptr<StringEvalValue> EvaluateStringBinary(BoundBinaryExpression *expression);
|
||||
|
||||
NumericEvalValue* EvaluateIntegerUnary(BoundUnaryExpression* expression);
|
||||
BooleanEvalValue *EvaluateBooleanUnary(BoundUnaryExpression *expression);
|
||||
EvalValue *EvaluateFunctionCallExpression(BoundExpression *expression);
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerUnary(BoundUnaryExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBooleanUnary(BoundUnaryExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateFunctionCallExpression(BoundExpression *expression);
|
||||
|
||||
EvalValue *GetVariable(BoundVariableExpression *expression);
|
||||
shared_ptr<EvalValue> GetVariable(BoundVariableExpression *expression);
|
||||
public:
|
||||
explicit Evaluator(Script* script){
|
||||
_scriptData = script;
|
||||
_result = nullptr;
|
||||
_evaluationScope = nullptr;
|
||||
}
|
||||
|
||||
~Evaluator(){
|
||||
delete _result;
|
||||
delete _evaluationScope;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user