#include #ifndef PORYGONLANG_SCRIPT_HPP #define PORYGONLANG_SCRIPT_HPP #include #include #include "Diagnostics/Diagnostics.hpp" #include "Binder/BoundStatements/BoundStatement.hpp" class Script; class Evaluator; #include "Evaluator/Evaluator.hpp" #include "Evaluator/EvalValues/EvalValue.hpp" #include "Utilities/HashedString.hpp" using namespace std; class Script { friend class Evaluator; shared_ptr _lastValue; Evaluator* _evaluator; unordered_map>* _scriptVariables; explicit Script(); void Parse(string script); BoundScriptStatement* BoundScript; public: static Script* Create(string script); Diagnostics* Diagnostics; ~Script(); void Evaluate(); EvalValue* GetLastValue(){ return _lastValue.get(); }; EvalValue* GetVariable(const string& key); bool HasVariable(const string& key); }; #endif //PORYGONLANG_SCRIPT_HPP