【问题标题】:Does Boost.Spirit or Antlr support Left-recursive grammarsBoost.Spirit 或 Antlr 是否支持左递归语法
【发布时间】:2015-04-26 20:59:06
【问题描述】:

根据我的经验,在许多情况下,强制语法表示不是左递归往往是不直观或麻烦的。

我正在研究各种解析器生成器框架,目前正在阅读有关 Antlr 和 Boost.Spirit 的文章。

它们中的任何一个都支持左递归语法吗?一般来说,哪一种支持更强大的语法?

谢谢!

【问题讨论】:

标签: c++11 antlr boost-spirit


【解决方案1】:

我会用谷歌搜索给你。是的,ANTLR 4 直接支持左递归规则。 https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Left-recursive+rules

【讨论】:

  • 我认为你在谷歌搜索上撒了谎。请不要躺在上面。
  • 他可能已经用谷歌搜索过了。这需要进一步调查。
  • 一般来说,哪一种支持更强大的语法?
  • ANTLR 4 接受任何不包含隐藏或间接左递归的上下文无关文法。此外,它支持语义谓词来解决解析过程中的歧义。最后,我什至可以处理一些上下文相关的语言。我不知道精神。
  • @LightningRacisinObrit 两者都是无限的。但是 Spirit 让您非常努力地为任何非天然支持的 PEG 工作。它们有非常不同的应用领域。 Spirit 非常适合零工具临时(快速)开发。我个人会考虑为成熟的语言(具有稳定的语法)手动滚动解析器。或者使用 ANTLR。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多