This commit is contained in:
@@ -15,11 +15,11 @@ using namespace std;
|
||||
|
||||
namespace Porygon::Evaluation{
|
||||
class Evaluator {
|
||||
shared_ptr<EvalValue> _returnValue;
|
||||
map<Utilities::HashedString, shared_ptr<EvalValue>>* _scriptVariables;
|
||||
shared_ptr<const EvalValue> _returnValue;
|
||||
map<Utilities::HashedString, shared_ptr<const EvalValue>>* _scriptVariables;
|
||||
bool _hasReturned;
|
||||
bool _hasBroken;
|
||||
shared_ptr<EvalValue> _lastValue;
|
||||
shared_ptr<const EvalValue> _lastValue;
|
||||
|
||||
//Porygon::Script* _scriptData;
|
||||
shared_ptr<EvaluationScope> _evaluationScope;
|
||||
@@ -36,39 +36,39 @@ namespace Porygon::Evaluation{
|
||||
void EvaluateGenericForStatement(const BoundGenericForStatement *statement);
|
||||
void EvaluateWhileStatement(const BoundWhileStatement *statement);
|
||||
|
||||
const shared_ptr<EvalValue> EvaluateExpression(const BoundExpression *expression);
|
||||
const shared_ptr<NumericEvalValue> EvaluateIntegerExpression(const BoundExpression *expression);
|
||||
const shared_ptr<BooleanEvalValue> EvaluateBoolExpression(const BoundExpression *expression);
|
||||
const shared_ptr<StringEvalValue> EvaluateStringExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateFunctionExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateNilExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateTableExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateExpression(const BoundExpression *expression);
|
||||
shared_ptr<const NumericEvalValue> EvaluateIntegerExpression(const BoundExpression *expression);
|
||||
shared_ptr<const BooleanEvalValue> EvaluateBoolExpression(const BoundExpression *expression);
|
||||
shared_ptr<const StringEvalValue> EvaluateStringExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateFunctionExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateNilExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateTableExpression(const BoundExpression *expression);
|
||||
|
||||
const shared_ptr<NumericEvalValue> EvaluateIntegerBinary(const BoundBinaryExpression *expression);
|
||||
const shared_ptr<BooleanEvalValue> EvaluateBooleanBinary(const BoundBinaryExpression *expression);
|
||||
const shared_ptr<StringEvalValue> EvaluateStringBinary(const BoundBinaryExpression *expression);
|
||||
shared_ptr<const NumericEvalValue> EvaluateIntegerBinary(const BoundBinaryExpression *expression);
|
||||
shared_ptr<const BooleanEvalValue> EvaluateBooleanBinary(const BoundBinaryExpression *expression);
|
||||
shared_ptr<const StringEvalValue> EvaluateStringBinary(const BoundBinaryExpression *expression);
|
||||
|
||||
const shared_ptr<NumericEvalValue> EvaluateIntegerUnary(const BoundUnaryExpression *expression);
|
||||
const shared_ptr<BooleanEvalValue> EvaluateBooleanUnary(const BoundUnaryExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateFunctionCallExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateIndexExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluatePeriodIndexExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateNumericTableExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateComplexTableExpression(const BoundExpression *expression);
|
||||
const shared_ptr<EvalValue> EvaluateUserDataExpression(const BoundExpression *expression);
|
||||
shared_ptr<const NumericEvalValue> EvaluateIntegerUnary(const BoundUnaryExpression *expression);
|
||||
shared_ptr<const BooleanEvalValue> EvaluateBooleanUnary(const BoundUnaryExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateFunctionCallExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateIndexExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluatePeriodIndexExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateNumericTableExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateUserDataExpression(const BoundExpression *expression);
|
||||
shared_ptr<const EvalValue> EvaluateComplexTableExpression(const BoundExpression *expression);
|
||||
|
||||
const shared_ptr<EvalValue> GetVariable(const BoundVariableExpression *expression);
|
||||
shared_ptr<const EvalValue> GetVariable(const BoundVariableExpression *expression);
|
||||
public:
|
||||
explicit Evaluator(map<Utilities::HashedString, shared_ptr<EvalValue>>* scriptVariables)
|
||||
explicit Evaluator(map<Utilities::HashedString, shared_ptr<const EvalValue>>* scriptVariables)
|
||||
: _scriptVariables(scriptVariables), _hasReturned(false), _hasBroken(false), _returnValue(nullptr),
|
||||
_evaluationScope(nullptr){
|
||||
}
|
||||
|
||||
EvalValue* Evaluate(const BoundScriptStatement* statement);
|
||||
const shared_ptr<EvalValue> EvaluateFunction(const GenericFunctionEvalValue *function,
|
||||
const EvalValue* Evaluate(const BoundScriptStatement* statement);
|
||||
shared_ptr<const EvalValue> EvaluateFunction(const GenericFunctionEvalValue *function,
|
||||
const vector<EvalValue *> ¶meters);
|
||||
|
||||
EvalValue* GetLastValue(){
|
||||
inline const EvalValue* GetLastValue(){
|
||||
return _lastValue.get();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user