Work on evaluation

This commit is contained in:
2019-05-23 18:50:09 +02:00
parent 57cd3efec9
commit d949d9aa8f
10 changed files with 283 additions and 4 deletions

View File

@@ -0,0 +1,39 @@
#ifndef PORYGONLANG_EVALUATOR_HPP
#define PORYGONLANG_EVALUATOR_HPP
#include <string>
#include <boost/any.hpp>
#include "../Binder/BoundStatements/BoundStatement.hpp"
#include "../Script.hpp"
using namespace boost;
class Evaluator {
any* _result;
Script* _scriptData;
void EvaluateStatement(BoundStatement* statement);
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);
long EvaluateIntegerBinary(BoundBinaryExpression* expression);
double EvaluateFloatBinary(BoundBinaryExpression *expression);
public:
Evaluator(Script* script){
_scriptData = script;
}
void Evaluate(BoundScriptStatement* statement);
};
#endif //PORYGONLANG_EVALUATOR_HPP