gpt4 book ai didi

java - 与 StringTokenizer 及同类产品相比,使用 ANTLR、JavaCC 或 JFlex 有何优点/缺点?

转载 作者:行者123 更新时间:2023-12-01 14:59:49 28 4
gpt4 key购买 nike

我目前正在考虑实现所示的语言 here在 java 。演示有点长,但它本质上是一个用于创建动态语音的 DSL。示例:

rule ExampleRule
{
criteria Criterion1 Criterion2 Criterion3=value
response ExampleResponse
remember State:=1
trigger Object TriggerName
ApplyFacts "State1:1:0,State2:1:0"
}
response ExampleResponse
{
say "Text" then object ExampleRule
say "Text" then any ExampleRule
say "Text"
scene "Scenepath"
}

我已经研究了不同的解析器生成器,例如 ANTLR、JavaCC 和 JFlex,但我想知道是否只使用 StringTokenizer/Scanner 并推出我自己的解析器,因为它是一个业余爱好项目。

我早些时候决定使用 ANTLR,但在生成的源代码中使用完整路径名时遇到了 ANTLR 的一些问题,而且运行时库似乎有点重量级。我无法找到太多信息来比较这三个解析器库或内置的 Java 替代方案。

考虑到语言的性质,每个解析器的优点/缺点是什么?

最佳答案

使用解析器生成器的优点:

  1. 构造的正确性。生成的解析器完全接受语法中指定的语言,并且对于各种生成器都有各种 CS 证明,从 Knuth 1965 开始。 。如果你自己推出,例如递归下降,你没有立即证明这一点,也没有简单的方法来测试它。

  2. 开发时间。一旦您了解了生成器的缺点,解析器的构建速度就会与您输入的速度一样快。

“考虑到语言的本质”并不是那么相关。 20 世纪 60 年代,主要从业者在实现比算术表达式更复杂的东西时犯了重大错误,这就是为什么我的观点 (1) 是我的观点 (1)。

关于java - 与 StringTokenizer 及同类产品相比,使用 ANTLR、JavaCC 或 JFlex 有何优点/缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13834184/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com