1234567891011121314151617181920212223242526272829303132333435 |
- #pragma once
- #include <string>
- #include <unordered_map>
- namespace L87 {
- class State;
- struct StateDiagram {
- ::std::unordered_map<::std::string, State*> states;
- State* initial;
- virtual ~StateDiagram();
- };
- }
- namespace L87 {
- struct StateDiagram;
- class State {
- protected:
- StateDiagram* diagram;
- ::std::unordered_map<::std::string, State*>& states;
- void auto_register();
- public:
- State(StateDiagram* _diagram);
- virtual bool done();
- virtual bool bad();
- public:
- // 具体状态必须实现
- virtual const char* name() = 0;
- virtual State* next(char input) = 0;
- };
- }
|