cprover
jsil_parse_tree.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Jsil Language
4 
5 Author: Michael Tautschnig, tautschn@amazon.com
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_JSIL_JSIL_PARSE_TREE_H
13 #define CPROVER_JSIL_JSIL_PARSE_TREE_H
14 
15 #include <iosfwd>
16 #include <list>
17 
18 #include <util/std_expr.h>
19 #include <util/std_code.h>
20 
21 class symbolt;
22 
24 {
25 public:
26  jsil_declarationt():exprt(ID_declaration)
27  {
28  }
29 
30  void add_declarator(const symbol_exprt &expr)
31  {
32  add(ID_declarator, expr);
33  }
34 
35  const symbol_exprt &declarator() const
36  {
37  return static_cast<const symbol_exprt &>(find(ID_declarator));
38  }
39 
41  {
42  return static_cast<symbol_exprt &>(add(ID_declarator));
43  }
44 
46  const irep_idt &value,
47  const irep_idt &label)
48  {
49  add(ID_return).set(ID_value, value);
50  add(ID_return).set(ID_label, label);
51  }
52 
53  const irep_idt &returns_value() const
54  {
55  return find(ID_return).get(ID_value);
56  }
57 
58  const irep_idt &returns_label() const
59  {
60  return find(ID_return).get(ID_label);
61  }
62 
63  void add_throws(
64  const irep_idt &value,
65  const irep_idt &label)
66  {
67  add(ID_throw).set(ID_value, value);
68  add(ID_throw).set(ID_label, label);
69  }
70 
71  const irep_idt &throws_value() const
72  {
73  return find(ID_throw).get(ID_value);
74  }
75 
76  const irep_idt &throws_label() const
77  {
78  return find(ID_throw).get(ID_label);
79  }
80 
81  void add_value(const code_blockt &code)
82  {
83  add(ID_value, code);
84  }
85 
86  const code_blockt &value() const
87  {
88  return static_cast<const code_blockt &>(find(ID_value));
89  }
90 
92  {
93  return static_cast<code_blockt &>(add(ID_value));
94  }
95 
96  void to_symbol(symbolt &symbol) const;
97 
98  void output(std::ostream &) const;
99 };
100 
102 {
103 public:
104  typedef std::list<jsil_declarationt> itemst;
106 
107  void swap(jsil_parse_treet &other)
108  {
109  items.swap(other.items);
110  }
111 
112  void clear()
113  {
114  items.clear();
115  }
116 
117  void output(std::ostream &out) const;
118 };
119 
120 #endif // CPROVER_JSIL_JSIL_PARSE_TREE_H
jsil_parse_treet::items
itemst items
Definition: jsil_parse_tree.h:105
dstringt
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:37
jsil_declarationt
Definition: jsil_parse_tree.h:24
code_blockt
A codet representing sequential composition of program statements.
Definition: std_code.h:170
jsil_declarationt::throws_label
const irep_idt & throws_label() const
Definition: jsil_parse_tree.h:76
jsil_declarationt::declarator
const symbol_exprt & declarator() const
Definition: jsil_parse_tree.h:35
irept::add
irept & add(const irep_namet &name)
Definition: irep.cpp:113
jsil_parse_treet::itemst
std::list< jsil_declarationt > itemst
Definition: jsil_parse_tree.h:104
jsil_declarationt::returns_label
const irep_idt & returns_label() const
Definition: jsil_parse_tree.h:58
irept::find
const irept & find(const irep_namet &name) const
Definition: irep.cpp:103
jsil_declarationt::throws_value
const irep_idt & throws_value() const
Definition: jsil_parse_tree.h:71
exprt
Base class for all expressions.
Definition: expr.h:53
jsil_declarationt::returns_value
const irep_idt & returns_value() const
Definition: jsil_parse_tree.h:53
jsil_declarationt::add_throws
void add_throws(const irep_idt &value, const irep_idt &label)
Definition: jsil_parse_tree.h:63
symbol_exprt
Expression to hold a symbol (variable)
Definition: std_expr.h:82
jsil_declarationt::add_returns
void add_returns(const irep_idt &value, const irep_idt &label)
Definition: jsil_parse_tree.h:45
jsil_parse_treet::output
void output(std::ostream &out) const
Definition: jsil_parse_tree.cpp:92
jsil_parse_treet
Definition: jsil_parse_tree.h:102
jsil_parse_treet::swap
void swap(jsil_parse_treet &other)
Definition: jsil_parse_tree.h:107
jsil_declarationt::to_symbol
void to_symbol(symbolt &symbol) const
Definition: jsil_parse_tree.cpp:43
jsil_declarationt::output
void output(std::ostream &) const
Definition: jsil_parse_tree.cpp:84
std_code.h
jsil_declarationt::add_value
void add_value(const code_blockt &code)
Definition: jsil_parse_tree.h:81
irept::get
const irep_idt & get(const irep_namet &name) const
Definition: irep.cpp:51
jsil_parse_treet::clear
void clear()
Definition: jsil_parse_tree.h:112
symbolt
Symbol table entry.
Definition: symbol.h:28
irept::set
void set(const irep_namet &name, const irep_idt &value)
Definition: irep.h:442
jsil_declarationt::jsil_declarationt
jsil_declarationt()
Definition: jsil_parse_tree.h:26
jsil_declarationt::declarator
symbol_exprt & declarator()
Definition: jsil_parse_tree.h:40
jsil_declarationt::add_declarator
void add_declarator(const symbol_exprt &expr)
Definition: jsil_parse_tree.h:30
std_expr.h
API to expression classes.
jsil_declarationt::value
code_blockt & value()
Definition: jsil_parse_tree.h:91
jsil_declarationt::value
const code_blockt & value() const
Definition: jsil_parse_tree.h:86