tipc
A TIP to LLVM compiler
ASTVisitor.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "AST.h"
4 
23 class ASTVisitor {
24 public:
25  virtual bool visit(ASTProgram *element) { return true; }
26  virtual void endVisit(ASTProgram *element) {}
27  virtual bool visit(ASTFunction *element) { return true; }
28  virtual void endVisit(ASTFunction *element) {}
29  virtual bool visit(ASTNumberExpr *element) { return true; }
30  virtual void endVisit(ASTNumberExpr *element) {}
31  virtual bool visit(ASTVariableExpr *element) { return true; }
32  virtual void endVisit(ASTVariableExpr *element) {}
33  virtual bool visit(ASTBinaryExpr *element) { return true; }
34  virtual void endVisit(ASTBinaryExpr *element) {}
35  virtual bool visit(ASTInputExpr *element) { return true; }
36  virtual void endVisit(ASTInputExpr *element) {}
37  virtual bool visit(ASTFunAppExpr *element) { return true; }
38  virtual void endVisit(ASTFunAppExpr *element) {}
39  virtual bool visit(ASTAllocExpr *element) { return true; }
40  virtual void endVisit(ASTAllocExpr *element) {}
41  virtual bool visit(ASTRefExpr *element) { return true; }
42  virtual void endVisit(ASTRefExpr *element) {}
43  virtual bool visit(ASTDeRefExpr *element) { return true; }
44  virtual void endVisit(ASTDeRefExpr *element) {}
45  virtual bool visit(ASTNullExpr *element) { return true; }
46  virtual void endVisit(ASTNullExpr *element) {}
47  virtual bool visit(ASTFieldExpr *element) { return true; }
48  virtual void endVisit(ASTFieldExpr *element) {}
49  virtual bool visit(ASTRecordExpr *element) { return true; }
50  virtual void endVisit(ASTRecordExpr *element) {}
51  virtual bool visit(ASTAccessExpr *element) { return true; }
52  virtual void endVisit(ASTAccessExpr *element) {}
53  virtual bool visit(ASTDeclNode *element) { return true; }
54  virtual void endVisit(ASTDeclNode *element) {}
55  virtual bool visit(ASTDeclStmt *element) { return true; }
56  virtual void endVisit(ASTDeclStmt *element) {}
57  virtual bool visit(ASTAssignStmt *element) { return true; }
58  virtual void endVisit(ASTAssignStmt *element) {}
59  virtual bool visit(ASTWhileStmt *element) { return true; }
60  virtual void endVisit(ASTWhileStmt *element) {}
61  virtual bool visit(ASTIfStmt *element) { return true; }
62  virtual void endVisit(ASTIfStmt *element) {}
63  virtual bool visit(ASTOutputStmt *element) { return true; }
64  virtual void endVisit(ASTOutputStmt *element) {}
65  virtual bool visit(ASTReturnStmt *element) { return true; }
66  virtual void endVisit(ASTReturnStmt *element) {}
67  virtual bool visit(ASTErrorStmt *element) { return true; }
68  virtual void endVisit(ASTErrorStmt *element) {}
69  virtual bool visit(ASTBlockStmt *element) { return true; }
70  virtual void endVisit(ASTBlockStmt *element) {}
71 };
Class for a record field access.
Definition: ASTAccessExpr.h:7
Class for alloc expression.
Definition: ASTAllocExpr.h:7
Class for assignment.
Definition: ASTAssignStmt.h:8
Class for a binary operator.
Definition: ASTBinaryExpr.h:7
Class for block of statements.
Definition: ASTBlockStmt.h:7
Class for dereferencing a pointer expression.
Definition: ASTDeRefExpr.h:7
Class for declaring a name, e.g., function, parameter, variable.
Definition: ASTDeclNode.h:7
Class for local variable declaration statement.
Definition: ASTDeclStmt.h:8
Class for a error statement.
Definition: ASTErrorStmt.h:8
Class for the field of a record.
Definition: ASTFieldExpr.h:7
Class for function call expressions.
Definition: ASTFunAppExpr.h:7
Class for defining the signature, local declarations, and a body of a function.
Definition: ASTFunction.h:11
Class for if-then-else.
Definition: ASTIfStmt.h:8
Class for input expression.
Definition: ASTInputExpr.h:7
Class for a null expression.
Definition: ASTNullExpr.h:7
Class for numeric literals.
Definition: ASTNumberExpr.h:7
Class for an output statement.
Definition: ASTOutputStmt.h:8
Class for a program which is a name and a list of functions.
Definition: ASTProgram.h:11
Class for defining a record.
Definition: ASTRecordExpr.h:8
Class for referencing the address of an expression.
Definition: ASTRefExpr.h:7
Class for a return statement.
Definition: ASTReturnStmt.h:8
Class for referencing a variable.
Definition: ASTVariableExpr.h:7
Base class for AST visitors.
Definition: ASTVisitor.h:23
virtual bool visit(ASTBinaryExpr *element)
Definition: ASTVisitor.h:33
virtual bool visit(ASTAssignStmt *element)
Definition: ASTVisitor.h:57
virtual bool visit(ASTFunAppExpr *element)
Definition: ASTVisitor.h:37
virtual void endVisit(ASTFieldExpr *element)
Definition: ASTVisitor.h:48
virtual void endVisit(ASTErrorStmt *element)
Definition: ASTVisitor.h:68
virtual bool visit(ASTDeclNode *element)
Definition: ASTVisitor.h:53
virtual void endVisit(ASTBlockStmt *element)
Definition: ASTVisitor.h:70
virtual void endVisit(ASTAccessExpr *element)
Definition: ASTVisitor.h:52
virtual bool visit(ASTNumberExpr *element)
Definition: ASTVisitor.h:29
virtual void endVisit(ASTRefExpr *element)
Definition: ASTVisitor.h:42
virtual bool visit(ASTAllocExpr *element)
Definition: ASTVisitor.h:39
virtual bool visit(ASTInputExpr *element)
Definition: ASTVisitor.h:35
virtual void endVisit(ASTDeclStmt *element)
Definition: ASTVisitor.h:56
virtual bool visit(ASTFieldExpr *element)
Definition: ASTVisitor.h:47
virtual void endVisit(ASTDeRefExpr *element)
Definition: ASTVisitor.h:44
virtual void endVisit(ASTBinaryExpr *element)
Definition: ASTVisitor.h:34
virtual void endVisit(ASTRecordExpr *element)
Definition: ASTVisitor.h:50
virtual void endVisit(ASTWhileStmt *element)
Definition: ASTVisitor.h:60
virtual bool visit(ASTBlockStmt *element)
Definition: ASTVisitor.h:69
virtual bool visit(ASTVariableExpr *element)
Definition: ASTVisitor.h:31
virtual void endVisit(ASTReturnStmt *element)
Definition: ASTVisitor.h:66
virtual void endVisit(ASTAllocExpr *element)
Definition: ASTVisitor.h:40
virtual void endVisit(ASTOutputStmt *element)
Definition: ASTVisitor.h:64
virtual bool visit(ASTOutputStmt *element)
Definition: ASTVisitor.h:63
virtual bool visit(ASTRecordExpr *element)
Definition: ASTVisitor.h:49
virtual void endVisit(ASTDeclNode *element)
Definition: ASTVisitor.h:54
virtual bool visit(ASTDeRefExpr *element)
Definition: ASTVisitor.h:43
virtual void endVisit(ASTProgram *element)
Definition: ASTVisitor.h:26
virtual void endVisit(ASTFunAppExpr *element)
Definition: ASTVisitor.h:38
virtual void endVisit(ASTNumberExpr *element)
Definition: ASTVisitor.h:30
virtual bool visit(ASTFunction *element)
Definition: ASTVisitor.h:27
virtual void endVisit(ASTNullExpr *element)
Definition: ASTVisitor.h:46
virtual bool visit(ASTRefExpr *element)
Definition: ASTVisitor.h:41
virtual bool visit(ASTDeclStmt *element)
Definition: ASTVisitor.h:55
virtual void endVisit(ASTIfStmt *element)
Definition: ASTVisitor.h:62
virtual bool visit(ASTAccessExpr *element)
Definition: ASTVisitor.h:51
virtual void endVisit(ASTVariableExpr *element)
Definition: ASTVisitor.h:32
virtual void endVisit(ASTAssignStmt *element)
Definition: ASTVisitor.h:58
virtual bool visit(ASTReturnStmt *element)
Definition: ASTVisitor.h:65
virtual void endVisit(ASTFunction *element)
Definition: ASTVisitor.h:28
virtual bool visit(ASTIfStmt *element)
Definition: ASTVisitor.h:61
virtual bool visit(ASTWhileStmt *element)
Definition: ASTVisitor.h:59
virtual bool visit(ASTErrorStmt *element)
Definition: ASTVisitor.h:67
virtual bool visit(ASTNullExpr *element)
Definition: ASTVisitor.h:45
virtual void endVisit(ASTInputExpr *element)
Definition: ASTVisitor.h:36
virtual bool visit(ASTProgram *element)
Definition: ASTVisitor.h:25
Class for a while loop.
Definition: ASTWhileStmt.h:8