00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef UTAP_SYSTEMBUILDER_H
00023 #define UTAP_SYSTEMBUILDER_H
00024
00025 #include <cassert>
00026 #include <vector>
00027 #include <inttypes.h>
00028
00029 #include "utap/expressionbuilder.h"
00030 #include "utap/utap.h"
00031
00032 namespace UTAP
00033 {
00069 class SystemBuilder : public ExpressionBuilder
00070 {
00071 protected:
00073 int32_t currentChanPriority;
00074
00076 int32_t currentProcPriority;
00077
00082 frame_t params;
00083
00085 function_t *currentFun;
00086
00088 edge_t *currentEdge;
00089
00091 std::vector<BlockStatement*> blocks;
00092
00094 std::vector<type_t> fields;
00095
00097 std::vector<std::string> labels;
00098
00099
00100
00101
00102
00103 declarations_t *getCurrentDeclarationBlock();
00104
00105 public:
00106 SystemBuilder(TimedAutomataSystem *);
00107
00108 virtual void typeArrayOfSize(size_t);
00109 virtual void typeArrayOfType(size_t);
00110 virtual void typeStruct(PREFIX, uint32_t fields);
00111 virtual void structField(const char* name);
00112 virtual void declTypeDef(const char* name);
00113 virtual void declVar(const char* name, bool init);
00114 virtual void declInitialiserList(uint32_t num);
00115 virtual void declFieldInit(const char* name);
00116 virtual void declProgress(bool);
00117 virtual void declParameter(const char* name, bool);
00118 virtual void declFuncBegin(const char* name);
00119 virtual void declFuncEnd();
00120 virtual void procBegin(const char* name);
00121 virtual void procEnd();
00122 virtual void procState(const char* name, bool hasInvariant);
00123 virtual void procStateCommit(const char* name);
00124 virtual void procStateUrgent(const char* name);
00125 virtual void procStateWinning(const char* name);
00126 virtual void procStateLosing(const char* name);
00127 virtual void procStateInit(const char* name);
00128 virtual void procEdgeBegin(const char* from, const char* to, const bool control);
00129 virtual void procEdgeEnd(const char* from, const char* to);
00130 virtual void procSelect(const char *id);
00131 virtual void procGuard();
00132 virtual void procSync(Constants::synchronisation_t type);
00133 virtual void procUpdate();
00134 virtual void blockBegin();
00135 virtual void blockEnd();
00136 virtual void emptyStatement();
00137 virtual void forBegin();
00138 virtual void forEnd();
00139 virtual void iterationBegin(const char *name);
00140 virtual void iterationEnd(const char *name);
00141 virtual void whileBegin();
00142 virtual void whileEnd();
00143 virtual void doWhileBegin();
00144 virtual void doWhileEnd();
00145 virtual void ifBegin();
00146 virtual void ifElse();
00147 virtual void ifEnd(bool);
00148 virtual void exprStatement();
00149 virtual void returnStatement(bool);
00150 virtual void exprCallBegin();
00151 virtual void instantiationBegin(const char*, size_t, const char*);
00152 virtual void instantiationEnd(
00153 const char *, size_t, const char *, size_t);
00154 virtual void process(const char*);
00155 virtual void done();
00156 virtual void beforeUpdate();
00157 virtual void afterUpdate();
00158 virtual void incProcPriority();
00159 virtual void incChanPriority();
00160 virtual void chanPriority();
00161 virtual void procPriority(const char*);
00162 virtual void defaultChanPriority();
00163 };
00164 }
00165 #endif