PorygonLang/src/Script.hpp

48 lines
977 B
C++
Raw Normal View History

2019-05-21 10:59:15 +00:00
#include <utility>
#ifndef PORYGONLANG_SCRIPT_HPP
#define PORYGONLANG_SCRIPT_HPP
#include <string>
2019-05-28 15:49:03 +00:00
#include <unordered_map>
2019-05-21 11:56:08 +00:00
#include "Diagnostics/Diagnostics.hpp"
#include "Binder/BoundStatements/BoundStatement.hpp"
2019-05-23 16:50:09 +00:00
class Script;
class Evaluator;
#include "Evaluator/Evaluator.hpp"
#include "Evaluator/EvalValues/EvalValue.hpp"
2019-05-28 15:49:03 +00:00
#include "Utilities/HashedString.hpp"
2019-05-21 10:59:15 +00:00
using namespace std;
class Script {
2019-05-23 16:50:09 +00:00
friend class Evaluator;
shared_ptr<EvalValue> _lastValue;
2019-05-23 16:50:09 +00:00
Evaluator* _evaluator;
unordered_map<int, shared_ptr<EvalValue>>* _scriptVariables;
2019-05-23 16:50:09 +00:00
explicit Script();
2019-05-21 10:59:15 +00:00
void Parse(string script);
BoundScriptStatement* BoundScript;
2019-05-21 10:59:15 +00:00
public:
2019-05-28 15:49:03 +00:00
static Script* Create(string script);
2019-05-21 12:15:39 +00:00
Diagnostics* Diagnostics;
~Script();
2019-05-23 16:50:09 +00:00
void Evaluate();
EvalValue* GetLastValue(){
return _lastValue.get();
2019-05-23 16:50:09 +00:00
};
2019-05-28 15:49:03 +00:00
EvalValue* GetVariable(const string& key);
bool HasVariable(const string& key);
2019-05-21 10:59:15 +00:00
};
#endif //PORYGONLANG_SCRIPT_HPP