#ifndef PORYGONLANG_SCRIPT_HPP #define PORYGONLANG_SCRIPT_HPP #include #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; Evaluator* _evaluator; unordered_map>* _scriptVariables; BoundScriptStatement* _boundScript; explicit Script(); void Parse(string script); public: static Script* Create(string script); Diagnostics* Diagnostics; ~Script(); void Evaluate(); EvalValue* GetLastValue(); EvalValue* GetVariable(const string& key); bool HasVariable(const string& key); EvalValue* CallFunction(const string& key, vector variables); bool HasFunction(const string& key); }; #endif //PORYGONLANG_SCRIPT_HPP