Handle bound classes as constants during evaluation
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -22,34 +22,34 @@ class Evaluator {
|
||||
Script* _scriptData;
|
||||
shared_ptr<EvaluationScope> _evaluationScope;
|
||||
|
||||
void EvaluateStatement(BoundStatement* statement);
|
||||
void EvaluateBlockStatement(BoundBlockStatement* statement, bool clearScope);
|
||||
void EvaluateExpressionStatement(BoundExpressionStatement* statement);
|
||||
void EvaluateAssignmentStatement(BoundAssignmentStatement* statement);
|
||||
void EvaluateFunctionDeclarationStatement(BoundFunctionDeclarationStatement *statement);
|
||||
void EvaluateReturnStatement(BoundReturnStatement *statement);
|
||||
void EvaluateConditionalStatement(BoundConditionalStatement *statement);
|
||||
void EvaluateStatement(const BoundStatement* statement);
|
||||
void EvaluateBlockStatement(const BoundBlockStatement *statement);
|
||||
void EvaluateExpressionStatement(const BoundExpressionStatement* statement);
|
||||
void EvaluateAssignmentStatement(const BoundAssignmentStatement* statement);
|
||||
void EvaluateFunctionDeclarationStatement(const BoundFunctionDeclarationStatement *statement);
|
||||
void EvaluateReturnStatement(const BoundReturnStatement *statement);
|
||||
void EvaluateConditionalStatement(const BoundConditionalStatement *statement);
|
||||
|
||||
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);
|
||||
shared_ptr<EvalValue>EvaluateTableExpression(BoundExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateExpression(const BoundExpression* expression);
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerExpression(const BoundExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBoolExpression(const BoundExpression* expression);
|
||||
shared_ptr<StringEvalValue> EvaluateStringExpression(const BoundExpression* expression);
|
||||
shared_ptr<EvalValue> EvaluateFunctionExpression(const BoundExpression *expression);
|
||||
shared_ptr<EvalValue>EvaluateNilExpression(const BoundExpression *expression);
|
||||
shared_ptr<EvalValue>EvaluateTableExpression(const BoundExpression *expression);
|
||||
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerBinary(BoundBinaryExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBooleanBinary(BoundBinaryExpression *expression);
|
||||
shared_ptr<StringEvalValue> EvaluateStringBinary(BoundBinaryExpression *expression);
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerBinary(const BoundBinaryExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBooleanBinary(const BoundBinaryExpression *expression);
|
||||
shared_ptr<StringEvalValue> EvaluateStringBinary(const BoundBinaryExpression *expression);
|
||||
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerUnary(BoundUnaryExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBooleanUnary(BoundUnaryExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateFunctionCallExpression(BoundExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateIndexExpression(BoundExpression* expression);
|
||||
shared_ptr<EvalValue> EvaluateNumericTableExpression(BoundExpression* expression);
|
||||
shared_ptr<EvalValue> EvaluateComplexTableExpression(BoundExpression *expression);
|
||||
shared_ptr<NumericEvalValue> EvaluateIntegerUnary(const BoundUnaryExpression* expression);
|
||||
shared_ptr<BooleanEvalValue> EvaluateBooleanUnary(const BoundUnaryExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateFunctionCallExpression(const BoundExpression *expression);
|
||||
shared_ptr<EvalValue> EvaluateIndexExpression(const BoundExpression* expression);
|
||||
shared_ptr<EvalValue> EvaluateNumericTableExpression(const BoundExpression* expression);
|
||||
shared_ptr<EvalValue> EvaluateComplexTableExpression(const BoundExpression *expression);
|
||||
|
||||
shared_ptr<EvalValue> GetVariable(BoundVariableExpression *expression);
|
||||
shared_ptr<EvalValue> GetVariable(const BoundVariableExpression *expression);
|
||||
public:
|
||||
explicit Evaluator(Script* script){
|
||||
_scriptData = script;
|
||||
@@ -58,8 +58,8 @@ public:
|
||||
_evaluationScope = nullptr;
|
||||
}
|
||||
|
||||
EvalValue* Evaluate(BoundScriptStatement* statement);
|
||||
shared_ptr<EvalValue> EvaluateFunction(ScriptFunctionEvalValue* func, vector<EvalValue*> parameters);
|
||||
EvalValue* Evaluate(const BoundScriptStatement* statement);
|
||||
shared_ptr<EvalValue> EvaluateFunction(const ScriptFunctionEvalValue *function, const vector<EvalValue *>& parameters);
|
||||
|
||||
EvalValue* GetLastValue(){
|
||||
return _lastValue.get();
|
||||
|
||||
Reference in New Issue
Block a user