12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #pragma once
- #include <string>
- #include <unordered_map>
- #include "state.h"
- #include "tape.h"
- namespace L87 {
- class Automata {
- public:
- // TBD 添加错误信息使用
- struct Error {
- using InnerMap = std::unordered_map<std::string, std::string>;
- 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);
- };
- }
|