libutap
system.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-2006 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_INTERMEDIATE_HH
23 #define UTAP_INTERMEDIATE_HH
24 
25 #include <list>
26 #include <deque>
27 #include <vector>
28 #include <map>
29 #include <exception>
30 #include <algorithm>
31 
32 #include "utap/symbols.h"
33 #include "utap/expression.h"
34 #include "utap/position.h"
35 
36 namespace UTAP
37 {
42  struct variable_t
43  {
46  std::string toString() const;
47  };
48 
55  struct state_t
56  {
61  int32_t locNr;
62  std::string toString() const;
63  };
64 
71  {
73  int32_t bpNr;
74  };
75 
76 
77 
84  struct edge_t
85  {
86  int nr;
87  bool control;
88  std::string actname;
97 #ifdef ENABLE_PROB
98  expression_t prob;
99 #endif
100  std::string toString() const;
101  std::list<int32_t> selectValues;
102  };
103 
104  class BlockStatement; // Forward declaration
105 
109  struct function_t
110  {
112  std::set<symbol_t> changes;
113  std::set<symbol_t> depends;
114  std::list<variable_t> variables;
116  function_t() : body(NULL) {}
117  ~function_t();
118  std::string toString() const; // used to write the XML file
119  };
120 
121  struct progress_t
122  {
125  };
126 
127  struct iodecl_t
128  {
129  std::string instanceName;
130  std::vector<expression_t> param;
131  std::list<expression_t> inputs, outputs, csp;
132  };
133 
138  struct ganttmap_t
139  {
142  };
143 
147  struct gantt_t
148  {
149  gantt_t(const char *s) : name(s) {}
150  gantt_t(const std::string& s) : name(s) {}
151 
152  std::string name;
154  std::list<ganttmap_t> mapping;
155  };
156 
161  struct template_t;
163  {
165  std::list<variable_t> variables;
166  std::list<function_t> functions;
167  std::list<progress_t> progress;
168  std::list<iodecl_t> iodecl;
169  std::list<gantt_t> ganttChart;
170 
172  bool addFunction(type_t type, std::string, function_t *&);
174  std::string toString(bool global = false) const;
175  std::string getConstants() const;
176  std::string getTypeDefinitions() const;
177  std::string getVariables(bool global) const;
178  std::string getFunctions() const;
179  };
180 
181  struct instanceLine_t; //to be defined later
182 
187  struct message_t
188  {
189  int nr;
190  int location;
195  message_t() : nr(-1) {};
196  };
200  struct condition_t
201  {
202  int nr;
203  int location;
204  std::vector<instanceLine_t*> anchors; //TODO
207  bool isHot;
208  condition_t() : nr(-1) {};
209  };
210 
214  struct update_t
215  {
216  int nr;
217  int location;
221  update_t() : nr(-1) {};
222  };
223 
224  struct simregion_t
225  {
226  int nr;
231  int getLoc() const;
232  bool isInPrechart() const;
233 
235  {
236  message = new message_t();
237  condition = new condition_t();
238  update = new update_t();
239  }
240 
242  {
243  delete message;
244  delete condition;
245  delete update;
246  }
247 
248  std::string toString() const;
249 
250  void setMessage(std::deque<message_t>& messages, int nr);
251  void setCondition(std::deque<condition_t>& conditions, int nr);
252  void setUpdate(std::deque<update_t>& updates, int nr);
253  };
254 
256  {
257  bool operator() (const simregion_t& x, const simregion_t& y) const
258  {
259  return (x.getLoc() < y.getLoc());
260  }
261  };
262 
263  struct cut_t
264  {
265  int nr;
266  std::vector<simregion_t> simregions; //unordered
267  cut_t(int number) {
268  simregions.clear();
269  nr = number;
270  };
271  void add(simregion_t s) {
272  simregions.push_back(s);
273  };
274  void erase(simregion_t s);
275  bool contains(simregion_t s);
276 
287  bool isInPrechart(const simregion_t& fSimregion) const;
288  bool isInPrechart() const;
289 
290  bool equals(const cut_t& y) const;
291 
292  std::string toString() const {
293  std::string s="CUT(";
294  for (unsigned int i = 0; i < simregions.size(); ++i)
295  s += simregions[i].toString() + " ";
296  s = s.substr(0, s.size()-1);
297  s += ")";
298  return s;
299  };
300  };
301 
331  struct instance_t
332  {
335  std::map<symbol_t, expression_t> mapping;
336  size_t arguments;
337  size_t unbound;
338  struct template_t *templ;
339  std::set<symbol_t> restricted;
341  std::string writeMapping() const ;
342  std::string writeParameters() const ;
343  std::string writeArguments() const ;
344  };
345 
348  struct instanceLine_t : public instance_t
349  {
350  int32_t instanceNr;
351  std::vector<simregion_t> getSimregions(const std::vector<simregion_t>& simregions);
352  void addParameters(instance_t &inst, frame_t params,
353  const std::vector<expression_t> &arguments);
354  };
355 
357  {
360  std::deque<state_t> states;
361  std::deque<branchpoint_t> branchpoints;
362  std::deque<edge_t> edges;
363  std::vector<expression_t> dynamicEvals;
364  bool isTA;
365 
367  dynamicEvals.push_back (t);
368  return dynamicEvals.size()-1;
369  }
370 
371  std::vector<expression_t>& getDynamicEval () {return dynamicEvals;}
372 
374  state_t &addLocation(std::string, expression_t inv, expression_t er);
375 
377  branchpoint_t &addBranchpoint(std::string);
378 
380  edge_t &addEdge(symbol_t src, symbol_t dst, bool type, std::string actname);
381 
382  std::deque<instanceLine_t> instances;
383  std::deque<message_t> messages;
384  std::deque<update_t> updates;
385  std::deque<condition_t> conditions;
386  std::string type;
387  std::string mode;
389  bool dynamic;
390  int dynindex;
391  bool isDefined;
392 
395 
397  message_t &addMessage(symbol_t src, symbol_t dst, int loc, bool pch);
398 
400  condition_t &addCondition(std::vector<symbol_t> anchors, int loc,
401  bool pch, bool isHot);
402 
404  update_t &addUpdate(symbol_t anchor, int loc, bool pch);
405 
406  bool isInvariant(); // type of the LSC
407 
408 
409  /* gets the simregions from the LSC scenario */
410  const std::vector<simregion_t> getSimregions();
411 
412  /* returns the condition on the given instance, at y location */
413  bool getCondition(instanceLine_t* instance, int y, condition_t*& simCondition);
414 
415  /* returns the update on the given instance at y location */
416  bool getUpdate(instanceLine_t* instance, int y, update_t*& simUpdate);
417 
418  /* returns the first update on one of the given instances, at y location */
419  bool getUpdate(const std::vector<instanceLine_t*>& instances, int y, update_t*& simUpdate);
420 
421  };
422 
428  {
429  typedef std::pair<char,expression_t> entry;
430  typedef std::list<entry> tail_t;
431 
433  tail_t tail;
434 
435  std::string toString() const;
436  };
437 
438  struct query_t {
439  std::string formula;
440  std::string comment;
441  std::string location;
442  };
443  typedef std::vector<query_t> queries_t;
444 
445 
446  class TimedAutomataSystem;
447 
449  {
450  public:
451  virtual ~SystemVisitor() {}
454  virtual void visitVariable(variable_t &) {}
455  virtual bool visitTemplateBefore(template_t &) { return true; }
456  virtual void visitTemplateAfter(template_t &) {}
457  virtual void visitState(state_t &) {}
458  virtual void visitEdge(edge_t &) {}
459  virtual void visitInstance(instance_t &) {}
460  virtual void visitProcess(instance_t &) {}
461  virtual void visitFunction(function_t &) {}
462  virtual void visitTypeDef(symbol_t) {}
463  virtual void visitIODecl(iodecl_t&) {}
464  virtual void visitProgressMeasure(progress_t &) {}
465  virtual void visitGanttChart(gantt_t&) {}
467  virtual void visitMessage(message_t &) {}
468  virtual void visitCondition(condition_t &) {}
469  virtual void visitUpdate(update_t &) {}
470  };
471 
473  {
474  public:
477  virtual ~TimedAutomataSystem();
478 
481 
483  std::list<template_t> &getTemplates();
484  std::vector<template_t*> &getDynamicTemplates ();
485  template_t* getDynamicTemplate (const std::string name);
486 
488  std::list<instance_t> &getProcesses();
489 
491  queries_t &getQueries();
492 
493  void addPosition(
494  uint32_t position, uint32_t offset, uint32_t line, std::string path);
495  const Positions::line_t &findPosition(uint32_t position) const;
496 
498  function_t *, frame_t, type_t, std::string, expression_t initital);
500  declarations_t *, type_t type, std::string, expression_t initial);
501  void addProgressMeasure(
502  declarations_t *, expression_t guard, expression_t measure);
503 
504  template_t &addTemplate(std::string, frame_t params, const bool isTA = true,
505  const std::string type = "", const std::string mode = "");
506  template_t &addDynamicTemplate(std::string, frame_t params);
507 
509  std::string name, instance_t &instance, frame_t params,
510  const std::vector<expression_t> &arguments);
511 
513  std::string name, instance_t &instance, frame_t params,
514  const std::vector<expression_t> &arguments);
515  void removeProcess(instance_t &instance); //LSC
516 
517  void copyVariablesFromTo(template_t* from, template_t* to) const;
518  void copyFunctionsFromTo(template_t* from, template_t* to) const;
519 
520  std::string obsTA; //name of the observer TA instance
521 
522  void addProcess(instance_t &instance);
524  void accept(SystemVisitor &);
525 
530 
531  void addQuery(const query_t &query);
532  bool queriesEmpty();
533 
534  /* The default priority for channels is also used for 'tau
535  * transitions' (i.e. non-synchronizing transitions).
536  */
537  void beginChanPriority(expression_t chan);
538  void addChanPriority(char separator, expression_t chan);
539  const std::list<chan_priority_t>& getChanPriorities() const;
540  std::list<chan_priority_t>& getMutableChanPriorities();
541 
543  void setProcPriority(const char* name, int priority);
544 
546  int getProcPriority(const char* name) const;
547 
549  bool hasPriorityDeclaration() const;
550 
552  bool hasStrictInvariants() const;
553 
555  void recordStrictInvariant();
556 
558  bool hasStopWatch() const;
559 
561  void recordStopWatch();
562 
565 
568 
571  void setSyncUsed(int s) { syncUsed = s; }
572  int getSyncUsed() const { return syncUsed; }
573 
575  bool hasUrgentTransition() const { return hasUrgentTrans; }
576  bool hasDynamicTemplates () const {return dynamicTemplates.size () != 0;}
577 
578  protected:
579 
587  std::list<chan_priority_t> chanPriorities;
588  std::map<std::string,int> procPriority;
589  int syncUsed; // see typechecker
590 
591  // The list of templates.
592  std::list<template_t> templates;
593  //List of dynamic template
594  std::list<template_t> dynamicTemplates;
595  std::vector<template_t*> dynamicTemplatesVec;
596 
597  // The list of template instances.
598  std::list<instance_t> instances;
599 
600  std::list<instance_t> lscInstances;
601  bool modified;
602 
603  // List of processes.
604  std::list<instance_t> processes;
605 
606  // Global declarations
608 
611  queries_t queries;
612 
614  std::list<variable_t> &variables, frame_t frame,
615  type_t type, std::string);
616 
617  std::string location;
618 
619  public:
620  void addError(position_t, std::string, std::string location="");
621  void addWarning(position_t, std::string);
622  bool hasErrors() const;
623  bool hasWarnings() const;
624  const std::vector<error_t> &getErrors() const;
625  const std::vector<error_t> &getWarnings() const;
626  void clearErrors();
627  void clearWarnings();
628  bool isModified() const;
629  void setModified(bool mod);
630  iodecl_t* addIODecl();
631  private:
632  std::vector<error_t> errors;
633  std::vector<error_t> warnings;
634  Positions positions;
635  };
636 }
637 
638 #endif
int getLoc() const
May be empty.
Definition: system.cpp:727
void addProgressMeasure(declarations_t *, expression_t guard, expression_t measure)
Definition: system.cpp:1191
frame_t parameters
Definition: system.h:140
expression_t measure
Definition: system.h:124
std::deque< edge_t > edges
Edges.
Definition: system.h:362
std::list< int32_t > selectValues
The select values, if any.
Definition: system.h:101
BlockStatement * body
Pointer to the block.
Definition: system.h:115
declarations_t global
Definition: system.h:607
symbol_t uid
The name.
Definition: system.h:333
int nr
Placement in input file.
Definition: system.h:216
void setCondition(std::deque< condition_t > &conditions, int nr)
Definition: system.cpp:771
const std::list< chan_priority_t > & getChanPriorities() const
Definition: system.cpp:1366
std::list< progress_t > progress
Progress measures.
Definition: system.h:167
expression_t mapping
Definition: system.h:141
virtual void visitVariable(variable_t &)
Definition: system.h:454
std::string comment
Definition: system.h:440
std::vector< expression_t > param
Definition: system.h:130
bool hasWarnings() const
Definition: system.cpp:1466
template_t & addTemplate(std::string, frame_t params, const bool isTA=true, const std::string type="", const std::string mode="")
Creates and returns a new template.
Definition: system.cpp:975
std::string instanceName
Definition: system.h:129
bool hasPriorityDeclaration() const
Returns true if system has some priority declaration.
Definition: system.cpp:1388
message_t()
Definition: system.h:195
int nr
Definition: system.h:226
bool hasErrors() const
Definition: system.cpp:1461
bool control
Controllable (true/false)
Definition: system.h:87
std::list< gantt_t > ganttChart
Definition: system.h:169
bool addFunction(type_t type, std::string, function_t *&)
Add function declaration.
Definition: system.cpp:134
std::string mode
Definition: system.h:387
std::list< chan_priority_t > & getMutableChanPriorities()
Definition: system.cpp:1371
const std::vector< error_t > & getWarnings() const
Definition: system.cpp:1456
std::vector< query_t > queries_t
Definition: system.h:443
A reference to a symbol.
Definition: symbols.h:107
template_t * getDynamicTemplate(const std::string name)
Definition: system.cpp:1029
Information about a branchpoint.
Definition: system.h:70
Definition: system.h:356
update_t()
Definition: system.h:221
virtual void visitProcess(instance_t &)
Definition: system.h:460
expression_t costRate
Rate expression.
Definition: system.h:60
frame_t frame
Definition: system.h:164
int getSyncUsed() const
Definition: system.h:572
bool isInPrechart
Definition: system.h:220
Information about a condition.
Definition: system.h:200
std::list< function_t > functions
Functions.
Definition: system.h:166
std::string getFunctions() const
Definition: system.cpp:227
bool hasStrictLowerBoundOnControllableEdges() const
Returns true if the system has guards on controllable edges with strict lower bounds.
Definition: system.cpp:1413
std::string getVariables(bool global) const
Definition: system.cpp:201
std::string toString() const
Definition: system.cpp:791
std::string toString() const
Definition: system.h:292
void addChanPriority(char separator, expression_t chan)
Definition: system.cpp:1359
void recordStrictInvariant()
Record that the system has some strict invariant.
Definition: system.cpp:1393
queries_t & getQueries()
Returns the queries enclosed in the model.
Definition: system.cpp:1130
branchpoint_t & addBranchpoint(std::string)
Add another branchpoint to template.
Definition: system.cpp:312
bool isTA
Definition: system.h:364
void setUpdate(std::deque< update_t > &updates, int nr)
Definition: system.cpp:781
std::deque< update_t > updates
Updates.
Definition: system.h:384
int location
Definition: system.h:203
frame_t select
Frame for non-deterministic select.
Definition: system.h:93
std::deque< message_t > messages
Messages.
Definition: system.h:383
std::vector< template_t * > dynamicTemplatesVec
Definition: system.h:595
int32_t locNr
Location number in template.
Definition: system.h:61
condition_t * condition
May be empty.
Definition: system.h:228
virtual void visitProgressMeasure(progress_t &)
Definition: system.h:464
expression_t head
First expression in priority declaration.
Definition: system.h:432
Definition: system.h:224
void setAfterUpdate(expression_t)
Definition: system.cpp:1341
void setBeforeUpdate(expression_t)
Definition: system.cpp:1331
Partial instance of a template.
Definition: system.h:331
void setSyncUsed(int s)
Definition: system.h:571
expression_t exponentialRate
Definition: system.h:59
std::list< instance_t > instances
Definition: system.h:598
void setProcPriority(const char *name, int priority)
Sets process priority for process name.
Definition: system.cpp:1376
bool hasStopWatch() const
Returns true if the system stops any clock.
Definition: system.cpp:1408
bool hasUrgentTrans
Definition: system.h:580
int getProcPriority(const char *name) const
Returns process priority for process name.
Definition: system.cpp:1382
gantt_t(const std::string &s)
Definition: system.h:150
std::list< template_t > dynamicTemplates
Definition: system.h:594
frame_t templateset
Template set decls.
Definition: system.h:359
std::set< symbol_t > depends
Variables the function depends on.
Definition: system.h:113
Information about a message.
Definition: system.h:187
std::deque< condition_t > conditions
Conditions.
Definition: system.h:385
variable_t * addVariableToFunction(function_t *, frame_t, type_t, std::string, expression_t initital)
Definition: system.cpp:1144
Definition: position.h:72
virtual void visitGanttChart(gantt_t &)
Definition: system.h:465
void add(simregion_t s)
Definition: system.h:271
Definition: lexer.cc:585
std::deque< state_t > states
Locations.
Definition: system.h:360
expression_t label
The label.
Definition: system.h:219
TimedAutomataSystem()
Definition: system.cpp:921
int nr
Placement in input file.
Definition: system.h:202
int32_t bpNr
Definition: system.h:73
virtual void visitState(state_t &)
Definition: system.h:457
bool isInPrechart
Definition: system.h:206
Definition: system.h:263
int32_t instanceNr
InstanceLine number in template.
Definition: system.h:350
Gantt map bool expr -> int expr that can be expanded.
Definition: system.h:138
std::string location
Definition: system.h:617
symbol_t uid
The symbol of the variables.
Definition: system.h:44
Definition: system.h:438
std::pair< char, expression_t > entry
Definition: system.h:429
bool getUpdate(instanceLine_t *instance, int y, update_t *&simUpdate)
gets the update on the given instance at y location, returns false if there isn't any ...
Definition: system.cpp:627
void copyVariablesFromTo(template_t *from, template_t *to) const
Definition: system.cpp:1176
state_t & addLocation(std::string, expression_t inv, expression_t er)
Add another location to template.
Definition: system.cpp:291
int location
Definition: system.h:190
A reference to a frame.
Definition: symbols.h:183
std::string toString() const
Definition: system.cpp:59
virtual void visitSystemAfter(TimedAutomataSystem *)
Definition: system.h:453
std::vector< simregion_t > simregions
Definition: system.h:266
virtual void visitInstanceLine(instanceLine_t &)
Definition: system.h:466
std::string name
The name.
Definition: system.h:152
virtual ~TimedAutomataSystem()
Definition: system.cpp:950
std::list< ganttmap_t > mapping
Definition: system.h:154
expression_t guard
The guard.
Definition: system.h:94
Definition: system.h:127
void setModified(bool mod)
Definition: system.cpp:1486
instance_t & addLscInstance(std::string name, instance_t &instance, frame_t params, const std::vector< expression_t > &arguments)
Definition: system.cpp:1063
void clockGuardRecvBroadcast()
Definition: system.h:569
bool dynamic
Definition: system.h:389
size_t arguments
Definition: system.h:336
std::deque< branchpoint_t > branchpoints
Branchpoints.
Definition: system.h:361
Definition: statement.h:127
instance_t & addInstance(std::string name, instance_t &instance, frame_t params, const std::vector< expression_t > &arguments)
Definition: system.cpp:1039
Definition: system.h:121
virtual void visitMessage(message_t &)
Definition: system.h:467
bool hasDynamicTemplates() const
Definition: system.h:576
std::set< symbol_t > changes
Variables changed by this function.
Definition: system.h:112
update_t * update
May be empty.
Definition: system.h:229
std::list< expression_t > inputs
Definition: system.h:131
state_t * dst
Pointer to destination location.
Definition: system.h:91
std::vector< template_t * > & getDynamicTemplates()
Definition: system.cpp:1017
Channel priority information.
Definition: system.h:427
bool queriesEmpty()
Definition: system.cpp:1126
void erase(simregion_t s)
Definition: system.cpp:809
symbol_t init
The initial location.
Definition: system.h:358
std::list< variable_t > variables
Local variables.
Definition: system.h:114
int dynindex
Definition: system.h:390
int nr
Placement in input file.
Definition: system.h:86
std::string actname
Definition: system.h:88
expression_t afterUpdate
Definition: system.h:610
bool stopsClock
Definition: system.h:583
~function_t()
Definition: system.cpp:73
bool getCondition(instanceLine_t *instance, int y, condition_t *&simCondition)
gets the condition on the given instance, at y location, returns false if there isn't any ...
Definition: system.cpp:598
Information about a function.
Definition: system.h:109
symbol_t uid
The symbol of the function.
Definition: system.h:111
virtual bool visitTemplateBefore(template_t &)
Definition: system.h:455
const std::vector< error_t > & getErrors() const
Definition: system.cpp:1450
std::vector< expression_t > dynamicEvals
Definition: system.h:363
condition_t & addCondition(std::vector< symbol_t > anchors, int loc, bool pch, bool isHot)
Add condition to template.
Definition: system.cpp:402
virtual void visitIODecl(iodecl_t &)
Definition: system.h:463
Information about a location.
Definition: system.h:55
std::string type
Definition: system.h:386
bool modified
Definition: system.h:601
A reference to an expression.
Definition: expression.h:68
size_t unbound
Definition: system.h:337
std::list< expression_t > outputs
Definition: system.h:131
void addParameters(instance_t &inst, frame_t params, const std::vector< expression_t > &arguments)
Definition: system.cpp:662
void recordStopWatch()
Record that the system stops a clock.
Definition: system.cpp:1403
int nr
Definition: system.h:265
branchpoint_t * srcb
Pointer to source branchpoint.
Definition: system.h:90
expression_t label
The label.
Definition: system.h:193
Information about an edge.
Definition: system.h:84
std::string formula
Definition: system.h:439
bool isHot
Definition: system.h:207
std::deque< instanceLine_t > instances
Instance Lines.
Definition: system.h:382
virtual void visitTypeDef(symbol_t)
Definition: system.h:462
std::list< instance_t > lscInstances
Definition: system.h:600
Definition: system.h:162
cut_t(int number)
Definition: system.h:267
std::list< template_t > & getTemplates()
Returns the templates of the system.
Definition: system.cpp:955
std::vector< expression_t > & getDynamicEval()
Definition: system.h:371
bool isInPrechart() const
Definition: system.cpp:744
std::vector< simregion_t > getSimregions(const std::vector< simregion_t > &simregions)
return the simregions anchored to this instance, ordered by location number
Definition: system.cpp:681
bool isInPrechart
Definition: system.h:194
bool isModified() const
Definition: system.cpp:1481
bool hasPrechart
Definition: system.h:388
bool hasStrictInvariants() const
Returns true if system has some strict invariant.
Definition: system.cpp:1398
void accept(SystemVisitor &)
Definition: system.cpp:1241
expression_t expr
The initialiser.
Definition: system.h:45
expression_t getBeforeUpdate()
Definition: system.cpp:1336
std::list< instance_t > processes
Definition: system.h:604
int syncUsed
Definition: system.h:589
Base type for variables, clocks, etc.
Definition: system.h:42
virtual ~SystemVisitor()
Definition: system.h:451
std::string toString() const
Definition: system.cpp:66
instanceLine_t * anchor
Pointer to anchor instance line.
Definition: system.h:218
expression_t invariant
The invariant.
Definition: system.h:58
message_t & addMessage(symbol_t src, symbol_t dst, int loc, bool pch)
Add message to template.
Definition: system.cpp:378
expression_t guard
Definition: system.h:123
Definition: position.h:42
std::set< symbol_t > restricted
Restricted variables.
Definition: system.h:339
bool equals(const cut_t &y) const
Definition: system.cpp:868
bool isInvariant()
return true if the LSC is of invariant mode
Definition: system.cpp:894
void addProcess(instance_t &instance)
Definition: system.cpp:1100
expression_t label
The label.
Definition: system.h:205
std::string toString(bool global=false) const
The following methods are used to write the declarations in an XML file.
Definition: system.cpp:143
int location
Definition: system.h:217
symbol_t uid
The symbol of the location.
Definition: system.h:57
std::list< instance_t > & getProcesses()
Returns the processes of the system.
Definition: system.cpp:960
std::string location
Definition: system.h:441
bool isDefined
Definition: system.h:391
tail_t tail
Pairs: separator and channel expressions.
Definition: system.h:433
std::list< variable_t > variables
Variables.
Definition: system.h:165
bool hasClockGuardRecvBroadcast() const
Definition: system.h:570
void addGantt(declarations_t *, gantt_t &)
Definition: system.cpp:1117
virtual void visitSystemBefore(TimedAutomataSystem *)
Definition: system.h:452
virtual void visitCondition(condition_t &)
Definition: system.h:468
instanceLine_t * dst
Pointer to destination instance line.
Definition: system.h:192
virtual void visitUpdate(update_t &)
Definition: system.h:469
frame_t parameters
The parameters.
Definition: system.h:334
const Positions::line_t & findPosition(uint32_t position) const
Definition: system.cpp:1429
std::map< symbol_t, expression_t > mapping
The arguments.
Definition: system.h:335
Definition: system.h:255
bool operator()(const simregion_t &x, const simregion_t &y) const
Definition: system.h:257
bool hasUrgentTransition() const
Definition: system.h:575
function_t()
Definition: system.h:116
std::list< entry > tail_t
Definition: system.h:430
Information about an instance line.
Definition: system.h:348
int defaultChanPriority
Definition: system.h:586
bool hasStrictLowControlledGuards
Definition: system.h:584
bool hasPriorities
Definition: system.h:581
std::string getConstants() const
Definition: system.cpp:156
virtual void visitEdge(edge_t &)
Definition: system.h:458
std::map< std::string, int > procPriority
Definition: system.h:588
declarations_t & getGlobals()
Returns the global declarations of the system.
Definition: system.cpp:965
std::string obsTA
Definition: system.h:520
queries_t queries
Definition: system.h:611
A reference to a type.
Definition: type.h:92
bool contains(simregion_t s)
Definition: system.cpp:818
virtual void visitTemplateAfter(template_t &)
Definition: system.h:456
frame_t parameters
The select parameters.
Definition: system.h:153
void addPosition(uint32_t position, uint32_t offset, uint32_t line, std::string path)
Definition: system.cpp:1423
instanceLine_t * src
Pointer to source instance line.
Definition: system.h:191
condition_t()
Definition: system.h:208
void clearErrors()
Definition: system.cpp:1471
int nr
Placement in input file.
Definition: system.h:189
expression_t beforeUpdate
Definition: system.h:609
std::vector< instanceLine_t * > anchors
Pointer to anchor instance lines.
Definition: system.h:204
std::string writeParameters() const
Definition: system.cpp:254
edge_t & addEdge(symbol_t src, symbol_t dst, bool type, std::string actname)
Add edge to template.
Definition: system.cpp:329
expression_t assign
The assignment.
Definition: system.h:95
void removeProcess(instance_t &instance)
Definition: system.cpp:1087
message_t * message
Definition: system.h:227
update_t & addUpdate(symbol_t anchor, int loc, bool pch)
Add update to template.
Definition: system.cpp:391
Definition: system.h:448
void setMessage(std::deque< message_t > &messages, int nr)
Definition: system.cpp:761
instanceLine_t & addInstanceLine()
Add another instance line to template.
Definition: system.cpp:361
std::string toString() const
Definition: system.cpp:109
std::string toString() const
Definition: system.cpp:903
bool isInPrechart() const
Definition: system.cpp:855
state_t * src
Pointer to source location.
Definition: system.h:89
Gantt chart entry.
Definition: system.h:147
std::list< iodecl_t > iodecl
Definition: system.h:168
template_t & addDynamicTemplate(std::string, frame_t params)
Definition: system.cpp:998
expression_t sync
The synchronisation.
Definition: system.h:96
std::string toString() const
Definition: system.cpp:78
iodecl_t * addIODecl()
Definition: system.cpp:1491
void recordStrictLowerBoundOnControllableEdges()
Record that the system has guards on controllable edges with strict lower bounds. ...
Definition: system.cpp:1418
bool hasStrictInv
Definition: system.h:582
branchpoint_t * dstb
Pointer to destination branchpoint.
Definition: system.h:92
simregion_t()
Definition: system.h:234
bool hasGuardOnRecvBroadcast
Definition: system.h:585
void clearWarnings()
Definition: system.cpp:1476
variable_t * addVariable(declarations_t *, type_t type, std::string, expression_t initial)
symbol_t uid
Definition: system.h:72
virtual void visitInstance(instance_t &)
Definition: system.h:459
Definition: system.h:472
A container for information about lines and positions in the input file.
Definition: position.h:69
struct template_t * templ
Definition: system.h:338
expression_t getAfterUpdate()
Definition: system.cpp:1346
Information about an update.
Definition: system.h:214
std::list< template_t > templates
Definition: system.h:592
const std::vector< simregion_t > getSimregions()
returns the simregions of an LSC scenario.
Definition: system.cpp:464
void copyFunctionsFromTo(template_t *from, template_t *to) const
Definition: system.cpp:1186
std::list< chan_priority_t > chanPriorities
Definition: system.h:587
void beginChanPriority(expression_t chan)
Definition: system.cpp:1351
gantt_t(const char *s)
Definition: system.h:149
std::string getTypeDefinitions() const
Definition: system.cpp:181
static vector< string > variables
Definition: tracer.cpp:139
std::string writeArguments() const
Definition: system.cpp:269
void addQuery(const query_t &query)
Definition: system.cpp:1122
virtual void visitFunction(function_t &)
Definition: system.h:461
expression_t predicate
Definition: system.h:141
~simregion_t()
Definition: system.h:241
void setUrgentTransition()
Definition: system.h:574
void addError(position_t, std::string, std::string location="")
Definition: system.cpp:1434
int addDynamicEval(expression_t t)
Definition: system.h:366
std::list< expression_t > csp
Definition: system.h:131
std::string writeMapping() const
Definition: system.cpp:243
void addWarning(position_t, std::string)
Definition: system.cpp:1442