Renamed the intermediary non-sense to parser
[fridhskrift.git] / symbol.cpp
blob4009bd9b48b829530bec36ca87a2c04d6a6b3e1d
1 #include <fridh/symbol.hpp>
3 namespace fridh
5 symbol_tree_node::symbol_tree_node():
6 parent(0)
10 symbol_tree_node::symbol_tree_node(symbol::type type):
11 type(type),
12 parent(0)
14 switch(type)
16 case symbol::variable:
17 variable_pointer = new variable;
18 break;
20 case symbol::function:
21 function_pointer = new function;
22 break;
24 case symbol::class_symbol:
25 class_pointer = new class_type;
26 break;
30 symbol_tree_node::~symbol_tree_node()
32 for(node_children::iterator i = children.begin(), end = children.end(); i != end; i++)
33 delete i->second;
35 switch(type)
37 case symbol::variable:
38 delete variable_pointer;
39 break;
41 case symbol::function:
42 delete function_pointer;
43 break;
45 case symbol::class_symbol:
46 delete class_pointer;
47 break;
49 case symbol::module:
50 delete module_pointer;
51 break;
55 bool symbol_tree_node::exists(std::string const & name)
57 node_children::iterator iterator = children.find(name);
58 return iterator != children.end();
61 bool symbol_tree_node::find_entity(std::string const & name, symbol_tree_node * & output)
63 node_children::iterator iterator = children.find(name);
64 if(iterator == children.end())
66 if(parent == 0)
67 return false;
68 return parent->find_entity(name, output);
71 output = iterator->second;
72 return true;