tipc
A TIP to LLVM compiler
LocalNameCollector.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "ASTVisitor.h"
4 #include <map>
5 
18  std::map<std::string, ASTDeclNode *> curMap;
19  std::map<std::string, std::pair<ASTDeclNode *, bool>> fMap;
20  std::string funName;
21  bool first = true;
22 
23 public:
24  LocalNameCollector(std::map<std::string, std::pair<ASTDeclNode *, bool>> fMap)
25  : fMap(fMap) {}
26 
27  // this map is public so that the static method can access it
28  std::map<ASTDeclNode *, std::map<std::string, ASTDeclNode *>> lMap;
29 
30  static std::map<ASTDeclNode *, std::map<std::string, ASTDeclNode *>>
31  build(ASTProgram *p,
32  std::map<std::string, std::pair<ASTDeclNode *, bool>> fMap);
33 
34  virtual bool visit(ASTFunction *element) override;
35  virtual void endVisit(ASTFunction *element) override;
36  virtual void endVisit(ASTDeclNode *element) override;
37  virtual void endVisit(ASTVariableExpr *element) override;
38 };
Class for declaring a name, e.g., function, parameter, variable.
Definition: ASTDeclNode.h:7
Class for defining the signature, local declarations, and a body of a function.
Definition: ASTFunction.h:11
Class for a program which is a name and a list of functions.
Definition: ASTProgram.h:11
Class for referencing a variable.
Definition: ASTVariableExpr.h:7
Base class for AST visitors.
Definition: ASTVisitor.h:23
Records local names declared in each function and checks for errors.
Definition: LocalNameCollector.h:17
virtual void endVisit(ASTDeclNode *element) override
virtual bool visit(ASTFunction *element) override
Definition: LocalNameCollector.cpp:13
virtual void endVisit(ASTFunction *element) override
Definition: LocalNameCollector.cpp:20
virtual void endVisit(ASTVariableExpr *element) override
LocalNameCollector(std::map< std::string, std::pair< ASTDeclNode *, bool >> fMap)
Definition: LocalNameCollector.h:24
static std::map< ASTDeclNode *, std::map< std::string, ASTDeclNode * > > build(ASTProgram *p, std::map< std::string, std::pair< ASTDeclNode *, bool >> fMap)
Definition: LocalNameCollector.cpp:6
std::map< ASTDeclNode *, std::map< std::string, ASTDeclNode * > > lMap
Definition: LocalNameCollector.h:28