Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我将构建一个词法分析器和一个解析器。我的问题是如何构建它们。我可以想到2个实现:
哪个实现更好?
2号。
根据标记迭代器编写解析器,并在标记迭代器的 operator++ 中实现词法分析。这是 Boost.Spirit 的方法。此外,如果您的词法分析足够简单,您可以使用 Boost.Tokenizer(或围绕它包装一些逻辑)。
两者都是可行的。#1 更适合调试,因为您可以保存数组并立即查看所有内容。#2 提供更高的性能,因为它是单通道策略,具有潜在的 O(1) 存储复杂性。
如果您不确定该怎么做,最好坚持使用#1。