[db27767] | 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 AttrType * ) = 0;
|
---|
| 107 | virtual Type * visit( const VarArgsType * ) = 0;
|
---|
| 108 | virtual Type * visit( const ZeroType * ) = 0;
|
---|
| 109 | virtual Type * visit( const OneType * ) = 0;
|
---|
| 110 | virtual Type * visit( const GlobalScopeType * ) = 0;
|
---|
| 111 | virtual Designation * visit( const Designation * ) = 0;
|
---|
| 112 | virtual Init * visit( const SingleInit * ) = 0;
|
---|
| 113 | virtual Init * visit( const ListInit * ) = 0;
|
---|
| 114 | virtual Init * visit( const ConstructorInit * ) = 0;
|
---|
| 115 | virtual Constant * visit( const Constant * ) = 0;
|
---|
| 116 | virtual Attribute * visit( const Attribute * ) = 0;
|
---|
| 117 | virtual TypeSubstitution * visit( const TypeSubstitution * ) = 0;
|
---|
| 118 | };
|
---|
| 119 |
|
---|
| 120 | }
|
---|
| 121 |
|
---|
| 122 | // Local Variables: //
|
---|
| 123 | // tab-width: 4 //
|
---|
| 124 | // mode: c++ //
|
---|
| 125 | // compile-command: "make install" //
|
---|
| 126 | // End: //
|
---|