我目前正在寻找一个词法分析器/语法分析器,可以从BNF文法(带有优先级和结合性的ocamlyacc文件)生成Scala代码。但是我很困惑,因为我几乎找不到关于如何做到这一点的任何资料。
对于语法分析,我找到了scala-bison(但是我使用起来遇到了很多问题)。所有其他工具都只是导入到Scala中的Java解析器(例如ANTLR)。
对于词法分析,我什么也没找到。
我还发现了Scala的著名的“parser combinators”(语法分析组合器),但是(如果我错了,请纠正我),即使它们非常吸引人,由于回溯,它们会消耗大量时间和内存。
所以我有两个主要问题:
- 为什么人们似乎只专注于“parser combinators”?
- 您最好的词法/语法分析生成器建议是什么?