gpt4 book ai didi

antlr - ANTLR 入门并避免常见错误

转载 作者:行者123 更新时间:2023-12-02 15:49:25 25 4
gpt4 key购买 nike

我已经开始学习 ANTLR,并且拥有 2007 年的书《The Definitive ANTLR Reference》和 ANTLRWorks(用于创建语法的交互式工具)。而且,作为这样的人,我从第三章开始。(“针对不耐烦的人的快速浏览”)。

这是一个相当痛苦的过程,特别是因为有些错误相当难以理解(例如 ANTLR: "missing attribute access on rule scope" problem 对我来说仅意味着“你出了问题”)。另外,我有一些非常简单的语法(仅限 3-4 个产生式)和简单的输入(2 行),运行时会出现“OutOfMemory”错误。

ANTLR 网站很有用,但有些分散,一些 SO 用户评论 ( https://stackoverflow.com/questions/278480/good-tutorial-for-antlr ) 认为这本书和教程具有较高的入门水平。因此,我一直不愿意接近 ANTLR 讨论列表。

稍后我们开始处理它。拥有可以逐渐扩展的简单可靠的示例将很有用。它当然值得掌握,因为我们基于 ANTLR reshape 了相当多的思维。

一个问题是 ANTLR V3 与 V2 相比有重大变化。 SO(以及 ANTLR 页面)上的一个答案提到了不再可用的 V2 语法。

SO 上的一些 ANTLR 问题对我帮助很大,但找到它们有点临时。所以我想知道 SO 用户如何帮助减轻学习过程的痛苦。 (如果您引用引用书,指出特定页面会很有用)。

编辑。 @duffymo 和 @JamesAnderson 已经证实 ANTLR 是一项艰苦的工作 - 主要是因为解析器很困难。 (FWIW 我已经通过 LEX/YACC 等,毫无疑问 ANTLR 更强大并且更容易使用。)我认为有可能避免弄脏的区域仍然有用,例如:

  • 确保变量名称大小写正确
  • 将包名称添加到词法分析器和解析器
  • 注意规则的顺序,因为它会影响优先级

更多此类内容将会很有用。

最佳答案

我同意 - ANTLR 不适合胆小的人。它确实需要较高的入门水平,因为语法和解析器并不简单。

话虽如此,这里有一些建议:

  1. 忘掉 v2 吧。版本 3 为标准;甚至不要浪费时间考虑早期版本或其文档。
  2. OutOfMemoryError 告诉您您定义的语法中有一些循环。
  3. IntelliJ 有一个很棒的 IDE,可以与 ANTLR v3 配合使用。它将为您提供语法的图形表示、逐步调试等。如果您要使用 ANTLR 进行大量工作,那么花几美元购买一个许可证是值得的。

ANTLR 并不容易掌握。书很好,但是很厚重。正如您所指出的,错误消息很神秘。如果这里有人能让这变得简单,我会感到惊讶。

关于antlr - ANTLR 入门并避免常见错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660051/

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