#pragma once #include #include #include "state.h" #include "tape.h" namespace L87 { class Automata { public: // TBD 添加错误信息使用 struct Error { using InnerMap = std::unordered_map; using InnerMapIterator = InnerMap::iterator; private: static InnerMap Inner_Error_Table; public: const char* name; const char* details; Error(); Error(std::string& _name); }; public: struct Error; struct Result { public: State* state; Error error; std::string value; Result(State* _state); }; protected: StateDiagram& diagram; public: Automata(StateDiagram& _diagram); Result Run(std::string _input); }; }