Mungojerrie  1.1
Mungojerrie
Past.hh
Go to the documentation of this file.
1 #ifndef P_AST_HH_
2 #define P_AST_HH_
3 
47 namespace ast {
48 
49  enum ModelType { MDP, DTMC, SMG, BDP };
50 
51  struct LocationType {
52  int first_line;
53  int first_column;
54  int last_line;
55  int last_column;
56  };
57 
58  enum Operator {
59  PLUS, UNARYMINUS, MINUS, TIMES, DIVIDE, ITE, NUMERAL, IDENTIFIER, MIN, MAX,
60  MOD, POW, LOG, CEIL, FLOOR, TRUE, FALSE, OR, AND, XOR, IFF, IMPLIES, NOT,
61  EQUAL, NOTEQ, LE, LT, GE, GT
62  };
63 
64  std::ostream & operator<<(std::ostream & os, Operator const & op);
65  std::string to_string(Operator const & op);
66 
67  enum DataType {
68  DOUBLE, NUMBER, BOOL
69  };
70 
71  struct Expression {
72  DataType type;
73  Operator op;
74  std::vector<Expression> operands;
75  std::string identifier;
76  int inumeral;
77  double dnumeral;
78  LocationType location;
79  };
80 
81  std::ostream & operator<<(std::ostream & os, Expression const & ie);
82 
83  struct Variable {
84  DataType type;
85  std::string name;
86  Expression low;
87  Expression high;
88  Expression initial;
89  };
90 
91  std::ostream & operator<<(std::ostream & os, Variable const & v);
92 
93  struct Formula {
94  std::string name;
95  Expression expression;
96  };
97 
98  std::ostream & operator<<(std::ostream & os, Formula const & f);
99 
100  struct Label {
101  std::string name;
102  Expression expression;
103  };
104 
105  std::ostream & operator<<(std::ostream & os, Label const & l);
106 
107  struct Constant {
108  DataType type;
109  std::string name;
110  Expression expression;
111  };
112 
113  std::ostream & operator<<(std::ostream & os, Constant const & c);
114 
115  struct Transition {
116  Expression probability;
117  Expression destination;
118  };
119 
120  std::ostream & operator<<(std::ostream & os, Transition const & t);
121 
122  struct Command {
123  std::string action;
124  Expression guard;
125  std::vector<Transition> transitions;
126  };
127 
128  std::ostream & operator<<(std::ostream & os, Command const & c);
129 
130  struct Module {
131  std::string name;
132  std::vector<Variable> variables;
133  std::vector<Command> commands;
134  };
135 
136  std::ostream & operator<<(std::ostream & os, Module const & m);
137 
139  std::string oldname;
140  std::string newname;
141  };
142 
143  std::ostream & operator<<(std::ostream & os, NameReplacement const & m);
144 
145  struct ModuleRenaming {
146  std::string newname;
147  std::string oldname;
148  std::vector<NameReplacement> replacements;
149  LocationType location;
150  };
151 
152  std::ostream & operator<<(std::ostream & os, ModuleRenaming const & m);
153 
154  enum RewardType { STATE, ACTION };
155 
156  struct RewardSpec {
157  RewardType type;
158  std::string name;
159  Expression guard;
160  Expression reward;
161  };
162 
163  std::ostream & operator<<(std::ostream & os, RewardSpec const & rs);
164 
165  struct RewardSection {
166  std::string name;
167  std::vector<RewardSpec> specs;
168  };
169 
170  std::ostream & operator<<(std::ostream & os, RewardSection const & rv);
171 
172  enum ControlType { PMODULE, PACTION };
173 
174  struct ControlSpec {
175  ControlType type;
176  std::string name;
177  };
178 
179  std::ostream & operator<<(std::ostream & os, ControlSpec const & cs);
180 
181  struct Player {
182  std::string name;
183  std::vector<ControlSpec> controls;
184  LocationType location;
185  };
186 
187  std::ostream & operator<<(std::ostream & os, Player const & p);
188 }
189 
190 #endif
ast::Transition
Definition: Past.hh:115
ast::Player
Definition: Past.hh:181
ast::Command
Definition: Past.hh:122
ast::LocationType
Definition: Past.hh:51
ast::RewardSection
Definition: Past.hh:165
ast::Formula
Definition: Past.hh:93
ast::Variable
Definition: Past.hh:83
ast::Constant
Definition: Past.hh:107
ast::Module
Definition: Past.hh:130
ast::Label
Definition: Past.hh:100
ast::Expression
Definition: Past.hh:71
ast::NameReplacement
Definition: Past.hh:138
ast
Namespace of abstract syntax tree components.
Definition: Past.hh:47
ast::ModuleRenaming
Definition: Past.hh:145
ast::RewardSpec
Definition: Past.hh:156
ast::ControlSpec
Definition: Past.hh:174