CBMC
expr2c_class.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_ANSI_C_EXPR2C_CLASS_H
11 #define CPROVER_ANSI_C_EXPR2C_CLASS_H
12 
13 #include "expr2c.h"
14 
15 #include <string>
16 #include <unordered_map>
17 #include <unordered_set>
18 
20 
21 #include <util/bitvector_expr.h>
22 #include <util/byte_operators.h>
23 #include <util/mathematical_expr.h>
24 #include <util/std_code.h>
25 
27 class c_qualifierst;
28 class namespacet;
29 class r_or_w_ok_exprt;
33 
34 class expr2ct
35 {
36 public:
37  explicit expr2ct(
38  const namespacet &_ns,
42  {
43  }
44  virtual ~expr2ct() { }
45 
46  virtual std::string convert(const typet &src);
47  virtual std::string convert(const exprt &src);
48 
49  void get_shorthands(const exprt &expr);
50 
51  std::string
52  convert_with_identifier(const typet &src, const std::string &identifier);
53 
54 protected:
55  const namespacet &ns;
57 
58  virtual std::string convert_rec(
59  const typet &src,
60  const c_qualifierst &qualifiers,
61  const std::string &declarator);
62 
63  virtual std::string convert_struct_type(
64  const typet &src,
65  const std::string &qualifiers_str,
66  const std::string &declarator_str);
67 
68  std::string convert_struct_type(
69  const typet &src,
70  const std::string &qualifer_str,
71  const std::string &declarator_str,
72  bool inc_struct_body,
73  bool inc_padding_components);
74 
75  virtual std::string convert_array_type(
76  const typet &src,
77  const c_qualifierst &qualifiers,
78  const std::string &declarator_str);
79 
80  std::string convert_array_type(
81  const typet &src,
82  const c_qualifierst &qualifiers,
83  const std::string &declarator_str,
84  bool inc_size_if_possible);
85 
86  static std::string indent_str(unsigned indent);
87 
88  std::unordered_map<irep_idt, std::unordered_set<irep_idt>> ns_collision;
89  std::unordered_map<irep_idt, irep_idt> shorthands;
90 
91  unsigned sizeof_nesting;
92 
93  irep_idt id_shorthand(const irep_idt &identifier) const;
94 
95  std::string convert_typecast(
96  const typecast_exprt &src, unsigned &precedence);
97 
98  std::string convert_pointer_arithmetic(
99  const exprt &src,
100  unsigned &precedence);
101 
102  std::string convert_pointer_difference(
103  const exprt &src,
104  unsigned &precedence);
105 
106  std::string convert_binary(
107  const binary_exprt &,
108  const std::string &symbol,
109  unsigned precedence,
110  bool full_parentheses);
111 
112  std::string convert_multi_ary(
113  const exprt &src, const std::string &symbol,
114  unsigned precedence, bool full_parentheses);
115 
116  std::string convert_cond(
117  const exprt &src, unsigned precedence);
118 
119  std::string convert_struct_member_value(
120  const exprt &src, unsigned precedence);
121 
122  std::string convert_array_member_value(
123  const exprt &src, unsigned precedence);
124 
125  std::string convert_member(
126  const member_exprt &src, unsigned precedence);
127 
128  std::string convert_array_of(const exprt &src, unsigned precedence);
129 
130  std::string convert_trinary(
131  const ternary_exprt &src,
132  const std::string &symbol1,
133  const std::string &symbol2,
134  unsigned precedence);
135 
143  std::string convert_rox(const shift_exprt &src, unsigned precedence);
144 
145  std::string convert_overflow(
146  const exprt &src, unsigned &precedence);
147 
148  std::string convert_binding(
149  const binding_exprt &,
150  const std::string &symbol,
151  unsigned precedence);
152 
153  std::string convert_with(
154  const exprt &src, unsigned precedence);
155 
156  std::string convert_update(const update_exprt &, unsigned precedence);
157 
158  std::string convert_member_designator(
159  const exprt &src);
160 
161  std::string convert_index_designator(
162  const exprt &src);
163 
164  std::string convert_index(const binary_exprt &, unsigned precedence);
165 
166  std::string
167  convert_byte_extract(const byte_extract_exprt &, unsigned precedence);
168 
169  std::string
170  convert_byte_update(const byte_update_exprt &, unsigned precedence);
171 
172  std::string convert_extractbit(const extractbit_exprt &, unsigned precedence);
173 
174  std::string
175  convert_extractbits(const extractbits_exprt &src, unsigned precedence);
176 
177  std::string convert_unary(
178  const unary_exprt &,
179  const std::string &symbol,
180  unsigned precedence);
181 
182  std::string convert_unary_post(
183  const exprt &src, const std::string &symbol,
184  unsigned precedence);
185 
188  std::optional<std::string> convert_function(const exprt &src);
189  std::string convert_function(const exprt &src, const std::string &symbol);
190 
191  std::string convert_complex(
192  const exprt &src,
193  unsigned precedence);
194 
195  std::string convert_comma(
196  const exprt &src,
197  unsigned precedence);
198 
199  std::string convert_Hoare(const exprt &src);
200 
201  std::string convert_code(const codet &src);
202  virtual std::string convert_code(const codet &src, unsigned indent);
203  std::string convert_code_label(const code_labelt &src, unsigned indent);
204  // NOLINTNEXTLINE(whitespace/line_length)
205  std::string convert_code_switch_case(const code_switch_caset &src, unsigned indent);
206  std::string convert_code_asm(const code_asmt &src, unsigned indent);
207  std::string
208  convert_code_frontend_assign(const code_frontend_assignt &, unsigned indent);
209  // NOLINTNEXTLINE(whitespace/line_length)
210  std::string convert_code_ifthenelse(const code_ifthenelset &src, unsigned indent);
211  std::string convert_code_for(const code_fort &src, unsigned indent);
212  std::string convert_code_while(const code_whilet &src, unsigned indent);
213  std::string convert_code_dowhile(const code_dowhilet &src, unsigned indent);
214  std::string convert_code_block(const code_blockt &src, unsigned indent);
215  std::string convert_code_expression(const codet &src, unsigned indent);
216  std::string convert_code_return(const codet &src, unsigned indent);
217  std::string convert_code_goto(const codet &src, unsigned indent);
218  std::string convert_code_assume(const codet &src, unsigned indent);
219  std::string convert_code_assert(const codet &src, unsigned indent);
220  std::string convert_code_break(unsigned indent);
221  std::string convert_code_switch(const codet &src, unsigned indent);
222  std::string convert_code_continue(unsigned indent);
223  std::string convert_code_frontend_decl(const codet &, unsigned indent);
224  std::string convert_code_decl_block(const codet &src, unsigned indent);
225  std::string convert_code_dead(const codet &src, unsigned indent);
226  // NOLINTNEXTLINE(whitespace/line_length)
227  std::string convert_code_function_call(const code_function_callt &src, unsigned indent);
228  std::string convert_code_lock(const codet &src, unsigned indent);
229  std::string convert_code_unlock(const codet &src, unsigned indent);
230  std::string convert_code_printf(const codet &src, unsigned indent);
231  std::string convert_code_fence(const codet &src, unsigned indent);
232  std::string convert_code_input(const codet &src, unsigned indent);
233  std::string convert_code_output(const codet &src, unsigned indent);
234  std::string convert_code_array_set(const codet &src, unsigned indent);
235  std::string convert_code_array_copy(const codet &src, unsigned indent);
236  std::string convert_code_array_replace(const codet &src, unsigned indent);
237 
238  virtual std::string convert_with_precedence(
239  const exprt &src, unsigned &precedence);
240 
241  std::string
245  std::string convert_allocate(const exprt &src, unsigned &precedence);
246  std::string convert_nondet(const exprt &src, unsigned &precedence);
247  std::string convert_prob_coin(const exprt &src, unsigned &precedence);
248  std::string convert_prob_uniform(const exprt &src, unsigned &precedence);
249  // NOLINTNEXTLINE(whitespace/line_length)
250  std::string convert_statement_expression(const exprt &src, unsigned &precendence);
251 
252  virtual std::string convert_symbol(const exprt &src);
253  std::string convert_predicate_symbol(const exprt &src);
254  std::string convert_predicate_next_symbol(const exprt &src);
255  std::string convert_predicate_passive_symbol(const exprt &src);
256  std::string convert_nondet_symbol(const nondet_symbol_exprt &);
257  std::string convert_quantified_symbol(const exprt &src);
258  std::string convert_nondet_bool();
259  std::string convert_object_descriptor(const exprt &src, unsigned &precedence);
260  std::string convert_literal(const exprt &src);
261  // NOLINTNEXTLINE(whitespace/line_length)
262  virtual std::string convert_constant(const constant_exprt &src, unsigned &precedence);
263  virtual std::string convert_constant_bool(bool boolean_value);
264  virtual std::string convert_annotated_pointer_constant(
266  unsigned &precedence);
267 
268  std::string convert_norep(const exprt &src, unsigned &precedence);
269 
270  virtual std::string convert_struct(const exprt &src, unsigned &precedence);
271  std::string convert_union(const exprt &src, unsigned &precedence);
272  std::string convert_vector(const exprt &src, unsigned &precedence);
273  std::string convert_array(const exprt &src);
274  std::string convert_array_list(const exprt &src, unsigned &precedence);
275  std::string convert_initializer_list(const exprt &src);
276  std::string convert_designated_initializer(const exprt &src);
277  std::string convert_concatenation(const exprt &src, unsigned &precedence);
278  std::string convert_sizeof(const exprt &src, unsigned &precedence);
279  std::string convert_let(const let_exprt &, unsigned precedence);
280 
281  std::string convert_struct(
282  const exprt &src,
283  unsigned &precedence,
284  bool include_padding_components);
285 
286  std::string convert_conditional_target_group(const exprt &src);
287  std::string convert_bitreverse(const bitreverse_exprt &src);
288 
289  std::string convert_r_or_w_ok(const r_or_w_ok_exprt &src);
291  std::string convert_pointer_in_range(const pointer_in_range_exprt &src);
292  std::string
294 };
295 
296 #endif // CPROVER_ANSI_C_EXPR2C_CLASS_H
API to expression classes for bitvectors.
Expression classes for byte-level operators.
Pointer-typed bitvector constant annotated with the pointer expression that the bitvector is the nume...
A base class for binary expressions.
Definition: std_expr.h:638
A base class for variable bindings (quantifiers, let, lambda)
Definition: std_expr.h:3117
Reverse the order of bits in a bit-vector.
Expression of type type extracted from some object op starting at position offset (given in number of...
Expression corresponding to op() where the bytes starting at position offset (given in number of byte...
codet representation of an inline assembler statement.
Definition: std_code.h:1253
A codet representing sequential composition of program statements.
Definition: std_code.h:130
codet representation of a do while statement.
Definition: std_code.h:672
codet representation of a for statement.
Definition: std_code.h:734
A codet representing an assignment in the program.
Definition: std_code.h:24
goto_instruction_codet representation of a function call statement.
codet representation of an if-then-else statement.
Definition: std_code.h:460
codet representation of a label for branch targets.
Definition: std_code.h:959
codet representation of a switch-case, i.e. a case statement within a switch.
Definition: std_code.h:1023
codet representing a while statement.
Definition: std_code.h:610
Data structure for representing an arbitrary statement in a program.
Definition: std_code_base.h:29
A constant literal expression.
Definition: std_expr.h:3000
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:38
std::optional< std::string > convert_function(const exprt &src)
Returns a string if src is a function with a known conversion, else returns nullopt.
Definition: expr2c.cpp:4080
std::string convert_nondet(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1169
std::string convert_literal(const exprt &src)
Definition: expr2c.cpp:1204
std::string convert_code_continue(unsigned indent)
Definition: expr2c.cpp:2807
std::string convert_code_switch_case(const code_switch_caset &src, unsigned indent)
Definition: expr2c.cpp:3403
std::string convert_typecast(const typecast_exprt &src, unsigned &precedence)
Definition: expr2c.cpp:752
std::string convert_comma(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:1241
std::string convert_code_assert(const codet &src, unsigned indent)
Definition: expr2c.cpp:3358
std::string convert_union(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:2174
virtual std::string convert_rec(const typet &src, const c_qualifierst &qualifiers, const std::string &declarator)
Definition: expr2c.cpp:218
std::string convert_code_expression(const codet &src, unsigned indent)
Definition: expr2c.cpp:2949
std::string convert_code_goto(const codet &src, unsigned indent)
Definition: expr2c.cpp:2743
std::string convert_code_switch(const codet &src, unsigned indent)
Definition: expr2c.cpp:2764
std::string convert_pointer_in_range(const pointer_in_range_exprt &src)
Definition: expr2c.cpp:3607
std::string convert_initializer_list(const exprt &src)
Definition: expr2c.cpp:2330
std::string convert_quantified_symbol(const exprt &src)
Definition: expr2c.cpp:1690
std::string convert_binding(const binding_exprt &, const std::string &symbol, unsigned precedence)
Definition: expr2c.cpp:833
std::string convert_function_application(const function_application_exprt &src)
Definition: expr2c.cpp:2459
std::string convert_code_unlock(const codet &src, unsigned indent)
Definition: expr2c.cpp:3137
std::string convert_code_decl_block(const codet &src, unsigned indent)
Definition: expr2c.cpp:2934
static std::string indent_str(unsigned indent)
Definition: expr2c.cpp:2547
std::string convert_byte_update(const byte_update_exprt &, unsigned precedence)
Definition: expr2c.cpp:1351
std::string convert_code(const codet &src)
Definition: expr2c.cpp:3433
std::string convert_pointer_arithmetic(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1417
std::string convert_let(const let_exprt &, unsigned precedence)
Definition: expr2c.cpp:922
std::string convert_nondet_bool()
Definition: expr2c.cpp:1696
std::string convert_norep(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1615
const expr2c_configurationt & configuration
Definition: expr2c_class.h:56
std::unordered_map< irep_idt, std::unordered_set< irep_idt > > ns_collision
Definition: expr2c_class.h:88
std::string convert_code_output(const codet &src, unsigned indent)
Definition: expr2c.cpp:3272
std::string convert_code_while(const code_whilet &src, unsigned indent)
Definition: expr2c.cpp:2630
std::string convert_index_designator(const exprt &src)
Definition: expr2c.cpp:1503
std::string convert_code_frontend_decl(const codet &, unsigned indent)
Definition: expr2c.cpp:2817
std::string convert_pointer_difference(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1454
std::string convert_code_block(const code_blockt &src, unsigned indent)
Definition: expr2c.cpp:2911
std::string convert_code_asm(const code_asmt &src, unsigned indent)
Definition: expr2c.cpp:2552
std::string convert_prophecy_pointer_in_range(const prophecy_pointer_in_range_exprt &src)
Definition: expr2c.cpp:3625
std::string convert_allocate(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1141
std::string convert_Hoare(const exprt &src)
Definition: expr2c.cpp:3438
std::string convert_sizeof(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:3514
std::string convert_code_lock(const codet &src, unsigned indent)
Definition: expr2c.cpp:3124
std::string convert_r_or_w_ok(const r_or_w_ok_exprt &src)
Definition: expr2c.cpp:3569
std::string convert_code_dowhile(const code_dowhilet &src, unsigned indent)
Definition: expr2c.cpp:2656
irep_idt id_shorthand(const irep_idt &identifier) const
Definition: expr2c.cpp:75
std::string convert_cond(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:987
std::string convert_side_effect_expr_function_call(const side_effect_expr_function_callt &src)
Definition: expr2c.cpp:2487
std::string convert_overflow(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:2516
std::string convert_member(const member_exprt &src, unsigned precedence)
Definition: expr2c.cpp:1513
void get_shorthands(const exprt &expr)
Definition: expr2c.cpp:116
std::string convert_code_for(const code_fort &src, unsigned indent)
Definition: expr2c.cpp:2874
std::string convert_with_identifier(const typet &src, const std::string &identifier)
Build a declaration string, which requires converting both a type and putting an identifier in the sy...
Definition: expr2c.cpp:4148
std::string convert_extractbits(const extractbits_exprt &src, unsigned precedence)
Definition: expr2c.cpp:3493
virtual std::string convert_struct(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:2038
std::string convert_trinary(const ternary_exprt &src, const std::string &symbol1, const std::string &symbol2, unsigned precedence)
Definition: expr2c.cpp:786
std::string convert_prob_coin(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1194
std::string convert_update(const update_exprt &, unsigned precedence)
Definition: expr2c.cpp:949
std::string convert_nondet_symbol(const nondet_symbol_exprt &)
Definition: expr2c.cpp:1666
std::string convert_code_printf(const codet &src, unsigned indent)
Definition: expr2c.cpp:3198
std::string convert_unary(const unary_exprt &, const std::string &symbol, unsigned precedence)
Definition: expr2c.cpp:1121
std::string convert_code_ifthenelse(const code_ifthenelset &src, unsigned indent)
Definition: expr2c.cpp:2685
std::string convert_index(const binary_exprt &, unsigned precedence)
Definition: expr2c.cpp:1398
std::string convert_member_designator(const exprt &src)
Definition: expr2c.cpp:1493
std::string convert_byte_extract(const byte_extract_exprt &, unsigned precedence)
Definition: expr2c.cpp:1325
std::string convert_code_label(const code_labelt &src, unsigned indent)
Definition: expr2c.cpp:3385
virtual std::string convert_symbol(const exprt &src)
Definition: expr2c.cpp:1626
virtual std::string convert_constant(const constant_exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1771
std::string convert_code_array_copy(const codet &src, unsigned indent)
Definition: expr2c.cpp:3315
std::string convert_concatenation(const exprt &src, unsigned &precedence)
std::string convert_statement_expression(const exprt &src, unsigned &precendence)
Definition: expr2c.cpp:1179
std::string convert_struct_member_value(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:1605
std::string convert_code_dead(const codet &src, unsigned indent)
Definition: expr2c.cpp:2860
const namespacet & ns
Definition: expr2c_class.h:55
virtual std::string convert_annotated_pointer_constant(const annotated_pointer_constant_exprt &src, unsigned &precedence)
Definition: expr2c.cpp:2017
std::string convert_rox(const shift_exprt &src, unsigned precedence)
Conversion function from rol/ror expressions to C code strings Note that this constructs a complex ex...
Definition: expr2c.cpp:2356
virtual std::string convert_with_precedence(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:3645
std::string convert_designated_initializer(const exprt &src)
Definition: expr2c.cpp:2416
std::string convert_vector(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:2127
std::string convert_multi_ary(const exprt &src, const std::string &symbol, unsigned precedence, bool full_parentheses)
Definition: expr2c.cpp:1073
std::string convert_array_member_value(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:1595
virtual ~expr2ct()
Definition: expr2c_class.h:44
std::string convert_unary_post(const exprt &src, const std::string &symbol, unsigned precedence)
Definition: expr2c.cpp:1376
std::unordered_map< irep_idt, irep_idt > shorthands
Definition: expr2c_class.h:89
std::string convert_complex(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:1265
std::string convert_code_function_call(const code_function_callt &src, unsigned indent)
Definition: expr2c.cpp:3150
std::string convert_code_fence(const codet &src, unsigned indent)
Definition: expr2c.cpp:3220
std::string convert_bitreverse(const bitreverse_exprt &src)
Definition: expr2c.cpp:3553
virtual std::string convert(const typet &src)
Definition: expr2c.cpp:213
std::string convert_code_return(const codet &src, unsigned indent)
Definition: expr2c.cpp:2722
std::string convert_code_break(unsigned indent)
Definition: expr2c.cpp:2755
virtual std::string convert_struct_type(const typet &src, const std::string &qualifiers_str, const std::string &declarator_str)
To generate C-like string for defining the given struct.
Definition: expr2c.cpp:637
std::string convert_with(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:856
std::string convert_code_frontend_assign(const code_frontend_assignt &, unsigned indent)
Definition: expr2c.cpp:3116
std::string convert_object_descriptor(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1701
std::string convert_predicate_passive_symbol(const exprt &src)
Definition: expr2c.cpp:1684
std::string convert_array_list(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:2296
unsigned sizeof_nesting
Definition: expr2c_class.h:91
std::string convert_array_of(const exprt &src, unsigned precedence)
Definition: expr2c.cpp:1315
std::string convert_code_array_replace(const codet &src, unsigned indent)
Definition: expr2c.cpp:3337
std::string convert_conditional_target_group(const exprt &src)
Definition: expr2c.cpp:3528
std::string convert_code_assume(const codet &src, unsigned indent)
Definition: expr2c.cpp:3371
virtual std::string convert_array_type(const typet &src, const c_qualifierst &qualifiers, const std::string &declarator_str)
To generate a C-like type declaration of an array.
Definition: expr2c.cpp:713
std::string convert_code_input(const codet &src, unsigned indent)
Definition: expr2c.cpp:3250
std::string convert_extractbit(const extractbit_exprt &, unsigned precedence)
Definition: expr2c.cpp:3482
std::string convert_predicate_next_symbol(const exprt &src)
Definition: expr2c.cpp:1678
std::string convert_code_array_set(const codet &src, unsigned indent)
Definition: expr2c.cpp:3293
std::string convert_binary(const binary_exprt &, const std::string &symbol, unsigned precedence, bool full_parentheses)
Definition: expr2c.cpp:1021
virtual std::string convert_constant_bool(bool boolean_value)
To get the C-like representation of a given boolean value.
Definition: expr2c.cpp:2030
std::string convert_predicate_symbol(const exprt &src)
Definition: expr2c.cpp:1672
expr2ct(const namespacet &_ns, const expr2c_configurationt &configuration=expr2c_configurationt::default_configuration)
Definition: expr2c_class.h:37
std::string convert_prophecy_r_or_w_ok(const prophecy_r_or_w_ok_exprt &src)
Definition: expr2c.cpp:3588
std::string convert_array(const exprt &src)
Definition: expr2c.cpp:2193
std::string convert_prob_uniform(const exprt &src, unsigned &precedence)
Definition: expr2c.cpp:1209
Base class for all expressions.
Definition: expr.h:56
Extracts a single bit of a bit-vector operand.
Extracts a sub-range of a bit-vector operand.
Application of (mathematical) function.
A let expression.
Definition: std_expr.h:3214
Extract member of struct or union.
Definition: std_expr.h:2854
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:94
Expression to hold a nondeterministic choice.
Definition: std_expr.h:292
pointer_in_range(a, b, c) evaluates to true iff same_object(a, b, c) ∧ r_ok(a, offset(c)-offset(a)) ∧...
Definition: pointer_expr.h:387
pointer_in_range (see pointer_in_range_exprt) with prophecy expressions to encode whether a pointer r...
Definition: pointer_expr.h:453
A base class for a predicate that indicates that an address range is ok to read or write or both.
A base class for a predicate that indicates that an address range is ok to read or write or both.
Definition: pointer_expr.h:920
A base class for shift and rotate operators.
A side_effect_exprt representation of a function call side effect.
Definition: std_code.h:1692
An expression with three operands.
Definition: std_expr.h:67
Semantic type conversion.
Definition: std_expr.h:2073
The type of an expression, extends irept.
Definition: type.h:29
Generic base class for unary expressions.
Definition: std_expr.h:361
Operator to update elements in structs and arrays.
Definition: std_expr.h:2665
API to expression classes for 'mathematical' expressions.
Used for configuring the behaviour of expr2c and type2c.
Definition: expr2c.h:21
static expr2c_configurationt default_configuration
This prints a human readable C like syntax that closely mirrors the internals of the GOTO program.
Definition: expr2c.h:71