问题标签 [antlrworks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在 ANTLR 中指定令牌的确切出现次数?
我必须定义一个文件的语法,如下所示。
//示例文件
NameCount = 4
Name = a
Name = b
Name = c
Name = d
//文件结束
现在我可以为NameCount和Name定义标记。但是我必须定义文件结构,包括令牌Name的有效实例数,这是NameCount之后的值。我将值解析并转换为整数并存储在语法全局范围内的变量中(比如变量nc)。
如何在语法中定义Name应该精确重复nc次?
java - 编译 ANTLRWorks 生成的类文件
我正在使用 ANTLRWorks 创建 ANTLR 语法。我有一个有效的语法,并且也生成了解析器和词法分析器源文件。我还尝试调试生成的代码,并且输出与调试器输出中的预期一致。
但是当我尝试调用调试器生成的 __Test__ 类时,控制台中没有任何内容。我已经正确设置了类路径,因为我可以使用相同的类路径成功编译 __Test__.java。
会有什么问题?是否有使用 antlr 和 antlrworks 编写和编译示例解析器的清晰教程?
java - ANTLR 可以生成最终的解析器类吗?
我正在使用 ANTLR 3.1 和 ANTLRWorks 在 Java 中生成解析器类。如果我用 Java final 关键字标记生成的类,解析器的性能会更好。问题是:每次从 ANTLR 语法重新生成代码后,我都会手动添加此关键字。无论如何,在语法中,告诉 ANTLR 将 final 关键字添加到生成的解析器类定义中吗?
return-value - 如何处理 ANTLR 中的列表返回值
在 ANTLR 中解决此问题的正确方法是什么:
我有一个简单的语法规则,比如一个包含任意数量元素的列表。
如果我想为列表分配一个返回值,并且该值是生产中返回值的实际列表,那么正确的方法是什么?我正在娱乐的替代方案是:
- 在全局范围内创建我自己的堆栈以跟踪这些列表
- 尝试检查我下面的树节点并以这种方式提取信息
- 以某种巧妙而酷炫的方式访问它,我希望能找到我可以从与规则相关联的操作中轻松访问此类列表的方法。
我想问题是:酷孩子是怎么做到的?
(仅供参考,我正在使用 ANTLR 的 python API,但如果你用另一种语言打我,我可以处理)
parsing - ANTLR:在也可以使用其他数字文字时解析 2 位数字
我正在为中等大小的语言编写语法,并且正在尝试实现形式的时间文字hh:mm:ss
。
但是,每当我尝试解析时,例如,12:34:56
我timeLiteral
都会在数字上得到不匹配的令牌异常。有谁知道我可能做错了什么?
以下是当前定义的相关规则:
antlr - 生成代码以更正指定包的目录
我正在使用 ANTLRWorks,并使用 @header 操作指定了我的 java 包:
@header {包 com.xxx.xxx.xxx.compiler}
但是,当我生成java代码时,它是生成到根src目录而不是src/com/xxx/xxx/xxx/compiler。因此,它不能干净地编译。
如何指定正确的目录来生成代码?
antlr - 有谁知道在 ANTLRWorks 中调试树语法的方法
ANTLR 使用的推荐模式是让 Parser 构造一个抽象语法树,然后构建 Tree walkers(AKA 树语法)来处理它们。
我试图弄清楚为什么我的树语法不起作用,并且很想使用 ANTLRWorks 的调试器,就像我将它用于解析器本身一样。解析器的输入是“源代码”,但树解析器的输入是解析器的 AST 结果。我看不到如何将其作为输入来测试树语法。
目前尚不清楚是否有一种方法可以在 ANTLRWorks 中测试树语法。如果可以做到,将不胜感激指向正确方向的指针。
antlr - 使用 ANTLR 1.3 / ANTLRWorks 生成代码时出现问题
我已经下载了 ANTLR 1.3 和 ANTLRWorks 并且可以生成规则和语法图 OK。当我尝试生成代码时(例如通过 ANTLRWorks 中的 GenerateCode 或java org.antlr.Tool Temp.g
我得到
我使用的是 Windows 7 beta,Java 1.6。我没有专门设置类路径,因为发行版隐含的 ANTLRWorks 开箱即用。
编辑 这是一个简单的语法(由 ANTLRWorks 示例生成),是的,文件存在,内容:
parsing - ANTLR 有帮助吗?不同的建议?
在我深入研究 ANTLR 之前(因为它显然不适合胆小的人),我只是想确保我对它的使用做出了正确的决定。
我想创建一个语法,它将解析带有预定义标签的文本文件,以便我可以在我的应用程序中填充值。(文本文件是由另一个应用程序生成的。)所以,本质上,我希望能够解析如下内容:
在我的应用程序中,TheFileName 存储为一个字符串,并且两组值都存储到一个数组中。(这只是一个示例,文件要复杂得多。)无论如何,我是否至少在使用 ANTLR 时走上了正确的道路?还有其他建议吗?
编辑 文件由用户创建,它们通过标签定义区域。所以,它可能看起来像这样。
类似的东西。
antlr - ANTLR“子树的意外结束”
嘿。我是 ANTLR 的新手。ANTLRWorks 向导为我编写了以下代码:
在调试它时,它会抛出以下错误:
有人可以解释一下错误是什么,在哪里以及如何解决?
谢谢。