add Interpreter class

Change-Id: I4786b925c8cd1e7baba2c0e24cf785a7c53c09ec
diff --git a/src/main.cpp b/src/main.cpp
index 3a66ee4..98c68ca 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -11,6 +11,7 @@
 #include <iostream>
 #include <string>
 #include "NETCONF_CLI_VERSION.h"
+#include "interpreter.hpp"
 #include "parser.hpp"
 #include "schema.hpp"
 
@@ -35,10 +36,7 @@
 using x3::lexeme;
 using x3::lit;
 
-void interpret(cd_ command, Parser& parser)
-{
-    parser.changeNode(command.m_path);
-}
+using command = boost::variant<cd_>;
 
 int main(int argc, char* argv[])
 {
@@ -69,8 +67,8 @@
             break;
 
         try {
-            cd_ command = parser.parseCommand(input, std::cout);
-            interpret(command, parser);
+            command cmd = parser.parseCommand(input, std::cout);
+            boost::apply_visitor(Interpreter(parser), cmd);
         } catch (InvalidCommandException& ex) {
             std::cerr << ex.what() << std::endl;
         }