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 <stdexcept>
00026
00027 #include "utap/builder.h"
00028 #include "utap/utap.h"
00029
00030 namespace UTAP
00031 {
00032 class NotSupportedException : public std::logic_error
00033 {
00034 public:
00035 NotSupportedException(const char *msg) : std::logic_error(msg) {}
00036
00037 };
00038
00039 class AbstractBuilder : public ParserBuilder
00040 {
00041 protected:
00042
00043 ErrorHandler *errorHandler;
00044
00045 position_t position;
00046 public:
00047 AbstractBuilder();
00048
00049 virtual void setErrorHandler(ErrorHandler *);
00050 virtual void setPosition(const position_t &);
00051
00052
00053
00054
00055 virtual bool isType(const char*);
00056 virtual bool isLocation(const char*);
00057
00058
00059
00060
00061 virtual void typeName(int32_t prefix, const char* name, int range);
00062
00063 virtual void typeStruct(int32_t prefix, uint32_t fields);
00064
00065 virtual void structField(const char* name, uint32_t dim);
00066
00067 virtual void structFieldEnd();
00068
00069 virtual void declTypeDef(const char* name, uint32_t dim);
00070
00071 virtual void declTypeDefEnd();
00072
00073
00074
00075
00076 virtual void declVar(const char* name, uint32_t dim, bool init);
00077
00078 virtual void declVarEnd();
00079 virtual void declInitialiserList(uint32_t num);
00080 virtual void declFieldInit(const char* name);
00081
00082
00083
00084
00085 virtual void declProgress(bool);
00086
00087
00088
00089
00090 virtual void declParameter(const char* name, bool reference, uint32_t dim);
00091
00092 virtual void declParameterEnd();
00093
00094 virtual void declFuncBegin(const char* name, uint32_t n);
00095 virtual void declFuncEnd();
00096
00097
00098
00099
00100 virtual void procBegin(const char* name, uint32_t n);
00101 virtual void procEnd();
00102 virtual void procState(const char* name, bool hasInvariant);
00103 virtual void procStateCommit(const char* name);
00104 virtual void procStateUrgent(const char* name);
00105 virtual void procStateInit(const char* name);
00106 virtual void procEdge(const char* from, const char* to);
00107
00108 virtual void procGuard();
00109 virtual void procSync(Constants::synchronisation_t type);
00110 virtual void procUpdate();
00111
00112
00113
00114
00115 virtual void blockBegin();
00116 virtual void blockEnd();
00117 virtual void emptyStatement();
00118 virtual void forBegin();
00119 virtual void forEnd();
00120 virtual void whileBegin();
00121 virtual void whileEnd();
00122 virtual void doWhileBegin();
00123 virtual void doWhileEnd();
00124 virtual void ifBegin();
00125 virtual void ifElse();
00126 virtual void ifEnd(bool);
00127 virtual void breakStatement();
00128 virtual void continueStatement();
00129 virtual void switchBegin();
00130 virtual void switchEnd();
00131 virtual void caseBegin();
00132 virtual void caseEnd();
00133 virtual void defaultBegin();
00134 virtual void defaultEnd();
00135 virtual void exprStatement();
00136 virtual void returnStatement(bool);
00137
00138
00139
00140
00141 virtual void exprTrue();
00142 virtual void exprFalse();
00143 virtual void exprId(const char * varName);
00144 virtual void exprNat(int32_t);
00145 virtual void exprCallBegin(const char * functionName);
00146 virtual void exprCallEnd(uint32_t n);
00147 virtual void exprArg(uint32_t n);
00148 virtual void exprArray();
00149 virtual void exprPostIncrement();
00150 virtual void exprPreIncrement();
00151 virtual void exprPostDecrement();
00152 virtual void exprPreDecrement();
00153 virtual void exprAssignment(Constants::kind_t op);
00154 virtual void exprUnary(Constants::kind_t unaryop);
00155 virtual void exprBinary(Constants::kind_t binaryop);
00156 virtual void exprInlineIf();
00157 virtual void exprComma();
00158 virtual void exprDot(const char *);
00159 virtual void exprDeadlock();
00160
00161
00162
00163
00164 virtual void instantiationBegin(const char*, const char*);
00165 virtual void instantiationEnd(const char *, const char *, uint32_t n);
00166 virtual void process(const char*);
00167
00168 virtual void done();
00169
00170 virtual void property(Constants::kind_t, int line);
00171
00172
00173
00174
00175
00176 virtual void beforeUpdate();
00177 virtual void afterUpdate();
00178
00179
00180
00181
00182
00183
00184 virtual void lowPriority(const char*);
00185 virtual void samePriority(const char*);
00186 virtual void higherPriority(const char*);
00187 };
00188 }
00189 #endif