【问题标题】:Is there any bison yacc to ANTLR converter available有没有可用的野牛 yacc 到 ANTLR 转换器
【发布时间】:2014-08-07 09:23:53
【问题描述】:

我有一个想要转换为 ANTLR 的 yacc 语法。有野牛吗
ANTLR 转换器可用吗?有人可以帮忙吗?

谢谢, 普拉桑特

【问题讨论】:

  • 关于您的任务问题的有趣读物是this question and its answers
  • @DarkDust 请注意,该问题的公认答案已过时,因为 ANTLR v4 可以处理左递归。

标签: antlr


【解决方案1】:

让我们比较一下这些解析器生成器:

  • ANTLR v4 是 ALL(*) 解析器生成器,LL(*) 的变体
  • Yacc 是一个LALR 解析器生成器。
  • Bison 是一个LALR/GLR 解析器生成器。

LLLALRincompatible:

LALR(k) 解析器无法与 LL(k) 解析器相比:对于任何大于 0 的 j 和 k,存在不是 LL(k) 语法的 LALR(j) 语法,反之亦然。事实上,对于任何 k > 0,给定的 LL(1) 文法是否为 LALR(k) 是不可判定的。

GLRLR 的变体。 LR 解析器是自下而上的解析器,而 LL 解析器是自上而下的解析器。这些是根本不同的解析策略。

结论:你不会很快找到任何可靠的自动转换器。

【讨论】:

  • 你的答案基本上是正确的,但是谷歌发现了这个:github.com/dowlingw/bison-antlr(它是否可靠是另一回事;由于 LL 无法应对左递归,需要修改要解析的语法首先)。
  • 有趣。但看起来它是为 ANTLR v2 制作的,现在已经很老了。
猜你喜欢
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多