6 #include <ail/types.hpp>
10 namespace executable_unit_type
24 namespace unary_operator_type
37 namespace binary_operator_type
51 greater_than_or_equal
,
69 subtraction_assignment
,
70 multiplication_assignment
,
73 exponentiation_assignment
,
77 namespace parse_tree_node_type
97 namespace symbol_prefix
107 struct parse_tree_node
;
108 struct parse_tree_symbol
;
109 struct executable_unit
;
111 typedef std::vector
<parse_tree_node
> parse_tree_nodes
;
112 typedef std::vector
<parse_tree_symbol
> parse_tree_symbols
;
113 typedef std::vector
<executable_unit
> executable_units
;
115 struct parse_tree_symbol
;
116 struct parse_tree_unary_operator_node
;
117 struct parse_tree_binary_operator_node
;
118 struct parse_tree_call
;
119 struct parse_tree_array
;
121 struct parse_tree_node
123 parse_tree_node_type::type type
;
126 variable
* variable_pointer
;
127 parse_tree_symbol
* symbol_pointer
;
128 parse_tree_unary_operator_node
* unary_operator_pointer
;
129 parse_tree_binary_operator_node
* binary_operator_pointer
;
130 parse_tree_call
* call_pointer
;
131 parse_tree_array
* array_pointer
;
135 parse_tree_node(parse_tree_node_type::type type
);
136 parse_tree_node(variable
* variable_pointer
);
137 parse_tree_node(unary_operator_type::type unary_operator
);
138 parse_tree_node(binary_operator_type::type binary_operator
);
139 parse_tree_node(parse_tree_nodes
& elements
);
143 bool is_post_fix() const;
146 struct parse_tree_symbol
149 symbol_prefix::type type
;
154 struct parse_tree_unary_operator_node
156 unary_operator_type::type type
;
157 parse_tree_node argument
;
160 struct parse_tree_binary_operator_node
162 binary_operator_type::type type
;
168 struct parse_tree_call
170 parse_tree_node function
;
171 parse_tree_nodes arguments
;
174 struct parse_tree_array
176 parse_tree_nodes elements
;
181 parse_tree_node conditional_term
;
182 executable_units body
;
185 struct if_else_statement
187 parse_tree_node conditional_term
;
193 struct for_each_statement
195 parse_tree_node container
;
196 executable_units body
;
205 executable_units body
;
208 struct while_statement
210 parse_tree_node conditional_term
;
211 executable_units body
;
214 struct executable_unit
216 executable_unit_type::type type
;
220 parse_tree_node
* statement_pointer
;
221 if_statement
* if_pointer
;
222 if_else_statement
* if_else_pointer
;
223 for_each_statement
* for_each_pointer
;
224 for_statement
* for_pointer
;
225 while_statement
* while_pointer
;
231 string_vector arguments
;
232 executable_units body
;