我要构建词法分析器和解析器。 我的问题是如何构建它们。我可以想到2个实现:
哪种实施更好?
答案 0 :(得分:1)
两者都是可行的。 #1更适合调试,因为您可以保存数组并一次查看所有数组。 #2提供更高的性能,因为它是单通道策略,可能存在O(1)存储复杂性。
如果您不确定该怎么做,最好坚持使用#1。
答案 1 :(得分:1)
2号。
根据令牌迭代器编写解析器,并在令牌迭代器的operator ++中实现lexing。这是Boost.Spirit的方法。此外,如果你的lexing足够简单,你可以使用Boost.Tokenizer(或围绕它包装一些逻辑)。