18 std::map<std::string, std::vector<sammine_util::QualifiedName>> variant_to_enum;
21 bool insideImportedDef_ =
false;
22 std::string currentImportModule_;
24 std::vector<std::string> currentGenericTypeParams_;
25 ScopeGeneratorVisitor() {
26 scope_stack.push_context();
33 virtual void enter_new_scope()
override { this->scope_stack.push_context(); }
34 virtual void exit_new_scope()
override { this->scope_stack.pop_context(); }
36 return this->scope_stack.recursiveQueryName(symbol);
39 const auto *parent_scope = this->scope_stack.parent_scope();
40 return parent_scope->recursiveQueryName(symbol);
42 void register_name_parent(
const std::string &symbol,
44 auto *parent_scope = this->scope_stack.parent_scope();
45 return parent_scope->registerNameT(symbol, loc);
48 return this->scope_stack.registerNameT(symbol, loc);
53 virtual void preorder_walk(
ProgramAST *ast)
override;
56 virtual void preorder_walk(
VarDefAST *ast)
override;
60 ast->scrutinee->accept_vis(
this);
68 virtual void visit(
ExternAST *ast)
override;
69 virtual void preorder_walk(
ExternAST *ast)
override;
71 virtual void preorder_walk(
FuncDefAST *ast)
override;
73 virtual void preorder_walk(
EnumDefAST *ast)
override;
79 virtual void preorder_walk(
CallExprAST *ast)
override;
84 virtual void preorder_walk(
BoolExprAST *ast)
override;
85 virtual void preorder_walk(
CharExprAST *ast)
override;
89 virtual void preorder_walk(
BlockAST *ast)
override;
90 virtual void preorder_walk(
IfExprAST *ast)
override;
91 virtual void preorder_walk(
UnitExprAST *ast)
override;
92 virtual void preorder_walk(
TypedVarAST *ast)
override;
96 virtual void preorder_walk(
FreeExprAST *ast)
override;
99 virtual void preorder_walk(
LenExprAST *ast)
override;
103 virtual void preorder_walk(
CaseExprAST *ast)
override;
110 virtual void postorder_walk(
ProgramAST *ast)
override;
111 virtual void postorder_walk(
VarDefAST *ast)
override;
112 virtual void postorder_walk(
ExternAST *ast)
override;
114 virtual void postorder_walk(
FuncDefAST *ast)
override;
115 virtual void postorder_walk(
StructDefAST *ast)
override;
116 virtual void postorder_walk(
EnumDefAST *ast)
override;
118 virtual void postorder_walk(
PrototypeAST *ast)
override;
119 virtual void postorder_walk(
CallExprAST *ast)
override;
124 virtual void postorder_walk(
BoolExprAST *ast)
override;
125 virtual void postorder_walk(
CharExprAST *ast)
override;
127 virtual void postorder_walk(
BlockAST *ast)
override;
128 virtual void postorder_walk(
IfExprAST *ast)
override;
129 virtual void postorder_walk(
UnitExprAST *ast)
override;
130 virtual void postorder_walk(
TypedVarAST *ast)
override;
131 virtual void postorder_walk(
DerefExprAST *ast)
override;
133 virtual void postorder_walk(
AllocExprAST *ast)
override;
134 virtual void postorder_walk(
FreeExprAST *ast)
override;
136 virtual void postorder_walk(
IndexExprAST *ast)
override;
137 virtual void postorder_walk(
LenExprAST *ast)
override;
141 virtual void postorder_walk(
CaseExprAST *ast)
override;
142 virtual void postorder_walk(
WhileExprAST *ast)
override;
A simple scoping class, doesn't differentiate between different names, like variable name,...
NameQueryResult
NameQueryResult enum.
Definition LexicalContext.h:13