libutap  0.93
Uppaal Timed Automata Parser
abstractbuilder.h
Go to the documentation of this file.
1 // -*- mode: C++; c-file-style: "stroustrup"; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2 
3 /* libutap - Uppaal Timed Automata Parser.
4  Copyright (C) 2002-2003 Uppsala University and Aalborg University.
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public License
8  as published by the Free Software Foundation; either version 2.1 of
9  the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful, but
12  WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public
17  License along with this library; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19  USA
20 */
21 
22 #ifndef UTAP_ABSTRACTBUILDER_HH
23 #define UTAP_ABSTRACTBUILDER_HH
24 
25 #include <exception>
26 #include <string>
27 #include <vector>
28 
29 #include "utap/builder.h"
30 #include "utap/utap.h"
31 #include "utap/position.h"
32 
33 namespace UTAP
34 {
35  class NotSupportedException : public std::exception
36  {
37  private:
38  std::string error;
39  public:
40  NotSupportedException(const char *err) { error = err; }
41  virtual ~NotSupportedException() noexcept {}
42  const char* what() const noexcept override { return error.c_str(); }
43  };
44 
46  {
47  protected:
49  public:
51 
52  void setPosition(uint32_t, uint32_t) override;
53 
54  /************************************************************
55  * Query functions
56  */
57  bool isType(const char*) override;
58 
59  /************************************************************
60  * Types
61  */
62  void typeDuplicate() override;
63  void typePop() override;
64  void typeBool(PREFIX) override;
65  void typeInt(PREFIX) override;
66  void typeDouble(PREFIX) override;
67  void typeBoundedInt(PREFIX) override;
68  void typeChannel(PREFIX) override;
69  void typeClock(PREFIX) override;
70  void typeVoid() override;
71  void typeScalar(PREFIX) override;
72  void typeName(PREFIX, const char* name) override;
73  void typeStruct(PREFIX, uint32_t fields) override;
74  void typeArrayOfSize(size_t) override;
75  void typeArrayOfType(size_t) override;
76  void structField(const char* name) override;
77  void declTypeDef(const char* name) override;
78 
79  /************************************************************
80  * Variable declarations
81  */
82  void declVar(const char* name, bool init) override;
83  void declInitialiserList(uint32_t num) override; // n initialisers
84  void declFieldInit(const char* name) override; // 1 initialiser
85 
86  /********************************************************************
87  * Gantt chart declaration
88  */
89  void ganttDeclStart(const char* name) override;
90  void ganttDeclSelect(const char *id) override;
91  void ganttDeclEnd() override;
92  void ganttEntryStart() override;
93  void ganttEntrySelect(const char *id) override;
94  void ganttEntryEnd() override;
95 
96  /************************************************************
97  * Progress measure declarations
98  */
99  void declProgress(bool) override;
100 
101  /************************************************************
102  * Function declarations
103  */
104  void declParameter(const char* name, bool) override;
105  void declFuncBegin(const char* name) override; // n paramaters
106  void declFuncEnd() override; // 1 block
107 
108  /************************************************************
109  * Process declarations
110  */
111  void procBegin(const char* name, const bool isTA = true,
112  const std::string type = "", const std::string mode = "") override;
113  void procEnd() override; // 1 ProcBody
114  void procState(const char* name, bool hasInvariant, bool hasER) override; // 1 expr
115  void procStateCommit(const char* name) override; // mark previously decl. state
116  void procStateUrgent(const char* name) override; // mark previously decl. state
117  void procStateInit(const char* name) override; // mark previously decl. state
118  void procBranchpoint(const char* name) override;
119  void procEdgeBegin(const char* from, const char* to, const bool control, const char* actname) override;
120  void procEdgeEnd(const char* from, const char* to) override;
121  // 1 epxr,1sync,1expr
122  void procSelect(const char *id) override;
123  void procGuard() override;
124  void procSync(Constants::synchronisation_t type) override; // 1 expr
125  void procUpdate() override;
126  void procProb() override;
127  /************************************************************
128  * Process declarations for LSC
129  */
130  void procInstanceLine() override;
131  void instanceName(const char* name, bool templ=true) override;
132  void instanceNameBegin(const char *name) override;
133  void instanceNameEnd(const char *name, size_t arguments) override;
134  void procMessage(const char* from, const char* to, const int loc, const bool pch) override;
135  void procMessage(Constants::synchronisation_t type) override; // 1 expr
136  void procCondition(const std::vector<char*> anchors, const int loc,
137  const bool pch, const bool hot) override;
138  void procCondition() override; // Label
139  void procLscUpdate(const char* anchor, const int loc, const bool pch) override;
140  void procLscUpdate() override; // Label
141  void hasPrechart(const bool pch) override;
142 
143  /************************************************************
144  * Statements
145  */
146  void blockBegin() override;
147  void blockEnd() override;
148  void emptyStatement() override;
149  void forBegin() override; // 3 expr
150  void forEnd() override; // 1 stat
151  void iterationBegin(const char *name) override; // 1 id, 1 type
152  void iterationEnd(const char *name) override; // 1 stat
153  void whileBegin() override;
154  void whileEnd() override; // 1 expr, 1 stat
155  void doWhileBegin() override;
156  void doWhileEnd() override; // 1 stat, 1 expr
157  void ifBegin() override;
158  void ifCondition() override; // 1 expr
159  void ifThen() override; // 1 statement
160  void ifEnd(bool) override; // 1 expr, 1 or 2 statements
161  void breakStatement() override;
162  void continueStatement() override;
163  void switchBegin() override;
164  void switchEnd() override; // 1 expr, 1+ case/default
165  void caseBegin() override;
166  void caseEnd() override; // 1 expr, 0+ stat
167  void defaultBegin() override;
168  void defaultEnd() override; // 0+ statements
169  void exprStatement() override; // 1 expr
170  void returnStatement(bool) override; // 1 expr if argument is true
171  void assertStatement() override;
172 
173  /************************************************************
174  * Expressions
175  */
176  void exprTrue() override;
177  void exprFalse() override;
178  void exprDouble(double) override;
179  void exprId(const char * varName) override;
180  void exprNat(int32_t) override; // natural number
181  void exprCallBegin() override;
182  void exprCallEnd(uint32_t n) override; // n exprs as arguments
183  void exprArray() override; // 2 expr
184  void exprPostIncrement() override; // 1 expr
185  void exprPreIncrement() override; // 1 expr
186  void exprPostDecrement() override; // 1 expr
187  void exprPreDecrement() override; // 1 expr
188  void exprAssignment(Constants::kind_t op) override; // 2 expr
189  void exprUnary(Constants::kind_t unaryop) override; // 1 expr
190  void exprBinary(Constants::kind_t binaryop) override; // 2 expr
191  void exprNary(Constants::kind_t, uint32_t num) override;
192  void exprScenario(const char* name) override;
193  void exprTernary(Constants::kind_t ternaryop, bool firstMissing) override; // 3 expr
194  void exprInlineIf() override; // 3 expr
195  void exprComma() override; // 2 expr
196  void exprDot(const char *) override; // 1 expr
197  void exprDeadlock() override;
198  void exprForAllBegin(const char *name) override;
199  void exprForAllEnd(const char *name) override;
200  void exprExistsBegin(const char *name) override;
201  void exprExistsEnd(const char *name) override;
202  void exprSumBegin(const char *name) override;
203  void exprSumEnd(const char *name) override;
204 
205  void exprSync(Constants::synchronisation_t type) override;
206  void declIO(const char*,int,int) override;
207 
208  void exprSMCControl() override;
209  void exprProbaQualitative(Constants::kind_t,Constants::kind_t,double) override;
210  void exprProbaQuantitative(Constants::kind_t) override;
211  void exprProbaCompare(Constants::kind_t,Constants::kind_t) override;
212  void exprProbaExpected(const char*) override;
213  void exprSimulate(int,bool=false,int = 0) override;
214  void exprBuiltinFunction1(Constants::kind_t) override;
215  void exprBuiltinFunction2(Constants::kind_t) override;
216 
217  //MITL
218  void exprMitlFormula() override;
219  void exprMitlUntil(int,int ) override;
220  void exprMitlRelease(int,int) override;
221  void exprMitlDisj() override;
222  void exprMitlConj() override;
223  void exprMitlNext() override;
224  void exprMitlAtom() override;
225 
226  /************************************************************
227  * System declaration
228  */
229  void instantiationBegin(const char*, size_t, const char*) override;
230  void instantiationEnd(
231  const char *, size_t, const char *, size_t) override;
232  void process(const char*) override;
233  void processListEnd() override;
234  void done() override;
235 
236  void handleExpect(const char* text) override;
237 
238  /************************************************************
239  * Properties
240  */
241  void property() override;
242  void scenario(const char*) override;// LSC
243  void parse(const char*) override;// LSC
244 
245  /********************************************************************
246  * Guiding
247  */
248  void beforeUpdate() override;
249  void afterUpdate() override;
250 
251 
252  /********************************************************************
253  * Priority
254  */
255  void beginChanPriority() override;
256  void addChanPriority(char separator) override;
257  void defaultChanPriority() override;
258  void incProcPriority() override;
259  void procPriority(const char*) override;
260 
261  void declDynamicTemplate(const std::string&) override;
262  void exprSpawn(int ) override;
263  void exprExit() override;
264  void exprNumOf() override;
265 
266  void exprForAllDynamicBegin(const char*,const char* ) override;
267  void exprForAllDynamicEnd(const char* name) override;
268  void exprExistsDynamicBegin(const char*,const char*) override;
269  void exprExistsDynamicEnd(const char* name) override;
270  void exprSumDynamicBegin(const char*,const char* ) override;
271  void exprSumDynamicEnd(const char* ) override;
272  void exprForeachDynamicBegin(const char*,const char* ) override;
273  void exprForeachDynamicEnd(const char* name) override;
274  void exprDynamicProcessExpr(const char*) override;
275  void exprMITLForAllDynamicBegin(const char* ,const char*) override;
276  void exprMITLForAllDynamicEnd(const char* name) override;
277  void exprMITLExistsDynamicBegin(const char* ,const char*) override;
278  void exprMITLExistsDynamicEnd(const char* name) override;
279 
281  void queryBegin() override;
282  void queryFormula(const char* formula, const char* location) override;
283  void queryComment(const char* comment) override;
284  void queryEnd() override;
285  };
286 }
287 #endif
The ParserBuilder interface is used by the parser to output the parsed system.
Definition: builder.h:80
#define comment
Definition: lexer.cc:856
virtual ~NotSupportedException() noexcept
const char * what() const noexcept override
Definition: lexer.cc:817
NotSupportedException(const char *err)