6 #include <ail/types.hpp>
10 namespace executable_unit_type
26 namespace unary_operator_type
39 namespace binary_operator_type
53 greater_than_or_equal
,
71 subtraction_assignment
,
72 multiplication_assignment
,
75 exponentiation_assignment
,
79 namespace parse_tree_node_type
99 namespace symbol_prefix
109 struct parse_tree_node
;
110 struct parse_tree_symbol
;
111 struct executable_unit
;
113 typedef std::vector
<parse_tree_node
> parse_tree_nodes
;
114 typedef std::vector
<parse_tree_symbol
> parse_tree_symbols
;
115 typedef std::vector
<executable_unit
> executable_units
;
117 struct parse_tree_symbol
;
118 struct parse_tree_unary_operator_node
;
119 struct parse_tree_binary_operator_node
;
120 struct parse_tree_call
;
121 struct parse_tree_array
;
123 struct parse_tree_node
125 parse_tree_node_type::type type
;
128 variable
* variable_pointer
;
129 parse_tree_symbol
* symbol_pointer
;
130 parse_tree_unary_operator_node
* unary_operator_pointer
;
131 parse_tree_binary_operator_node
* binary_operator_pointer
;
132 parse_tree_call
* call_pointer
;
133 parse_tree_array
* array_pointer
;
137 parse_tree_node(parse_tree_node
const & other
);
140 parse_tree_node(parse_tree_node_type::type type
);
141 parse_tree_node(variable
* variable_pointer
);
142 parse_tree_node(unary_operator_type::type unary_operator
);
143 parse_tree_node(binary_operator_type::type binary_operator
);
144 parse_tree_node(parse_tree_nodes
& elements
);
148 bool is_post_fix() const;
151 struct parse_tree_symbol
154 symbol_prefix::type type
;
159 struct parse_tree_unary_operator_node
161 unary_operator_type::type type
;
162 parse_tree_node argument
;
165 struct parse_tree_binary_operator_node
167 binary_operator_type::type type
;
173 struct parse_tree_call
175 parse_tree_node function
;
176 parse_tree_nodes arguments
;
179 struct parse_tree_array
181 parse_tree_nodes elements
;
186 parse_tree_node conditional_term
;
187 executable_units body
;
190 struct if_else_statement
192 parse_tree_node conditional_term
;
198 struct for_each_statement
200 parse_tree_node container
;
201 executable_units body
;
210 executable_units body
;
213 struct while_statement
215 parse_tree_node conditional_term
;
216 executable_units body
;
219 struct executable_unit
221 executable_unit_type::type type
;
225 parse_tree_node
* statement_pointer
;
226 if_statement
* if_pointer
;
227 if_else_statement
* if_else_pointer
;
228 for_each_statement
* for_each_pointer
;
229 for_statement
* for_pointer
;
230 while_statement
* while_pointer
;
234 executable_unit(executable_unit
const & other
);
240 string_vector arguments
;
241 executable_units body
;