【发布时间】:2009-07-22 11:26:16
【问题描述】:
我还没有进入计算机科学的形式语言领域,所以我的问题可能很愚蠢。我正在用 C++ 编写一个简单的 NMEA 解析器,我必须选择:
我的第一个想法是手动构建一个简单的有限状态机,但后来我想也许我可以用更少的工作来完成它,甚至更有效。我之前用过正则表达式,但是我觉得NMEA正则表达式很长,应该需要“很长时间”才能匹配。
然后我考虑使用解析器生成器。我认为所有人都使用相同的方法:它们生成 FSA。但我不知道哪个更有效。您通常什么时候使用解析器生成器而不是正则表达式(我认为您可以在解析器生成器中编写正则表达式)?
请解释一下区别,我对理论和经验都感兴趣。
【问题讨论】: