当我使用 C# 工作时,我发现gppg和gplex解析器/词法分析器生成器非常适合我的需求。我想知道 D 编程语言是否有类似的东西(即,一个实用程序,给定 BNF 或 EBNF 中的语法,输出 D 代码,将该语言 lexes/parses 为抽象语法树)。
我找到的最接近的是Goldie,但我很难理解它,以至于我无法启动和运行任何东西。
我发现 Goldie 对于上下文不敏感的语法非常棒,你确定吗?此外,http://www.wikiservice.at/d/wiki.cgi? GrammarParsers 列出了一些,不知道哪些仍在开发中。如果 ANTLR-D 仍然有效,它可能是最佳选择之一。
Goldie 可能是您最好的选择,但也有可以发出 D 的 ragel。这并不完全符合您的要求(可组合状态机),尽管它在许多情况下可能就足够了,而且非常好。
主干版本可以使用未记录的 -E 开关编译为 D2 代码,我不确定这有多成熟。