diff --git a/xo-interpreter/README.md b/xo-interpreter/README.md new file mode 100644 index 00000000..133805c0 --- /dev/null +++ b/xo-interpreter/README.md @@ -0,0 +1 @@ +# xo-interpreter diff --git a/xo-interpreter/include/xo/interpreter/VirtualSchematikaMachine.hpp b/xo-interpreter/include/xo/interpreter/VirtualSchematikaMachine.hpp new file mode 100644 index 00000000..eca9368c --- /dev/null +++ b/xo-interpreter/include/xo/interpreter/VirtualSchematikaMachine.hpp @@ -0,0 +1,19 @@ +/** @file VirtualSchematikaMachine.hpp **/ + +#pragma once + +#include "VmInstr.hpp" + +namespace xo { + namespace scm { + /** @class VirtualSchematikaMachine + * @brief Virtual machine implementing a Schematika interpreter + **/ + class VirtualSchematikaMachine { + public: + private: + }; + } /*namespace scm*/ +} /*namespace xo*/ + +/* end VirtualSchematikaMachine.hpp */ diff --git a/xo-interpreter/include/xo/interpreter/VmInstr.hpp b/xo-interpreter/include/xo/interpreter/VmInstr.hpp new file mode 100644 index 00000000..7502a3ac --- /dev/null +++ b/xo-interpreter/include/xo/interpreter/VmInstr.hpp @@ -0,0 +1,28 @@ +/** @file VmInstr.hpp **/ + +#pragma once + +#include + +namespace xo { + namespace scm { + class VirtualSchematikaMachine; // see VirtualSchematikaMachine.hpp + + /** @class VmInstr + * @brief Represent a particular vritual schematika machine instruction + * + * A vsm instruction acts on a virtual schematika machine instance. + **/ + class VmInstr + { + public: + using ActionFn = void (*)(VirtualSchematikaMachine * vm); + + private: + std::string name_; + ActionFn action_; + }; + } +} + +/* end VmInstr.hpp */