upd: first version of function call

This commit is contained in:
2023-11-09 17:28:41 +08:00
parent 9cc802fb7a
commit 5ad5615586
4 changed files with 100 additions and 13 deletions

View File

@ -8,6 +8,7 @@
#include <string>
#include <vector>
#include "Evalvisitor.h"
#include "Python3ParserBaseVisitor.h"
#include "int2048/int2048.h"
class InterpretException : public std::exception {
@ -71,14 +72,6 @@ struct FunctionItem {
const std::vector<ParaArguItemType> &para_list)
: code_address(code_address), para_list(para_list) {}
};
class FucntionContainer {
std::unordered_map<std::string, FunctionItem> FunctionIndex;
public:
void AddFunction(const std::string &name, const FunctionItem &item);
std::any CallFunction(const std::string &name,
const std::vector<ParaArguItemType> &args);
};
class VariableContainer {
std::unordered_map<std::string, std::any> GlobalScope;
std::stack<std::unordered_map<std::string, std::any>> StackScopes;
@ -87,7 +80,17 @@ class VariableContainer {
void CreateFrame();
void DestroyFrame();
std::any ReadVariable(const std::string &name);
void WriteVariable(const std::string &name, const std::any &value);
void WriteVariable(const std::string &name, const std::any &value,
bool cover = false);
};
class FucntionContainer {
std::unordered_map<std::string, FunctionItem> FunctionIndex;
public:
void AddFunction(const std::string &name, const FunctionItem &item);
std::any CallFunction(const std::string &name,
const std::vector<ParaArguItemType> &args,
VariableContainer &Varables);
};
std::any DeQuate(std::any val, VariableContainer &Variables);