ready to write type tracker

This commit is contained in:
2024-08-14 09:57:42 +00:00
parent 1ba056f0ac
commit 7995862a30
5 changed files with 182 additions and 14 deletions

View File

@ -55,8 +55,19 @@ class ASTNodeVirturalVisitor : public ASTNodeVisitorBase {
};
class ASTSemanticCheckVisitor : public ASTNodeVirturalVisitor {
bool is_in_func;
FunctionSchema cur_func_schema;
size_t loop_level;
std::shared_ptr<GlobalScope> global_scope;
friend std::shared_ptr<Program_ASTNode> CheckAndDecorate(std::shared_ptr<Program_ASTNode> src);
bool ClassExists(const std::string &name) {
if (name == "int" || name == "bool") return true;
return global_scope->classes.find(name) != global_scope->classes.end();
}
public:
ASTSemanticCheckVisitor() = default;
ASTSemanticCheckVisitor() : is_in_func(false), loop_level(0) {}
// Structural AST Nodes
void ActuralVisit(FuncDef_ASTNode *node) override;
void ActuralVisit(ClassDef_ASTNode *node) override;