我想为此语法实现一个 FSM/“下推自动机”解析器:具有范围和条件的解析器,它已经被“解析”到有限状态机解析器中
我有以下内容:
class State
{
public:
virtual State* event( const string &token );
State* deleteDaughter();
private:
A* m_parent;
A* m_daughter;
}
class SomeState : public State
{
public:
State* event( const std::string &token );
}
With B
's event()
doing (在许多 if-elseif's 之后) return m_parent->deleteDaughter()
。State
我知道这很可疑(而且它崩溃了),但我需要办法从女儿那里归还父母,State
并确保女儿State
没有被泄露。
我的事件循环如下所示:
while( somestringstream >> token )
state = state->event();
在你责骂设计和最后一段代码之前,我尝试从这里扩展一个过于简单的示例,这看起来还不错。为了清晰和简洁,我将决策部分转移到各州本身。
我知道有很多关于这个主题的书籍,但我不是计算机科学家/程序员,我想自己学习做这件事(当然,在 SO 的所有友好人士的帮助下)。如果概念不清楚,请询问。谢谢!