00001 //===-- ast/ExprVisitor.h ------------------------------------- -*- C++ -*-===// 00002 // 00003 // This file is distributed under the MIT license. See LICENSE.txt for details. 00004 // 00005 // Copyright (C) 2009-2010, Stephen Wilson 00006 // 00007 //===----------------------------------------------------------------------===// 00008 00009 //===----------------------------------------------------------------------===// 00015 //===----------------------------------------------------------------------===// 00016 00017 #ifndef COMMA_AST_EXPRVISITOR_HDR_GUARD 00018 #define COMMA_AST_EXPRVISITOR_HDR_GUARD 00019 00020 #include "comma/ast/AstBase.h" 00021 00022 namespace comma { 00023 00024 class ExprVisitor { 00025 00026 public: 00027 virtual ~ExprVisitor() { } 00028 00029 virtual void visitAst(Ast *node); 00030 virtual void visitExpr(Expr *node); 00031 virtual void visitAggregateExpr(AggregateExpr *node); 00032 virtual void visitAttribExpr(AttribExpr *node); 00033 virtual void visitDeclRefExpr(DeclRefExpr *node); 00034 virtual void visitFunctionCallExpr(FunctionCallExpr *node); 00035 virtual void visitIndexedArrayExpr(IndexedArrayExpr *node); 00036 virtual void visitSelectedExpr(SelectedExpr *node); 00037 virtual void visitInjExpr(InjExpr *node); 00038 virtual void visitPrjExpr(PrjExpr *node); 00039 virtual void visitIntegerLiteral(IntegerLiteral *node); 00040 virtual void visitStringLiteral(StringLiteral *node); 00041 virtual void visitConversionExpr(ConversionExpr *node); 00042 virtual void visitNullExpr(NullExpr *node); 00043 virtual void visitQualifiedExpr(QualifiedExpr *node); 00044 virtual void visitDereferenceExpr(DereferenceExpr *node); 00045 virtual void visitAllocatorExpr(AllocatorExpr *node); 00046 virtual void visitDiamondExpr(DiamondExpr *node); 00047 00049 virtual void visitFirstAE(FirstAE *node); 00050 virtual void visitFirstArrayAE(FirstArrayAE *node); 00051 virtual void visitLastArrayAE(LastArrayAE *node); 00052 virtual void visitLastAE(LastAE *node); 00053 }; 00054 00055 } // end comma namespace. 00056 00057 #endif