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 "utap/builder.h"
00029 #include "utap/utap.h"
00030 #include "utap/position.h"
00031
00032 namespace UTAP
00033 {
00034 class NotSupportedException : public std::exception
00035 {
00036 private:
00037 std::string error;
00038 public:
00039 NotSupportedException(const char *err) { error = err; }
00040 virtual ~NotSupportedException() throw() {}
00041 virtual const char* what() const throw() { return error.c_str(); }
00042 };
00043
00044 class AbstractBuilder : public ParserBuilder
00045 {
00046 protected:
00047 position_t position;
00048 public:
00049 AbstractBuilder();
00050
00051 virtual void setPosition(uint32_t, uint32_t);
00052
00053
00054
00055
00056 virtual bool isType(const char*);
00057
00058
00059
00060
00061 virtual void typeDuplicate();
00062 virtual void typePop();
00063 virtual void typeBool(PREFIX);
00064 virtual void typeInt(PREFIX);
00065 virtual void typeBoundedInt(PREFIX);
00066 virtual void typeChannel(PREFIX);
00067 virtual void typeClock();
00068 virtual void typeVoid();
00069 virtual void typeScalar(PREFIX);
00070 virtual void typeName(PREFIX, const char* name);
00071 virtual void typeStruct(PREFIX, uint32_t fields);
00072 virtual void typeArrayOfSize(size_t);
00073 virtual void typeArrayOfType(size_t);
00074 virtual void structField(const char* name);
00075 virtual void declTypeDef(const char* name);
00076
00077
00078
00079
00080 virtual void declVar(const char* name, bool init);
00081 virtual void declInitialiserList(uint32_t num);
00082 virtual void declFieldInit(const char* name);
00083
00084
00085
00086
00087 virtual void declProgress(bool);
00088
00089
00090
00091
00092 virtual void declParameter(const char* name, bool);
00093 virtual void declFuncBegin(const char* name);
00094 virtual void declFuncEnd();
00095
00096
00097
00098
00099 virtual void procBegin(const char* name);
00100 virtual void procEnd();
00101 virtual void procState(const char* name, bool hasInvariant);
00102 virtual void procStateCommit(const char* name);
00103 virtual void procStateUrgent(const char* name);
00104 virtual void procStateInit(const char* name);
00105 virtual void procEdgeBegin(const char* from, const char* to, const bool control);
00106 virtual void procEdgeEnd(const char* from, const char* to);
00107
00108 virtual void procSelect(const char *id);
00109 virtual void procGuard();
00110 virtual void procSync(Constants::synchronisation_t type);
00111 virtual void procUpdate();
00112
00113
00114
00115
00116 virtual void blockBegin();
00117 virtual void blockEnd();
00118 virtual void emptyStatement();
00119 virtual void forBegin();
00120 virtual void forEnd();
00121 virtual void iterationBegin(const char *name);
00122 virtual void iterationEnd(const char *name);
00123 virtual void whileBegin();
00124 virtual void whileEnd();
00125 virtual void doWhileBegin();
00126 virtual void doWhileEnd();
00127 virtual void ifBegin();
00128 virtual void ifElse();
00129 virtual void ifEnd(bool);
00130 virtual void breakStatement();
00131 virtual void continueStatement();
00132 virtual void switchBegin();
00133 virtual void switchEnd();
00134 virtual void caseBegin();
00135 virtual void caseEnd();
00136 virtual void defaultBegin();
00137 virtual void defaultEnd();
00138 virtual void exprStatement();
00139 virtual void returnStatement(bool);
00140 virtual void assertStatement();
00141
00142
00143
00144
00145 virtual void exprTrue();
00146 virtual void exprFalse();
00147 virtual void exprId(const char * varName);
00148 virtual void exprNat(int32_t);
00149 virtual void exprCallBegin();
00150 virtual void exprCallEnd(uint32_t n);
00151 virtual void exprArray();
00152 virtual void exprPostIncrement();
00153 virtual void exprPreIncrement();
00154 virtual void exprPostDecrement();
00155 virtual void exprPreDecrement();
00156 virtual void exprAssignment(Constants::kind_t op);
00157 virtual void exprUnary(Constants::kind_t unaryop);
00158 virtual void exprBinary(Constants::kind_t binaryop);
00159 virtual void exprTernary(Constants::kind_t ternaryop, bool firstMissing);
00160 virtual void exprInlineIf();
00161 virtual void exprComma();
00162 virtual void exprDot(const char *);
00163 virtual void exprDeadlock();
00164 virtual void exprForAllBegin(const char *name);
00165 virtual void exprForAllEnd(const char *name);
00166 virtual void exprExistsBegin(const char *name);
00167 virtual void exprExistsEnd(const char *name);
00168
00169
00170
00171
00172 virtual void instantiationBegin(const char*, size_t, const char*);
00173 virtual void instantiationEnd(
00174 const char *, size_t, const char *, size_t);
00175 virtual void process(const char*);
00176 virtual void done();
00177
00178
00179
00180
00181 virtual void property();
00182 virtual void paramProperty(size_t, Constants::kind_t);
00183 virtual void declParamId(const char*);
00184
00185
00186
00187
00188 virtual void beforeUpdate();
00189 virtual void afterUpdate();
00190
00191
00192
00193
00194
00195 virtual void incProcPriority();
00196 virtual void incChanPriority();
00197 virtual void chanPriority();
00198 virtual void procPriority(const char*);
00199 virtual void defaultChanPriority();
00200
00201
00202
00203
00204 virtual void ssQueryBegin();
00205 virtual void ssQueryEnd();
00206 };
00207 }
00208 #endif