00001 #ifndef JAVA_CODE_GENERATOR_VISITOR_H 00002 #define JAVA_CODE_GENERATOR_VISITOR_H 00003 00004 #include "visitor.h" 00005 #include <fstream> 00006 #include <vector> 00007 00008 using namespace std; 00009 00010 class JavaCodeGeneratorVisitor : public Visitor { 00011 private: 00012 int msgCode; 00013 ofstream output; 00014 vector<Ast*> stack; 00015 00016 public: 00017 JavaCodeGeneratorVisitor(const char *name); 00018 virtual ~JavaCodeGeneratorVisitor() {} 00019 VisitorReturn *visitAction(Action *action); 00020 VisitorReturn *visitActStatement(ActStatement *actStatement); 00021 VisitorReturn *visitArrayReference(ArrayReference *arrayReference); 00022 VisitorReturn *visitArrayType(ArrayType *arrayType); 00023 VisitorReturn *visitAssignStatement(AssignStatement *assignStatement); 00024 VisitorReturn *visitAst(Ast *ast); 00025 VisitorReturn *visitBehavior(Behavior *behavior); 00026 VisitorReturn *visitBehaviorStatement(BehaviorStatement *behaviorStatement); 00027 VisitorReturn *visitBinaryExpression(BinaryExpression *binaryExpression); 00028 VisitorReturn *visitDeclaration(Declaration *declaration); 00029 VisitorReturn *visitDoStatement(DoStatement *doStatement); 00030 VisitorReturn *visitExpression(Expression *expression); 00031 VisitorReturn *visitExpressionList(ExpressionList *expressionList); 00032 VisitorReturn *visitFieldDeclaration(FieldDeclaration *fieldDeclaration); 00033 VisitorReturn *visitFieldReference(FieldReference *fieldReference); 00034 VisitorReturn *visitFieldType(FieldType *fieldType); 00035 VisitorReturn *visitGuard(Guard *guard); 00036 VisitorReturn *visitGuardedStatement(GuardedStatement *guardedStatement); 00037 VisitorReturn *visitGuardExpression(GuardExpression *guardExpression); 00038 VisitorReturn *visitGuardReceive(GuardReceive *guardReceive); 00039 VisitorReturn *visitGuardTimeout(GuardTimeout *guardTimeout); 00040 VisitorReturn *visitIdentifier(Identifier *identifier); 00041 VisitorReturn *visitIdentifierList(IdentifierList *identifierList); 00042 VisitorReturn *visitIfStatement(IfStatement *ifStatement); 00043 VisitorReturn *visitImport(Import *import); 00044 VisitorReturn *visitIntegerLiteral(IntegerLiteral *integerLiteral); 00045 VisitorReturn *visitLeftSide(LeftSide *leftSide); 00046 VisitorReturn *visitLeftSideList(LeftSideList *leftSideList); 00047 VisitorReturn *visitMessage(Message *message); 00048 VisitorReturn *visitMultipleArrayReference(MultipleArrayReference *multipleArrayReference); 00049 VisitorReturn *visitProcess(Process *process); 00050 VisitorReturn *visitProgram(Program *program); 00051 VisitorReturn *visitRangeType(RangeType *rangeType); 00052 VisitorReturn *visitReceiveStatement(ReceiveStatement *receiveStatement); 00053 VisitorReturn *visitSendStatement(SendStatement *sendStatement); 00054 VisitorReturn *visitSequentialAction(SequentialAction *sequentialAction); 00055 VisitorReturn *visitSequentialBehavior(SequentialBehavior *sequentialBehavior); 00056 VisitorReturn *visitSequentialDeclaration(SequentialDeclaration *sequentialDeclaration); 00057 VisitorReturn *visitSequentialExpressionList(SequentialExpressionList *sequentialExpressionList); 00058 VisitorReturn *visitSequentialFieldDeclaration(SequentialFieldDeclaration *sequentialFieldDeclaration); 00059 VisitorReturn *visitSequentialGuardedStatement(SequentialGuardedStatement *sequentialGuardedStatement); 00060 VisitorReturn *visitSequentialIdentifierList(SequentialIdentifierList *sequentialIdentifierList); 00061 VisitorReturn *visitSequentialImport(SequentialImport *sequentialImport); 00062 VisitorReturn *visitSequentialLeftSideList(SequentialLeftSideList *sequentialLeftSideList); 00063 VisitorReturn *visitSequentialMessage(SequentialMessage *sequentialMessage); 00064 VisitorReturn *visitSequentialProcess(SequentialProcess *sequentialProcess); 00065 VisitorReturn *visitSequentialStatement(SequentialStatement *sequentialStatement); 00066 VisitorReturn *visitSimpleAction(SimpleAction *simpleAction); 00067 VisitorReturn *visitSimpleArrayReference(SimpleArrayReference *simpleArrayReference); 00068 VisitorReturn *visitSimpleBehavior(SimpleBehavior *simpleBehavior); 00069 VisitorReturn *visitSimpleDeclaration(SimpleDeclaration *simpleDeclaration); 00070 VisitorReturn *visitSimpleExpressionList(SimpleExpressionList *simpleExpressionList); 00071 VisitorReturn *visitSimpleFieldDeclaration(SimpleFieldDeclaration *simpleFieldDeclaration); 00072 VisitorReturn *visitSimpleGuardedStatement(SimpleGuardedStatement *simpleGuardedStatement); 00073 VisitorReturn *visitSimpleIdentifierList(SimpleIdentifierList *simpleIdentifierList); 00074 VisitorReturn *visitSimpleImport(SimpleImport *simpleImport); 00075 VisitorReturn *visitSimpleLeftSideList(SimpleLeftSideList *simpleLeftSideList); 00076 VisitorReturn *visitSimpleMessage(SimpleMessage *simpleMessage); 00077 VisitorReturn *visitSimpleProcess(SimpleProcess *simpleProcess); 00078 VisitorReturn *visitSimpleStatement(SimpleStatement *simpleStatement); 00079 VisitorReturn *visitSkipStatement(SkipStatement *skipStatement); 00080 VisitorReturn *visitStartStatement(StartStatement *startStatement); 00081 VisitorReturn *visitStatement(Statement *statement); 00082 VisitorReturn *visitStopStatement(StopStatement *stopStatement); 00083 VisitorReturn *visitStringLiteral(StringLiteral *stringLiteral); 00084 VisitorReturn *visitType(Type *type); 00085 VisitorReturn *visitUnaryExpression(UnaryExpression *unaryExpression); 00086 }; 00087 00088 #endif