我已经开始学习ANTLR并拥有2007年的书"The Definitive ANTLR Reference"和ANTLRWorks(一种用于创建语法的交互式工具).而且,作为那种人,我从第3章开始.("快速游览不耐烦").
这是一个相当痛苦的过程,特别是因为一些错误是相当难以理解的(例如ANTLR:"缺少对规则范围的属性访问"问题,这对我来说意味着"你有错误").另外,我有一些非常简单的语法(仅限3-4个制作)和简单的输入(2行),在运行时会出现"OutOfMemory"错误.
ANTLR网站很有用,但有点零散,一些SO用户已经评论(/sf/ask/19493631/)本书和教程期望高入门级别.因此,我一直不愿意接近ANTLR讨论列表.
以后我们开始掌握它.拥有可以轻柔扩展的简单可靠的示例将是有用的.这当然值得掌握,因为我们根据ANTLR改造了很多我们的想法.
一个问题是ANTLR V3与V2有显着的变化.SO(以及ANTLR页面)上的一个答案是指不再可用的V2语法.
一些关于SO的ANTLR问题给了我很多帮助,但找到它们有点特别.所以我想知道SO用户如何帮助减少学习过程中的痛苦.(如果您参考参考书,那么指向特定页面会很有用).
编辑.@duffymo和@JamesAnderson已经确认ANTLR很难 - 主要是因为解析器很难.(FWIW我已经通过LEX/YACC等,毫无疑问,ANTLR更强大,更容易使用.)我认为有可能避免结垢的区域仍然是有用的,例如:
而且更多这些将是有用的.
我同意 - ANTLR不适合胆小的人.它确实期望高入门级别,因为语法和解析器并不是微不足道的.
话虽如此,这里有一些建议:
ANTLR不容易掌握.这本书很好,但很密集.正如您所指出的那样,错误消息是神秘的.如果有人能让这件事变得简单,我会感到惊讶.
抱歉,我对ANTLR(实际上是javacc,bison或任何全功能解析器)的体验是,你的大部分学习都是通过修复自己的错误来实现的!
获得其他人的代码的好例子将有所减少,最好的例子看起来非常简单 - 但你缺少所有的汗水和头发拉动它让他们看起来那么容易.
| 归档时间: |
|
| 查看次数: |
3604 次 |
| 最近记录: |