Changeset 90152a4 for src/SynTree/Visitor.h
- Timestamp:
- Aug 27, 2018, 4:40:34 PM (7 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- b7c89aa
- Parents:
- f9feab8 (diff), 305581d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Visitor.h
rf9feab8 r90152a4 21 21 class Visitor { 22 22 protected: 23 Visitor() ;24 virtual ~Visitor() ;23 Visitor() = default; 24 virtual ~Visitor() = default; 25 25 public: 26 26 // visit: Default implementation of all functions visits the children 27 27 // of the given syntax node, but performs no other action. 28 28 29 virtual void visit( ObjectDecl * objectDecl ); 30 virtual void visit( FunctionDecl * functionDecl ); 31 virtual void visit( StructDecl * aggregateDecl ); 32 virtual void visit( UnionDecl * aggregateDecl ); 33 virtual void visit( EnumDecl * aggregateDecl ); 34 virtual void visit( TraitDecl * aggregateDecl ); 35 virtual void visit( TypeDecl * typeDecl ); 36 virtual void visit( TypedefDecl * typeDecl ); 37 virtual void visit( AsmDecl * asmDecl ); 29 virtual void visit( ObjectDecl * objectDecl ) = 0; 30 virtual void visit( FunctionDecl * functionDecl ) = 0; 31 virtual void visit( StructDecl * aggregateDecl ) = 0; 32 virtual void visit( UnionDecl * aggregateDecl ) = 0; 33 virtual void visit( EnumDecl * aggregateDecl ) = 0; 34 virtual void visit( TraitDecl * aggregateDecl ) = 0; 35 virtual void visit( TypeDecl * typeDecl ) = 0; 36 virtual void visit( TypedefDecl * typeDecl ) = 0; 37 virtual void visit( AsmDecl * asmDecl ) = 0; 38 virtual void visit( StaticAssertDecl * assertDecl ) = 0; 38 39 39 virtual void visit( CompoundStmt * compoundStmt ); 40 virtual void visit( ExprStmt * exprStmt ); 41 virtual void visit( AsmStmt * asmStmt ); 42 virtual void visit( IfStmt * ifStmt ); 43 virtual void visit( WhileStmt * whileStmt ); 44 virtual void visit( ForStmt * forStmt ); 45 virtual void visit( SwitchStmt * switchStmt ); 46 virtual void visit( CaseStmt * caseStmt ); 47 virtual void visit( BranchStmt * branchStmt ); 48 virtual void visit( ReturnStmt * returnStmt ); 49 virtual void visit( ThrowStmt * throwStmt ); 50 virtual void visit( TryStmt * tryStmt ); 51 virtual void visit( CatchStmt * catchStmt ); 52 virtual void visit( FinallyStmt * finallyStmt ); 53 virtual void visit( WaitForStmt * waitforStmt ); 54 virtual void visit( WithStmt * withStmt ); 55 virtual void visit( NullStmt * nullStmt ); 56 virtual void visit( DeclStmt * declStmt ); 57 virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt ); 40 virtual void visit( CompoundStmt * compoundStmt ) = 0; 41 virtual void visit( ExprStmt * exprStmt ) = 0; 42 virtual void visit( AsmStmt * asmStmt ) = 0; 43 virtual void visit( DirectiveStmt * directiveStmt ) = 0; 44 virtual void visit( IfStmt * ifStmt ) = 0; 45 virtual void visit( WhileStmt * whileStmt ) = 0; 46 virtual void visit( ForStmt * forStmt ) = 0; 47 virtual void visit( SwitchStmt * switchStmt ) = 0; 48 virtual void visit( CaseStmt * caseStmt ) = 0; 49 virtual void visit( BranchStmt * branchStmt ) = 0; 50 virtual void visit( ReturnStmt * returnStmt ) = 0; 51 virtual void visit( ThrowStmt * throwStmt ) = 0; 52 virtual void visit( TryStmt * tryStmt ) = 0; 53 virtual void visit( CatchStmt * catchStmt ) = 0; 54 virtual void visit( FinallyStmt * finallyStmt ) = 0; 55 virtual void visit( WaitForStmt * waitforStmt ) = 0; 56 virtual void visit( WithStmt * withStmt ) = 0; 57 virtual void visit( NullStmt * nullStmt ) = 0; 58 virtual void visit( DeclStmt * declStmt ) = 0; 59 virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt ) = 0; 58 60 59 virtual void visit( ApplicationExpr * applicationExpr ); 60 virtual void visit( UntypedExpr * untypedExpr ); 61 virtual void visit( NameExpr * nameExpr ); 62 virtual void visit( CastExpr * castExpr ); 63 virtual void visit( VirtualCastExpr * castExpr ); 64 virtual void visit( AddressExpr * addressExpr ); 65 virtual void visit( LabelAddressExpr * labAddressExpr ); 66 virtual void visit( UntypedMemberExpr * memberExpr ); 67 virtual void visit( MemberExpr * memberExpr ); 68 virtual void visit( VariableExpr * variableExpr ); 69 virtual void visit( ConstantExpr * constantExpr ); 70 virtual void visit( SizeofExpr * sizeofExpr ); 71 virtual void visit( AlignofExpr * alignofExpr ); 72 virtual void visit( UntypedOffsetofExpr * offsetofExpr ); 73 virtual void visit( OffsetofExpr * offsetofExpr ); 74 virtual void visit( OffsetPackExpr * offsetPackExpr ); 75 virtual void visit( AttrExpr * attrExpr ); 76 virtual void visit( LogicalExpr * logicalExpr ); 77 virtual void visit( ConditionalExpr * conditionalExpr ); 78 virtual void visit( CommaExpr * commaExpr ); 79 virtual void visit( TypeExpr * typeExpr ); 80 virtual void visit( AsmExpr * asmExpr ); 81 virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr ); 82 virtual void visit( ConstructorExpr * ctorExpr ); 83 virtual void visit( CompoundLiteralExpr * compLitExpr ); 84 virtual void visit( RangeExpr * rangeExpr ); 85 virtual void visit( UntypedTupleExpr * tupleExpr ); 86 virtual void visit( TupleExpr * tupleExpr ); 87 virtual void visit( TupleIndexExpr * tupleExpr ); 88 virtual void visit( TupleAssignExpr * assignExpr ); 89 virtual void visit( StmtExpr * stmtExpr ); 90 virtual void visit( UniqueExpr * uniqueExpr ); 91 virtual void visit( UntypedInitExpr * initExpr ); 92 virtual void visit( InitExpr * initExpr ); 61 virtual void visit( ApplicationExpr * applicationExpr ) = 0; 62 virtual void visit( UntypedExpr * untypedExpr ) = 0; 63 virtual void visit( NameExpr * nameExpr ) = 0; 64 virtual void visit( CastExpr * castExpr ) = 0; 65 virtual void visit( KeywordCastExpr * castExpr ) = 0; 66 virtual void visit( VirtualCastExpr * castExpr ) = 0; 67 virtual void visit( AddressExpr * addressExpr ) = 0; 68 virtual void visit( LabelAddressExpr * labAddressExpr ) = 0; 69 virtual void visit( UntypedMemberExpr * memberExpr ) = 0; 70 virtual void visit( MemberExpr * memberExpr ) = 0; 71 virtual void visit( VariableExpr * variableExpr ) = 0; 72 virtual void visit( ConstantExpr * constantExpr ) = 0; 73 virtual void visit( SizeofExpr * sizeofExpr ) = 0; 74 virtual void visit( AlignofExpr * alignofExpr ) = 0; 75 virtual void visit( UntypedOffsetofExpr * offsetofExpr ) = 0; 76 virtual void visit( OffsetofExpr * offsetofExpr ) = 0; 77 virtual void visit( OffsetPackExpr * offsetPackExpr ) = 0; 78 virtual void visit( AttrExpr * attrExpr ) = 0; 79 virtual void visit( LogicalExpr * logicalExpr ) = 0; 80 virtual void visit( ConditionalExpr * conditionalExpr ) = 0; 81 virtual void visit( CommaExpr * commaExpr ) = 0; 82 virtual void visit( TypeExpr * typeExpr ) = 0; 83 virtual void visit( AsmExpr * asmExpr ) = 0; 84 virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr ) = 0; 85 virtual void visit( ConstructorExpr * ctorExpr ) = 0; 86 virtual void visit( CompoundLiteralExpr * compLitExpr ) = 0; 87 virtual void visit( RangeExpr * rangeExpr ) = 0; 88 virtual void visit( UntypedTupleExpr * tupleExpr ) = 0; 89 virtual void visit( TupleExpr * tupleExpr ) = 0; 90 virtual void visit( TupleIndexExpr * tupleExpr ) = 0; 91 virtual void visit( TupleAssignExpr * assignExpr ) = 0; 92 virtual void visit( StmtExpr * stmtExpr ) = 0; 93 virtual void visit( UniqueExpr * uniqueExpr ) = 0; 94 virtual void visit( UntypedInitExpr * initExpr ) = 0; 95 virtual void visit( InitExpr * initExpr ) = 0; 96 virtual void visit( DeletedExpr * delExpr ) = 0; 97 virtual void visit( DefaultArgExpr * argExpr ) = 0; 98 virtual void visit( GenericExpr * genExpr ) = 0; 93 99 94 virtual void visit( VoidType * basicType ); 95 virtual void visit( BasicType * basicType ); 96 virtual void visit( PointerType * pointerType ); 97 virtual void visit( ArrayType * arrayType ); 98 virtual void visit( ReferenceType * refType ); 99 virtual void visit( FunctionType * functionType ); 100 virtual void visit( StructInstType * aggregateUseType ); 101 virtual void visit( UnionInstType * aggregateUseType ); 102 virtual void visit( EnumInstType * aggregateUseType ); 103 virtual void visit( TraitInstType * aggregateUseType ); 104 virtual void visit( TypeInstType * aggregateUseType ); 105 virtual void visit( TupleType * tupleType ); 106 virtual void visit( TypeofType * typeofType ); 107 virtual void visit( AttrType * attrType ); 108 virtual void visit( VarArgsType * varArgsType ); 109 virtual void visit( ZeroType * zeroType ); 110 virtual void visit( OneType * oneType ); 100 virtual void visit( VoidType * basicType ) = 0; 101 virtual void visit( BasicType * basicType ) = 0; 102 virtual void visit( PointerType * pointerType ) = 0; 103 virtual void visit( ArrayType * arrayType ) = 0; 104 virtual void visit( ReferenceType * refType ) = 0; 105 virtual void visit( QualifiedType * qualType ) = 0; 106 virtual void visit( FunctionType * functionType ) = 0; 107 virtual void visit( StructInstType * aggregateUseType ) = 0; 108 virtual void visit( UnionInstType * aggregateUseType ) = 0; 109 virtual void visit( EnumInstType * aggregateUseType ) = 0; 110 virtual void visit( TraitInstType * aggregateUseType ) = 0; 111 virtual void visit( TypeInstType * aggregateUseType ) = 0; 112 virtual void visit( TupleType * tupleType ) = 0; 113 virtual void visit( TypeofType * typeofType ) = 0; 114 virtual void visit( AttrType * attrType ) = 0; 115 virtual void visit( VarArgsType * varArgsType ) = 0; 116 virtual void visit( ZeroType * zeroType ) = 0; 117 virtual void visit( OneType * oneType ) = 0; 118 virtual void visit( GlobalScopeType * globalType ) = 0; 111 119 112 virtual void visit( Designation * designation ) ;113 virtual void visit( SingleInit * singleInit ) ;114 virtual void visit( ListInit * listInit ) ;115 virtual void visit( ConstructorInit * ctorInit ) ;120 virtual void visit( Designation * designation ) = 0; 121 virtual void visit( SingleInit * singleInit ) = 0; 122 virtual void visit( ListInit * listInit ) = 0; 123 virtual void visit( ConstructorInit * ctorInit ) = 0; 116 124 117 virtual void visit( Subrange * subrange ) ;125 virtual void visit( Subrange * subrange ) = 0; 118 126 119 virtual void visit( Constant * constant ) ;127 virtual void visit( Constant * constant ) = 0; 120 128 121 virtual void visit( Attribute * attribute ); 122 private: 123 virtual void handleAggregateDecl( AggregateDecl *aggregateDecl ); 124 virtual void handleNamedTypeDecl( NamedTypeDecl *typeDecl ); 125 virtual void handleReferenceToType( ReferenceToType *aggregateUseType ); 129 virtual void visit( Attribute * attribute ) = 0; 126 130 }; 127 131 … … 135 139 template< typename Container, typename VisitorType > 136 140 inline void acceptAll( Container &container, VisitorType &visitor ) { 137 SemanticError errors;141 SemanticErrorException errors; 138 142 for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) { 139 143 try { … … 141 145 (*i)->accept( visitor ); 142 146 } 143 } catch( SemanticError &e ) { 144 e.set_location( (*i)->location ); 147 } catch( SemanticErrorException &e ) { 145 148 errors.append( e ); 146 149 }
Note:
See TracChangeset
for help on using the changeset viewer.