Worked out the post fix operator issue, I think. Just realised that I forgot to tag...
[fridhskrift.git] / interpreter / function.cpp
blob02a1fd02f431dc43b744a3d5a9e5749b458d3897
1 #include <map>
2 #include <fridh/symbol.hpp>
4 namespace fridh
6 parse_tree_node::parse_tree_node():
7 type(parse_tree_node_type::uninitialised)
11 parse_tree_node::parse_tree_node(parse_tree_node_type::type type):
12 type(type)
16 parse_tree_node::parse_tree_node(variable * variable_pointer):
17 type(parse_tree_node_type::variable),
18 variable_pointer(variable_pointer)
22 parse_tree_node::parse_tree_node(unary_operator_type::type unary_operator):
23 type(parse_tree_node_type::unary_operator_node)
25 unary_operator_pointer = new parse_tree_unary_operator_node;
26 unary_operator_pointer->type = unary_operator;
29 parse_tree_node::parse_tree_node(binary_operator_type::type binary_operator):
30 type(parse_tree_node_type::binary_operator_node)
32 binary_operator_pointer = new parse_tree_binary_operator_node;
33 binary_operator_pointer->type = binary_operator;
36 parse_tree_node::parse_tree_node(parse_tree_nodes & elements):
37 type(parse_tree_node_type::array)
39 array_pointer = new parse_tree_array;
40 array_pointer->elements = elements;
43 void parse_tree_node::is_call()
45 type = parse_tree_node_type::call;
46 call_pointer = new parse_tree_call;
49 bool parse_tree_node::is_post_fix() const
51 if(type != parse_tree_node_type::unary_operator_node)
52 throw ail::exception("Tried to retrieve post fix node properties of a non-post-fix node");
54 unary_operator_type::type unary_type = unary_operator_pointer->type;
55 return
56 unary_type == unary_operator_type::increment ||
57 unary_type == unary_operator_type::decrement
61 parse_tree_symbol::parse_tree_symbol():
62 type(symbol_prefix::none)