00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef UTAP_ABSTRACTBUILDER_HH
00023 #define UTAP_ABSTRACTBUILDER_HH
00024
00025 #include <exception>
00026 #include <string>
00027
00028 #include "builder.h"
00029 #include "utap.h"
00030
00031 namespace UTAP
00032 {
00033 class NotSupportedException : public std::exception
00034 {
00035 private:
00036 std::string error;
00037 public:
00038 NotSupportedException(const char *err) { error = err; }
00039 virtual ~NotSupportedException() throw() {}
00040 virtual const char* what() const throw() { return error.c_str(); }
00041 };
00042
00043 class AbstractBuilder : public ParserBuilder
00044 {
00045 protected:
00046
00047 ErrorHandler *errorHandler;
00048
00049 position_t position;
00050 public:
00051 AbstractBuilder();
00052
00053 virtual void setErrorHandler(ErrorHandler *);
00054 virtual void setPosition(const position_t &);
00055
00056
00057
00058
00059 virtual bool isType(const char*);
00060 virtual bool isLocation(const char*);
00061
00062
00063
00064
00065 virtual void typeName(int32_t prefix, const char* name, int range);
00066
00067 virtual void typeStruct(int32_t prefix, uint32_t fields);
00068
00069 virtual void structField(const char* name, uint32_t dim);
00070
00071 virtual void structFieldEnd();
00072
00073 virtual void declTypeDef(const char* name, uint32_t dim);
00074
00075 virtual void declTypeDefEnd();
00076
00077
00078
00079
00080 virtual void declVar(const char* name, uint32_t dim, bool init);
00081
00082 virtual void declVarEnd();
00083 virtual void declInitialiserList(uint32_t num);
00084 virtual void declFieldInit(const char* name);
00085
00086
00087
00088
00089 virtual void declProgress(bool);
00090
00091
00092
00093
00094 virtual void declParameter(const char* name, bool reference, uint32_t dim);
00095
00096 virtual void declParameterEnd();
00097
00098 virtual void declFuncBegin(const char* name, uint32_t n);
00099 virtual void declFuncEnd();
00100
00101
00102
00103
00104 virtual void procTemplateSet(const char *name);
00105 virtual void procBegin(const char* name, uint32_t n, uint32_t m);
00106 virtual void procEnd();
00107 virtual void procState(const char* name, bool hasInvariant);
00108 virtual void procStateCommit(const char* name);
00109 virtual void procStateUrgent(const char* name);
00110 virtual void procStateWinning(const char* name);
00111 virtual void procStateLosing(const char* name);
00112 virtual void procStateInit(const char* name);
00113 virtual void procEdgeBegin(const char* from, const char* to, const bool control);
00114 virtual void procEdgeEnd(const char* from, const char* to);
00115
00116 virtual void procSelect(const char *id);
00117 virtual void procGuard();
00118 virtual void procSync(Constants::synchronisation_t type);
00119 virtual void procUpdate();
00120
00121
00122
00123
00124 virtual void blockBegin();
00125 virtual void blockEnd();
00126 virtual void emptyStatement();
00127 virtual void forBegin();
00128 virtual void forEnd();
00129 virtual void iterationBegin(const char *name);
00130 virtual void iterationEnd(const char *name);
00131 virtual void whileBegin();
00132 virtual void whileEnd();
00133 virtual void doWhileBegin();
00134 virtual void doWhileEnd();
00135 virtual void ifBegin();
00136 virtual void ifElse();
00137 virtual void ifEnd(bool);
00138 virtual void breakStatement();
00139 virtual void continueStatement();
00140 virtual void switchBegin();
00141 virtual void switchEnd();
00142 virtual void caseBegin();
00143 virtual void caseEnd();
00144 virtual void defaultBegin();
00145 virtual void defaultEnd();
00146 virtual void exprStatement();
00147 virtual void returnStatement(bool);
00148
00149
00150
00151
00152 virtual void exprTrue();
00153 virtual void exprFalse();
00154 virtual void exprId(const char * varName);
00155 virtual void exprNat(int32_t);
00156 virtual void exprCallBegin();
00157 virtual void exprCallEnd(uint32_t n);
00158 virtual void exprArg(uint32_t n);
00159 virtual void exprArray();
00160 virtual void exprPostIncrement();
00161 virtual void exprPreIncrement();
00162 virtual void exprPostDecrement();
00163 virtual void exprPreDecrement();
00164 virtual void exprAssignment(Constants::kind_t op);
00165 virtual void exprUnary(Constants::kind_t unaryop);
00166 virtual void exprBinary(Constants::kind_t binaryop);
00167 virtual void exprInlineIf();
00168 virtual void exprComma();
00169 virtual void exprDot(const char *);
00170 virtual void exprDeadlock();
00171 virtual void exprForAllBegin(const char *name);
00172 virtual void exprForAllEnd(const char *name);
00173
00174
00175
00176
00177 virtual void instantiationBegin(const char*, const char*);
00178 virtual void instantiationEnd(const char *, const char *, uint32_t n);
00179 virtual void process(const char*);
00180
00181 virtual void done();
00182
00183 virtual void property(Constants::kind_t, int line);
00184
00185
00186
00187
00188
00189 virtual void beforeUpdate();
00190 virtual void afterUpdate();
00191
00192
00193
00194
00195
00196
00197 virtual void lowPriority(const char*);
00198 virtual void samePriority(const char*);
00199 virtual void higherPriority(const char*);
00200 };
00201 }
00202 #endif