Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

typecheckervisitor.h

Go to the documentation of this file.
00001 #ifndef TYPE_CHECKER_VISITOR_H
00002 #define TYPE_CHECKER_VISITOR_H
00003 
00004 #include "visitor.h"
00005 #include <map>
00006 #include <vector>
00007 #include <string>
00008 
00009 using namespace std;
00010 
00011 class TypeCheckerVisitor : public Visitor {
00012         private:
00013                 map<string, Type*> symbolTable;
00014                 bool insert;
00015                 bool forgetIt;
00016                 vector<Ast*> stack;
00017         
00018         public:
00019                 virtual ~TypeCheckerVisitor() {}
00020                 VisitorReturn *visitAction(Action *action);
00021                 VisitorReturn *visitActStatement(ActStatement *actStatement);
00022                 VisitorReturn *visitArrayReference(ArrayReference *arrayReference);
00023                 VisitorReturn *visitArrayType(ArrayType *arrayType);
00024                 VisitorReturn *visitAssignStatement(AssignStatement *assignStatement);
00025                 VisitorReturn *visitAst(Ast *ast);
00026                 VisitorReturn *visitBehavior(Behavior *behavior);
00027                 VisitorReturn *visitBehaviorStatement(BehaviorStatement *behaviorStatement);
00028                 VisitorReturn *visitBinaryExpression(BinaryExpression *binaryExpression);
00029                 VisitorReturn *visitDeclaration(Declaration *declaration);
00030                 VisitorReturn *visitDoStatement(DoStatement *doStatement);
00031                 VisitorReturn *visitExpression(Expression *expression);
00032                 VisitorReturn *visitExpressionList(ExpressionList *expressionList);
00033                 VisitorReturn *visitFieldDeclaration(FieldDeclaration *fieldDeclaration);
00034                 VisitorReturn *visitFieldReference(FieldReference *fieldReference);
00035                 VisitorReturn *visitFieldType(FieldType *fieldType);
00036                 VisitorReturn *visitGuard(Guard *guard);
00037                 VisitorReturn *visitGuardedStatement(GuardedStatement *guardedStatement);
00038                 VisitorReturn *visitGuardExpression(GuardExpression *guardExpression);
00039                 VisitorReturn *visitGuardReceive(GuardReceive *guardReceive);
00040                 VisitorReturn *visitGuardTimeout(GuardTimeout *guardTimeout);
00041                 VisitorReturn *visitIdentifier(Identifier *identifier);
00042                 VisitorReturn *visitIdentifierList(IdentifierList *identifierList);
00043                 VisitorReturn *visitIfStatement(IfStatement *ifStatement);
00044                 VisitorReturn *visitImport(Import *import);
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 *visitIntegerLiteral(IntegerLiteral *integerLiteral);
00085                 VisitorReturn *visitType(Type *type);
00086                 VisitorReturn *visitUnaryExpression(UnaryExpression *unaryExpression);
00087 };
00088 
00089 #endif

Generated on Mon Dec 1 17:36:38 2003 for Protomake by doxygen1.3