diff options
Diffstat (limited to 'src/traverser.cc')
-rw-r--r-- | src/traverser.cc | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/src/traverser.cc b/src/traverser.cc deleted file mode 100644 index af29132..0000000 --- a/src/traverser.cc +++ /dev/null @@ -1,40 +0,0 @@ -#include "traverser.h" -#include "visitor.h" -#include "node.h" -#include "state.h" - -void Traverser::execute() -{ - State state(NULL); - traverse(state, this->root); -} - -void Traverser::traverse(const State &state, const AbstractNode &node) -{ - // FIXME: Handle abort - - State newstate = state; - newstate.setNumChildren(node.getChildren().size()); - - if (traversaltype == PREFIX || traversaltype == PRE_AND_POSTFIX) { - newstate.setPrefix(true); - newstate.setParent(state.parent()); - node.accept(newstate, this->visitor); - } - - newstate.setParent(&node); - const std::list<AbstractNode*> &children = node.getChildren(); - for (std::list<AbstractNode*>::const_iterator iter = children.begin(); - iter != children.end(); - iter++) { - - traverse(newstate, **iter); - } - - if (traversaltype == POSTFIX || traversaltype == PRE_AND_POSTFIX) { - newstate.setParent(state.parent()); - newstate.setPrefix(false); - newstate.setPostfix(true); - node.accept(newstate, this->visitor); - } -} |