00001 #ifndef VISITOR_H 00002 #define VISITOR_H 00003 00004 #include "visitorreturn.h" 00005 00006 class Action; 00007 class ActStatement; 00008 class ArrayReference; 00009 class ArrayType; 00010 class AssignStatement; 00011 class Ast; 00012 class Behavior; 00013 class BehaviorStatement; 00014 class BinaryExpression; 00015 class Declaration; 00016 class DoStatement; 00017 class Expression; 00018 class ExpressionList; 00019 class FieldDeclaration; 00020 class FieldReference; 00021 class FieldType; 00022 class Guard; 00023 class GuardedStatement; 00024 class GuardExpression; 00025 class GuardReceive; 00026 class GuardTimeout; 00027 class Identifier; 00028 class IdentifierList; 00029 class IfStatement; 00030 class Import; 00031 class IntegerLiteral; 00032 class LeftSide; 00033 class LeftSideList; 00034 class Message; 00035 class MultipleArrayReference; 00036 class Process; 00037 class Program; 00038 class RangeType; 00039 class ReceiveStatement; 00040 class SendStatement; 00041 class SequentialAction; 00042 class SequentialBehavior; 00043 class SequentialDeclaration; 00044 class SequentialExpressionList; 00045 class SequentialFieldDeclaration; 00046 class SequentialGuardedStatement; 00047 class SequentialIdentifierList; 00048 class SequentialImport; 00049 class SequentialLeftSideList; 00050 class SequentialMessage; 00051 class SequentialProcess; 00052 class SequentialStatement; 00053 class SimpleAction; 00054 class SimpleArrayReference; 00055 class SimpleBehavior; 00056 class SimpleDeclaration; 00057 class SimpleExpressionList; 00058 class SimpleFieldDeclaration; 00059 class SimpleGuardedStatement; 00060 class SimpleIdentifierList; 00061 class SimpleImport; 00062 class SimpleLeftSideList; 00063 class SimpleMessage; 00064 class SimpleProcess; 00065 class SimpleStatement; 00066 class SkipStatement; 00067 class StartStatement; 00068 class Statement; 00069 class StopStatement; 00070 class StringLiteral; 00071 class Type; 00072 class UnaryExpression; 00073 class Visitor { 00074 public: 00075 virtual ~Visitor() {} 00076 virtual VisitorReturn *visitAction(Action *action) = 0; 00077 virtual VisitorReturn *visitActStatement(ActStatement *actStatement) = 0; 00078 virtual VisitorReturn *visitArrayReference(ArrayReference *arrayReference) = 0; 00079 virtual VisitorReturn *visitArrayType(ArrayType *arrayType) = 0; 00080 virtual VisitorReturn *visitAssignStatement(AssignStatement *assignStatement) = 0; 00081 virtual VisitorReturn *visitAst(Ast *ast) = 0; 00082 virtual VisitorReturn *visitBehavior(Behavior *behavior) = 0; 00083 virtual VisitorReturn *visitBehaviorStatement(BehaviorStatement *behaviorStatement) = 0; 00084 virtual VisitorReturn *visitBinaryExpression(BinaryExpression *binaryExpression) = 0; 00085 virtual VisitorReturn *visitDeclaration(Declaration *declaration) = 0; 00086 virtual VisitorReturn *visitDoStatement(DoStatement *doStatement) = 0; 00087 virtual VisitorReturn *visitExpression(Expression *expression) = 0; 00088 virtual VisitorReturn *visitExpressionList(ExpressionList *expressionList) = 0; 00089 virtual VisitorReturn *visitFieldDeclaration(FieldDeclaration *fieldDeclaration) = 0; 00090 virtual VisitorReturn *visitFieldReference(FieldReference *fieldReference) = 0; 00091 virtual VisitorReturn *visitFieldType(FieldType *fieldType) = 0; 00092 virtual VisitorReturn *visitGuard(Guard *guard) = 0; 00093 virtual VisitorReturn *visitGuardedStatement(GuardedStatement *guardedStatement) = 0; 00094 virtual VisitorReturn *visitGuardExpression(GuardExpression *guardExpression) = 0; 00095 virtual VisitorReturn *visitGuardReceive(GuardReceive *guardReceive) = 0; 00096 virtual VisitorReturn *visitGuardTimeout(GuardTimeout *guardTimeout) = 0; 00097 virtual VisitorReturn *visitIdentifier(Identifier *identifier) = 0; 00098 virtual VisitorReturn *visitIdentifierList(IdentifierList *identifierList) = 0; 00099 virtual VisitorReturn *visitIfStatement(IfStatement *ifStatement) = 0; 00100 virtual VisitorReturn *visitImport(Import *import) = 0; 00101 virtual VisitorReturn *visitIntegerLiteral(IntegerLiteral *integerLiteral) = 0; 00102 virtual VisitorReturn *visitLeftSide(LeftSide *leftSide) = 0; 00103 virtual VisitorReturn *visitLeftSideList(LeftSideList *leftSideList) = 0; 00104 virtual VisitorReturn *visitMessage(Message *message) = 0; 00105 virtual VisitorReturn *visitMultipleArrayReference(MultipleArrayReference *multipleArrayReference) = 0; 00106 virtual VisitorReturn *visitProcess(Process *process) = 0; 00107 virtual VisitorReturn *visitProgram(Program *program) = 0; 00108 virtual VisitorReturn *visitRangeType(RangeType *rangeType) = 0; 00109 virtual VisitorReturn *visitReceiveStatement(ReceiveStatement *receiveStatement) = 0; 00110 virtual VisitorReturn *visitSendStatement(SendStatement *sendStatement) = 0; 00111 virtual VisitorReturn *visitSequentialAction(SequentialAction *sequentialAction) = 0; 00112 virtual VisitorReturn *visitSequentialBehavior(SequentialBehavior *sequentialBehavior) = 0; 00113 virtual VisitorReturn *visitSequentialDeclaration(SequentialDeclaration *sequentialDeclaration) = 0; 00114 virtual VisitorReturn *visitSequentialExpressionList(SequentialExpressionList *sequentialExpressionList) = 0; 00115 virtual VisitorReturn *visitSequentialFieldDeclaration(SequentialFieldDeclaration *sequentialFieldDeclaration) = 0; 00116 virtual VisitorReturn *visitSequentialGuardedStatement(SequentialGuardedStatement *sequentialGuardedStatement) = 0; 00117 virtual VisitorReturn *visitSequentialIdentifierList(SequentialIdentifierList *sequentialIdentifierList) = 0; 00118 virtual VisitorReturn *visitSequentialImport(SequentialImport *sequentialImport) = 0; 00119 virtual VisitorReturn *visitSequentialLeftSideList(SequentialLeftSideList *sequentialLeftSideList) = 0; 00120 virtual VisitorReturn *visitSequentialMessage(SequentialMessage *sequentialMessage) = 0; 00121 virtual VisitorReturn *visitSequentialProcess(SequentialProcess *sequentialProcess) = 0; 00122 virtual VisitorReturn *visitSequentialStatement(SequentialStatement *sequentialStatement) = 0; 00123 virtual VisitorReturn *visitSimpleAction(SimpleAction *simpleAction) = 0; 00124 virtual VisitorReturn *visitSimpleArrayReference(SimpleArrayReference *simpleArrayReference) = 0; 00125 virtual VisitorReturn *visitSimpleBehavior(SimpleBehavior *simpleBehavior) = 0; 00126 virtual VisitorReturn *visitSimpleDeclaration(SimpleDeclaration *simpleDeclaration) = 0; 00127 virtual VisitorReturn *visitSimpleExpressionList(SimpleExpressionList *simpleExpressionList) = 0; 00128 virtual VisitorReturn *visitSimpleFieldDeclaration(SimpleFieldDeclaration *simpleFieldDeclaration) = 0; 00129 virtual VisitorReturn *visitSimpleGuardedStatement(SimpleGuardedStatement *simpleGuardedStatement) = 0; 00130 virtual VisitorReturn *visitSimpleIdentifierList(SimpleIdentifierList *simpleIdentifierList) = 0; 00131 virtual VisitorReturn *visitSimpleImport(SimpleImport *simpleImport) = 0; 00132 virtual VisitorReturn *visitSimpleLeftSideList(SimpleLeftSideList *simpleLeftSideList) = 0; 00133 virtual VisitorReturn *visitSimpleMessage(SimpleMessage *simpleMessage) = 0; 00134 virtual VisitorReturn *visitSimpleProcess(SimpleProcess *simpleProcess) = 0; 00135 virtual VisitorReturn *visitSimpleStatement(SimpleStatement *simpleStatement) = 0; 00136 virtual VisitorReturn *visitSkipStatement(SkipStatement *skipStatement) = 0; 00137 virtual VisitorReturn *visitStartStatement(StartStatement *startStatement) = 0; 00138 virtual VisitorReturn *visitStatement(Statement *statement) = 0; 00139 virtual VisitorReturn *visitStopStatement(StopStatement *stopStatement) = 0; 00140 virtual VisitorReturn *visitStringLiteral(StringLiteral *stringLiteral) = 0; 00141 virtual VisitorReturn *visitType(Type *type) = 0; 00142 virtual VisitorReturn *visitUnaryExpression(UnaryExpression *unaryExpression) = 0; 00143 }; 00144 00145 #endif