-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisitor.hpp
99 lines (97 loc) · 4.59 KB
/
visitor.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#ifndef PJPPROJECT_VISITOR_HPP
#define PJPPROJECT_VISITOR_HPP
#include <cstdint>
#include <memory>
#include <string>
#include <vector>
namespace AST
{
class CNode;
class CExprNode;
class CGroupNode;
class CIntNode;
class CStringNode;
class CUnaryNode;
class CNotNode;
class CPosNode;
class CNegNode;
class CBinaryNode;
class CEqualNode;
class CNotEqNode;
class CGreatNode;
class CGreatEqNode;
class CLessNode;
class CLessEqNode;
class CPlusNode;
class CMinusNode;
class CMulNode;
class CDivNode;
class COrNode;
class CAndNode;
class CModNode;
class CExprStmtNode;
class CWrtIntNode;
class CWrtStrNode;
class CRdlStmtNode;
class CIncNode;
class CDecNode;
class CVarNode;
class CVarsNode;
class CConstNode;
class CConstsNode;
class CIdentifierNode;
class CCallNode;
class CAssignNode;
class CBlockNode;
class CIfNode;
class CWhileNode;
class CFunDeclNode;
class CExitNode;
class CBreakNode;
}
//=================================================================================================
class CVisitor
{
public:
virtual ~CVisitor ( void ) = default;
virtual void VisitGroup ( AST::CGroupNode & n ) = 0;
virtual void VisitInt ( AST::CIntNode & n ) = 0;
virtual void VisitString ( AST::CStringNode & n ) = 0;
virtual void VisitIdentifier ( AST::CIdentifierNode & n ) = 0;
virtual void VisitCall ( AST::CCallNode & n ) = 0;
virtual void VisitAssign ( AST::CAssignNode & n ) = 0;
virtual void VisitUnary ( AST::CUnaryNode & n ) {}
virtual void VisitNot ( AST::CNotNode & n ) = 0;
virtual void VisitPos ( AST::CPosNode & n ) = 0;
virtual void VisitNeg ( AST::CNegNode & n ) = 0;
virtual void VisitBinary ( AST::CBinaryNode & n ) {}
virtual void VisitEqual ( AST::CEqualNode & n ) = 0;
virtual void VisitNotEq ( AST::CNotEqNode & n ) = 0;
virtual void VisitGreat ( AST::CGreatNode & n ) = 0;
virtual void VisitGreatEq ( AST::CGreatEqNode & n ) = 0;
virtual void VisitLess ( AST::CLessNode & n ) = 0;
virtual void VisitLessEq ( AST::CLessEqNode & n ) = 0;
virtual void VisitPlus ( AST::CPlusNode & n ) = 0;
virtual void VisitMinus ( AST::CMinusNode & n ) = 0;
virtual void VisitMul ( AST::CMulNode & n ) = 0;
virtual void VisitDiv ( AST::CDivNode & n ) = 0;
virtual void VisitOr ( AST::COrNode & n ) = 0;
virtual void VisitAnd ( AST::CAndNode & n ) = 0;
virtual void VisitMod ( AST::CModNode & n ) = 0;
virtual void VisitExprStmt ( AST::CExprStmtNode & n )= 0;
virtual void VisitWrtInt ( AST::CWrtIntNode & n ) = 0;
virtual void VisitWrtStr ( AST::CWrtStrNode & n ) = 0;
virtual void VisitRdlStmt ( AST::CRdlStmtNode & n ) = 0;
virtual void VisitVar ( AST::CVarNode & n ) = 0;
virtual void VisitVars ( AST::CVarsNode & n ) = 0;
virtual void VisitConst ( AST::CConstNode & n ) = 0;
virtual void VisitConsts ( AST::CConstsNode & n ) = 0;
virtual void VisitBlock ( AST::CBlockNode & n ) = 0;
virtual void VisitIf ( AST::CIfNode & n ) = 0;
virtual void VisitWhile ( AST::CWhileNode & n ) = 0;
virtual void VisitFunDecl ( AST::CFunDeclNode & n ) = 0;
virtual void VisitExit ( AST::CExitNode & n ) = 0;
virtual void VisitBreak ( AST::CBreakNode & n ) = 0;
};
//=================================================================================================
#endif //PJPPROJECT_VISITOR_HPP