libutap
prettyprinter.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_PRETTYPRINTER_H
23 #define UTAP_PRETTYPRINTER_H
24 
25 #include <string>
26 #include <vector>
27 #include <ostream>
28 #include <stack>
29 #include "utap/abstractbuilder.h"
30 
31 namespace UTAP
32 {
33 
35  {
36  private:
37  std::vector<std::string> st;
38  std::stack<std::string> type;
39  std::stack<std::string> array;
40  std::vector<std::string> fields;
41  std::stack<std::ostream *> o;
42  std::set<std::string> types;
43  std::string urgent;
44  std::string committed;
45  std::string param;
46  std::string templateset;
47  int select, guard, sync, update;
48 
49  bool first;
50  uint32_t level;
51 
52  void indent();
53  void indent(std::string &s);
54 
55  public:
56  PrettyPrinter(std::ostream &stream);
57 
58  virtual void addPosition(
59  uint32_t position, uint32_t offset, uint32_t line, std::string path);
60 
61  virtual void handleError(std::string);
62  virtual void handleWarning(std::string);
63 
64  virtual bool isType(const char *);
65  virtual void typeBool(PREFIX);
66  virtual void typeInt(PREFIX);
67  virtual void typeDouble(PREFIX);
68  virtual void typeBoundedInt(PREFIX);
69  virtual void typeChannel(PREFIX);
70  virtual void typeClock();
71  virtual void typeClock(PREFIX);
72  virtual void typeVoid();
73  virtual void typeScalar(PREFIX);
74  virtual void typeName(PREFIX, const char *type);
75  virtual void typePop();
76  virtual void typeDuplicate();
77  virtual void typeArrayOfSize(size_t n);
78  virtual void typeArrayOfType(size_t n);
79  virtual void typeStruct(PREFIX prefix, uint32_t n);
80  virtual void structField(const char* name);
81  virtual void declTypeDef(const char* name);
82  virtual void declVar(const char *id, bool init);
83  virtual void declInitialiserList(uint32_t num);
84  virtual void declFieldInit(const char* name);
85  virtual void declParameter(const char* name, bool);
86  virtual void declFuncBegin(const char* name);
87  virtual void declFuncEnd();
88  virtual void blockBegin();
89  virtual void blockEnd();
90  virtual void emptyStatement();
91  virtual void forBegin();
92  virtual void forEnd();
93  virtual void iterationBegin(const char *name); // 1 id, 1 type
94  virtual void iterationEnd(const char *name); // 1 stat
95  virtual void whileBegin();
96  virtual void whileEnd();
97  virtual void doWhileBegin();
98  virtual void doWhileEnd();
99  virtual void ifBegin();
100  virtual void ifElse();
101  virtual void ifEnd(bool);
102  virtual void breakStatement();
103  virtual void continueStatement();
104  virtual void exprStatement();
105  virtual void returnStatement(bool hasValue);
106  virtual void procBegin(const char* name, const bool isTA = true,
107  const std::string type = "", const std::string mode = "");
108  virtual void procState(const char *id, bool hasInvariant);
109  virtual void procState(const char *id, bool hasInvariant, bool hasExpRate);
110  virtual void procStateUrgent(const char *id);
111  virtual void procStateCommit(const char *id);
112  virtual void procStateInit(const char *id);
113  virtual void procSelect(const char *id);
114  virtual void procGuard();
115  virtual void procSync(Constants::synchronisation_t type);
116  virtual void procUpdate();
117  virtual void procEdgeBegin(const char *source, const char *target, const bool control);
118  virtual void procEdgeBegin(const char *source, const char *target, const bool control, const char* actname);
119  virtual void procEdgeEnd(const char *source, const char *target);
120  virtual void procEnd();
121  virtual void exprId(const char *id);
122  virtual void exprNat(int32_t n);
123  virtual void exprTrue();
124  virtual void exprFalse();
125  virtual void exprCallBegin();
126  virtual void exprCallEnd(uint32_t n);
127  virtual void exprArray();
128  virtual void exprPostIncrement();
129  virtual void exprPreIncrement();
130  virtual void exprPostDecrement();
131  virtual void exprPreDecrement();
132  virtual void exprAssignment(Constants::kind_t op);
133  virtual void exprUnary(Constants::kind_t op);
134  virtual void exprBinary(Constants::kind_t op);
135  virtual void exprNary(Constants::kind_t op, uint32_t num);
136  virtual void exprScenario(const char* name);
137  virtual void exprTernary(Constants::kind_t op);
138  virtual void exprInlineIf();
139  virtual void exprComma();
140  virtual void exprDot(const char *);
141  virtual void exprDeadlock();
142  virtual void exprForAllBegin(const char *name);
143  virtual void exprForAllEnd(const char *name);
144  virtual void exprExistsBegin(const char *name);
145  virtual void exprExistsEnd(const char *name);
146  virtual void exprSumBegin(const char *name);
147  virtual void exprSumEnd(const char *name);
148  virtual void exprProba(bool,int,double,int);
149  virtual void exprProba2(bool,int);
150  virtual void exprProbaQuantitative(int,Constants::kind_t,bool);
151  virtual void exprMitlDiamond (int,int);
152  virtual void exprMitlBox (int,int);
153  virtual void exprSimulate(int,int,int,bool,int);
154  virtual void beforeUpdate();
155  virtual void afterUpdate();
156  virtual void instantiationBegin(const char *, size_t, const char *);
157  virtual void instantiationEnd(const char *, size_t, const char *, size_t);
158  virtual void process(const char *id);
159  virtual void processListEnd();
160  virtual void done();
161 
163  virtual void queryBegin();
164  virtual void queryFormula(const char*);
165  virtual void queryComment(const char*);
166  virtual void queryEnd();
167  };
168 }
169 
170 #endif
position_t position
Definition: abstractbuilder.h:48
virtual void typeClock()
Definition: prettyprinter.cpp:146
virtual void structField(const char *name)
Called to declare a field of a structure.
Definition: prettyprinter.cpp:207
Definition: prettyprinter.h:34
virtual void whileEnd()
Definition: prettyprinter.cpp:426
virtual void queryComment(const char *)
Definition: prettyprinter.cpp:1284
virtual void exprForAllEnd(const char *name)
Definition: prettyprinter.cpp:1078
virtual void procStateUrgent(const char *id)
Definition: prettyprinter.cpp:587
virtual void declParameter(const char *name, bool)
Definition: prettyprinter.cpp:321
virtual void queryEnd()
Definition: prettyprinter.cpp:1287
virtual void procStateInit(const char *id)
Definition: prettyprinter.cpp:613
virtual void exprUnary(Constants::kind_t op)
Definition: prettyprinter.cpp:883
virtual void exprPreDecrement()
Definition: prettyprinter.cpp:832
virtual void exprSimulate(int, int, int, bool, int)
Definition: prettyprinter.cpp:1239
virtual void declFuncBegin(const char *name)
Definition: prettyprinter.cpp:344
virtual void blockEnd()
Definition: prettyprinter.cpp:370
virtual void iterationEnd(const char *name)
Definition: prettyprinter.cpp:392
virtual void exprScenario(const char *name)
Definition: prettyprinter.cpp:276
virtual void doWhileEnd()
Definition: prettyprinter.cpp:445
virtual void procEnd()
Definition: prettyprinter.cpp:756
virtual void typeBoundedInt(PREFIX)
Called whenever an integer type with a range is parsed.
Definition: prettyprinter.cpp:127
PrettyPrinter(std::ostream &stream)
Definition: prettyprinter.cpp:62
PREFIX
Definition: builder.h:85
virtual void exprMitlBox(int, int)
Definition: prettyprinter.cpp:1230
virtual void declFuncEnd()
Definition: prettyprinter.cpp:355
virtual void returnStatement(bool hasValue)
Definition: prettyprinter.cpp:505
virtual void procEdgeBegin(const char *source, const char *target, const bool control)
Definition: prettyprinter.cpp:678
virtual void doWhileBegin()
Definition: prettyprinter.cpp:440
virtual void procState(const char *id, bool hasInvariant)
Definition: prettyprinter.cpp:532
virtual void declVar(const char *id, bool init)
Called to when a variable declaration has been parsed.
Definition: prettyprinter.cpp:236
virtual void exprComma()
Definition: prettyprinter.cpp:1053
virtual void typeDouble(PREFIX)
Called whenever a double type is parsed.
Definition: prettyprinter.cpp:119
virtual void exprCallBegin()
Definition: prettyprinter.cpp:790
virtual bool isType(const char *)
Must return true if and only if name is registered in the symbol table as a named type...
Definition: prettyprinter.cpp:88
Definition: lexer.cc:585
virtual void queryBegin()
Verification queries.
Definition: prettyprinter.cpp:1278
virtual void exprTernary(Constants::kind_t op)
Definition: prettyprinter.cpp:1023
virtual void typeVoid()
Called whenever a void type is parsed.
Definition: prettyprinter.cpp:156
virtual void exprDeadlock()
Definition: prettyprinter.cpp:1067
virtual void exprProba(bool, int, double, int)
Definition: prettyprinter.cpp:1182
kind_t
Definition: common.h:37
virtual void exprPostIncrement()
Definition: prettyprinter.cpp:817
virtual void instantiationBegin(const char *, size_t, const char *)
Definition: prettyprinter.cpp:1131
virtual void exprSumEnd(const char *name)
Definition: prettyprinter.cpp:1104
virtual void exprCallEnd(uint32_t n)
Definition: prettyprinter.cpp:795
virtual void ifEnd(bool)
Definition: prettyprinter.cpp:461
virtual void done()
Definition: prettyprinter.cpp:1178
synchronisation_t
Definition: common.h:263
virtual void emptyStatement()
Definition: prettyprinter.cpp:378
virtual void declFieldInit(const char *name)
Definition: prettyprinter.cpp:313
virtual void typeChannel(PREFIX)
Called whenever a channel type is parsed.
Definition: prettyprinter.cpp:141
virtual void typeName(PREFIX, const char *type)
Called when a type name has been parsed.
Definition: prettyprinter.cpp:171
virtual void breakStatement()
Definition: prettyprinter.cpp:486
virtual void exprSumBegin(const char *name)
Definition: prettyprinter.cpp:1098
virtual void handleError(std::string)
Definition: prettyprinter.cpp:77
virtual void exprForAllBegin(const char *name)
Definition: prettyprinter.cpp:1072
virtual void exprNat(int32_t n)
Definition: prettyprinter.cpp:773
virtual void beforeUpdate()
Definition: prettyprinter.cpp:1111
virtual void exprProbaQuantitative(int, Constants::kind_t, bool)
Definition: prettyprinter.cpp:1204
virtual void queryFormula(const char *)
Definition: prettyprinter.cpp:1281
virtual void procSync(Constants::synchronisation_t type)
Definition: prettyprinter.cpp:656
Definition: abstractbuilder.h:45
virtual void typeArrayOfType(size_t n)
Called to create an array type.
Definition: prettyprinter.cpp:185
virtual void declInitialiserList(uint32_t num)
Definition: prettyprinter.cpp:264
virtual void procBegin(const char *name, const bool isTA=true, const std::string type="", const std::string mode="")
Definition: prettyprinter.cpp:519
virtual void exprId(const char *id)
Definition: prettyprinter.cpp:768
virtual void exprInlineIf()
Definition: prettyprinter.cpp:1043
virtual void forEnd()
Definition: prettyprinter.cpp:404
virtual void iterationBegin(const char *name)
Definition: prettyprinter.cpp:384
virtual void whileBegin()
Definition: prettyprinter.cpp:420
virtual void exprProba2(bool, int)
Definition: prettyprinter.cpp:1193
virtual void exprExistsBegin(const char *name)
Definition: prettyprinter.cpp:1085
virtual void exprNary(Constants::kind_t op, uint32_t num)
Definition: prettyprinter.cpp:283
virtual void exprPostDecrement()
Definition: prettyprinter.cpp:827
virtual void typeBool(PREFIX)
Called whenever a boolean type is parsed.
Definition: prettyprinter.cpp:103
virtual void exprTrue()
Definition: prettyprinter.cpp:780
virtual void addPosition(uint32_t position, uint32_t offset, uint32_t line, std::string path)
Add mapping from an absolute position to a relative XML element.
Definition: prettyprinter.cpp:71
virtual void blockBegin()
Definition: prettyprinter.cpp:362
virtual void ifBegin()
Definition: prettyprinter.cpp:450
virtual void exprArray()
Definition: prettyprinter.cpp:810
virtual void procSelect(const char *id)
Definition: prettyprinter.cpp:636
virtual void exprMitlDiamond(int, int)
Definition: prettyprinter.cpp:1221
virtual void procUpdate()
Definition: prettyprinter.cpp:673
virtual void process(const char *id)
Definition: prettyprinter.cpp:1159
virtual void typeInt(PREFIX)
Called whenever an integer type is parsed.
Definition: prettyprinter.cpp:111
virtual void procGuard()
Definition: prettyprinter.cpp:651
virtual void instantiationEnd(const char *, size_t, const char *, size_t)
Definition: prettyprinter.cpp:1136
virtual void procEdgeEnd(const char *source, const char *target)
Definition: prettyprinter.cpp:711
virtual void forBegin()
Definition: prettyprinter.cpp:398
virtual void exprAssignment(Constants::kind_t op)
Definition: prettyprinter.cpp:837
virtual void ifElse()
Definition: prettyprinter.cpp:456
virtual void handleWarning(std::string)
Definition: prettyprinter.cpp:82
virtual void typePop()
Pop type at the topof the type stack.
Definition: prettyprinter.cpp:98
virtual void typeStruct(PREFIX prefix, uint32_t n)
Called when a struct-type has been parsed.
Definition: prettyprinter.cpp:190
virtual void exprDot(const char *)
Definition: prettyprinter.cpp:1062
virtual void declTypeDef(const char *name)
Used when a typedef declaration was parsed.
Definition: prettyprinter.cpp:219
virtual void exprExistsEnd(const char *name)
Definition: prettyprinter.cpp:1091
virtual void exprBinary(Constants::kind_t op)
Definition: prettyprinter.cpp:925
virtual void exprPreIncrement()
Definition: prettyprinter.cpp:822
virtual void exprStatement()
Definition: prettyprinter.cpp:498
virtual void typeScalar(PREFIX)
Called whenever a scalar type is parsed.
Definition: prettyprinter.cpp:161
virtual void typeDuplicate()
Duplicate type at the top of the type stack.
Definition: prettyprinter.cpp:93
virtual void continueStatement()
Definition: prettyprinter.cpp:492
virtual void afterUpdate()
Definition: prettyprinter.cpp:1121
virtual void processListEnd()
Definition: prettyprinter.cpp:1172
virtual void procStateCommit(const char *id)
Definition: prettyprinter.cpp:600
virtual void typeArrayOfSize(size_t n)
Called to create an array type.
Definition: prettyprinter.cpp:179
virtual void exprFalse()
Definition: prettyprinter.cpp:785