我还没有进入计算机科学的正规语言领域,所以也许我的问题很愚蠢.我正在用C++编写一个简单的NMEA解析器,我必须选择:
我的第一个想法是手动构建一个简单的有限状态机,但后来我想也许我可以用更少的工作来做,甚至更有效率.我之前使用过正则表达式,但我认为NMEA正则表达式很长,应该花费很长时间来匹配它.
然后我考虑使用解析器生成器.我认为所有人都使用相同的方法:他们生成FSA.但我不知道哪个更有效率.你什么时候通常使用解析器生成器而不是正则表达式(我认为你可以在解析器生成器中编写正则表达式)?
请解释这些差异,我对理论和经验感兴趣.