1 | // |
---|
2 | // Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo |
---|
3 | // |
---|
4 | // The contents of this file are covered under the licence agreement in the |
---|
5 | // file "LICENCE" distributed with Cforall. |
---|
6 | // |
---|
7 | // Visitor.hpp -- Interface of a class that visits ast nodes. |
---|
8 | // |
---|
9 | // Author : Andrew Beach |
---|
10 | // Created On : Thr May 9 15:28:00 2019 |
---|
11 | // Last Modified By : Andrew Beach |
---|
12 | // Last Modified On : Thr May 9 15:33:00 2019 |
---|
13 | // Update Count : 0 |
---|
14 | // |
---|
15 | |
---|
16 | #pragma once |
---|
17 | |
---|
18 | #include "Fwd.hpp" |
---|
19 | |
---|
20 | namespace ast { |
---|
21 | |
---|
22 | class Visitor { |
---|
23 | public: |
---|
24 | virtual DeclWithType * visit( const ObjectDecl * ) = 0; |
---|
25 | virtual DeclWithType * visit( const FunctionDecl * ) = 0; |
---|
26 | virtual Decl * visit( const StructDecl * ) = 0; |
---|
27 | virtual Decl * visit( const UnionDecl * ) = 0; |
---|
28 | virtual Decl * visit( const EnumDecl * ) = 0; |
---|
29 | virtual Decl * visit( const TraitDecl * ) = 0; |
---|
30 | virtual Decl * visit( const TypeDecl * ) = 0; |
---|
31 | virtual Decl * visit( const TypedefDecl * ) = 0; |
---|
32 | virtual AsmDecl * visit( const AsmDecl * ) = 0; |
---|
33 | virtual StaticAssertDecl * visit( const StaticAssertDecl * ) = 0; |
---|
34 | virtual CompoundStmt * visit( const CompoundStmt * ) = 0; |
---|
35 | virtual Stmt * visit( const ExprStmt * ) = 0; |
---|
36 | virtual Stmt * visit( const AsmStmt * ) = 0; |
---|
37 | virtual Stmt * visit( const DirectiveStmt * ) = 0; |
---|
38 | virtual Stmt * visit( const IfStmt * ) = 0; |
---|
39 | virtual Stmt * visit( const WhileStmt * ) = 0; |
---|
40 | virtual Stmt * visit( const ForStmt * ) = 0; |
---|
41 | virtual Stmt * visit( const SwitchStmt * ) = 0; |
---|
42 | virtual Stmt * visit( const CaseStmt * ) = 0; |
---|
43 | virtual Stmt * visit( const BranchStmt * ) = 0; |
---|
44 | virtual Stmt * visit( const ReturnStmt * ) = 0; |
---|
45 | virtual Stmt * visit( const ThrowStmt * ) = 0; |
---|
46 | virtual Stmt * visit( const TryStmt * ) = 0; |
---|
47 | virtual Stmt * visit( const CatchStmt * ) = 0; |
---|
48 | virtual Stmt * visit( const FinallyStmt * ) = 0; |
---|
49 | virtual Stmt * visit( const WaitForStmt * ) = 0; |
---|
50 | virtual Stmt * visit( const WithStmt * ) = 0; |
---|
51 | virtual NullStmt * visit( const NullStmt * ) = 0; |
---|
52 | virtual Stmt * visit( const DeclStmt * ) = 0; |
---|
53 | virtual Stmt * visit( const ImplicitCtorDtorStmt * ) = 0; |
---|
54 | virtual Expr * visit( const ApplicationExpr * ) = 0; |
---|
55 | virtual Expr * visit( const UntypedExpr * ) = 0; |
---|
56 | virtual Expr * visit( const NameExpr * ) = 0; |
---|
57 | virtual Expr * visit( const AddressExpr * ) = 0; |
---|
58 | virtual Expr * visit( const LabelAddressExpr * ) = 0; |
---|
59 | virtual Expr * visit( const CastExpr * ) = 0; |
---|
60 | virtual Expr * visit( const KeywordCastExpr * ) = 0; |
---|
61 | virtual Expr * visit( const VirtualCastExpr * ) = 0; |
---|
62 | virtual Expr * visit( const UntypedMemberExpr * ) = 0; |
---|
63 | virtual Expr * visit( const MemberExpr * ) = 0; |
---|
64 | virtual Expr * visit( const VariableExpr * ) = 0; |
---|
65 | virtual Expr * visit( const ConstantExpr * ) = 0; |
---|
66 | virtual Expr * visit( const SizeofExpr * ) = 0; |
---|
67 | virtual Expr * visit( const AlignofExpr * ) = 0; |
---|
68 | virtual Expr * visit( const UntypedOffsetofExpr * ) = 0; |
---|
69 | virtual Expr * visit( const OffsetofExpr * ) = 0; |
---|
70 | virtual Expr * visit( const OffsetPackExpr * ) = 0; |
---|
71 | virtual Expr * visit( const AttrExpr * ) = 0; |
---|
72 | virtual Expr * visit( const LogicalExpr * ) = 0; |
---|
73 | virtual Expr * visit( const ConditionalExpr * ) = 0; |
---|
74 | virtual Expr * visit( const CommaExpr * ) = 0; |
---|
75 | virtual Expr * visit( const TypeExpr * ) = 0; |
---|
76 | virtual Expr * visit( const AsmExpr * ) = 0; |
---|
77 | virtual Expr * visit( const ImplicitCopyCtorExpr * ) = 0; |
---|
78 | virtual Expr * visit( const ConstructorExpr * ) = 0; |
---|
79 | virtual Expr * visit( const CompoundLiteralExpr * ) = 0; |
---|
80 | virtual Expr * visit( const RangeExpr * ) = 0; |
---|
81 | virtual Expr * visit( const UntypedTupleExpr * ) = 0; |
---|
82 | virtual Expr * visit( const TupleExpr * ) = 0; |
---|
83 | virtual Expr * visit( const TupleIndexExpr * ) = 0; |
---|
84 | virtual Expr * visit( const TupleAssignExpr * ) = 0; |
---|
85 | virtual Expr * visit( const StmtExpr * ) = 0; |
---|
86 | virtual Expr * visit( const UniqueExpr * ) = 0; |
---|
87 | virtual Expr * visit( const UntypedInitExpr * ) = 0; |
---|
88 | virtual Expr * visit( const InitExpr * ) = 0; |
---|
89 | virtual Expr * visit( const DeletedExpr * ) = 0; |
---|
90 | virtual Expr * visit( const DefaultArgExpr * ) = 0; |
---|
91 | virtual Expr * visit( const GenericExpr * ) = 0; |
---|
92 | virtual Type * visit( const VoidType * ) = 0; |
---|
93 | virtual Type * visit( const BasicType * ) = 0; |
---|
94 | virtual Type * visit( const PointerType * ) = 0; |
---|
95 | virtual Type * visit( const ArrayType * ) = 0; |
---|
96 | virtual Type * visit( const ReferenceType * ) = 0; |
---|
97 | virtual Type * visit( const QualifiedType * ) = 0; |
---|
98 | virtual Type * visit( const FunctionType * ) = 0; |
---|
99 | virtual Type * visit( const StructInstType * ) = 0; |
---|
100 | virtual Type * visit( const UnionInstType * ) = 0; |
---|
101 | virtual Type * visit( const EnumInstType * ) = 0; |
---|
102 | virtual Type * visit( const TraitInstType * ) = 0; |
---|
103 | virtual Type * visit( const TypeInstType * ) = 0; |
---|
104 | virtual Type * visit( const TupleType * ) = 0; |
---|
105 | virtual Type * visit( const TypeofType * ) = 0; |
---|
106 | virtual Type * visit( const VarArgsType * ) = 0; |
---|
107 | virtual Type * visit( const ZeroType * ) = 0; |
---|
108 | virtual Type * visit( const OneType * ) = 0; |
---|
109 | virtual Type * visit( const GlobalScopeType * ) = 0; |
---|
110 | virtual Designation * visit( const Designation * ) = 0; |
---|
111 | virtual Init * visit( const SingleInit * ) = 0; |
---|
112 | virtual Init * visit( const ListInit * ) = 0; |
---|
113 | virtual Init * visit( const ConstructorInit * ) = 0; |
---|
114 | virtual Constant * visit( const Constant * ) = 0; |
---|
115 | virtual Attribute * visit( const Attribute * ) = 0; |
---|
116 | virtual TypeSubstitution * visit( const TypeSubstitution * ) = 0; |
---|
117 | }; |
---|
118 | |
---|
119 | } |
---|
120 | |
---|
121 | // Local Variables: // |
---|
122 | // tab-width: 4 // |
---|
123 | // mode: c++ // |
---|
124 | // compile-command: "make install" // |
---|
125 | // End: // |
---|