问题标签 [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.

0 投票
1 回答
3195 浏览

antlr - 在 ANTLR 中生成简单的 AST

我正在玩一些 ANTLR,并希望创建一个这样的函数:

这会产生以下 AST:

到目前为止,我已经尝试过没有运气,并且我不断让 AST 将参数作为兄弟姐妹,而不是孩子。

到目前为止的代码:

C#:

ANTLR:

0 投票
1 回答
330 浏览

antlr - ANTLR 重写查询文本以重复具有较早节点的文本

我是 ANTLR 的新手,正在尝试使用以下方法解析查询

这似乎适用于一般查询。但是,a near (b or c)实际需要处理的情况为:

替代文字

并且a near (b or c and (d or e))需要处理为:

替代文字

我无法确定如何执行此操作。非常感激任何的帮助。

谢谢

0 投票
1 回答
382 浏览

antlr - Antlr 3.2 重写规则

我最近开始学习 Antlr 并下载 AntlrWorks 1.4,据说它包括 Antlr 3.2。现在,3.2 应该支持重写规则语法,如 '->' 但我什至无法获得我可以基于 Lexer 或 Parser 规则构建的最简单的情况:

当我尝试编译它时,我得到了错误:

为什么是这样。构造看起来很简单:ab 应该生成一棵树,其中只捕获 a 节点。你不就是这样吗?我不能让它与生根('^')或忽略('!')一起工作。我很困惑。

0 投票
1 回答
270 浏览

antlr - ANTLR AST 构建问题

我无法获得 AST

使用以下语法

我想制作一个应该显示单词和运算符的 AST,以便

即我的要求是这样的:

相反,我得到的是:

实际上,我指的是 MultiwordNode 下的 AST(或在“原子”级别生成)

它应该像

(对不起我画的不好:))

问题是,如果运算符不带引号出现,它应该是其兄弟的头部(正如它在 AST 中所指的那样)。但是当它出现在一些带引号的文本中时,它应该像其他词一样被捕获......

0 投票
1 回答
921 浏览

compiler-construction - AntlrWorks 和语言语法错误

从事涉及脚本语言的游戏项目,我想将其解释为可以直接执行的虚拟机代码。我已经包含了下面的语法。所有词法分析器规则都在语法图中正确显示,但是当我单击任何解析器规则的主体时,对于给定的解析器规则 X,我得到“无法显示规则“X”,因为找不到开始状态”。

我不太确定为什么 ANTLR 抱怨没有启动状态。语法应该明确地从代码行开始,任何其他解析器规则都没有引用它。另外,右上角的框是绿色的,表示没有语法错误。

我梳理了其他一些留言板帖子,以及 ANTLRv3 示例语法下载中提供的许多语法,但它们都没有任何特殊代码向 ANTLR 指示哪个解析器规则是起始状态。我觉得一些简单的东西被打破了,但我对那到底是什么陷入了僵局。

任何建议或帮助将不胜感激!即使它只是沿着“去读这个”的路线。

0 投票
1 回答
375 浏览

antlr - 使用antlrworks解决左递归

嗨,我想编写一个语法(使用 ANTLRWORKS),稍后(在调试模式下)接受此代码

感谢您的帮助

0 投票
2 回答
234 浏览

java - 为什么在 Antlr 中导入词法分析器时会出现 NullPointerException?

我正在使用 antlr 3 和 Antlrworks。这是我的设置:

lexer Base //包含基本标记 - 如 WS、数字等。

lexer Specific //包含我的语言特定标记 - 并且派生自 Base lexer

特定于解析器的//我的语言的解析器

组合语法 -> 导入特定的词法分析器和特定的解析器

当我生成时,我总是得到一个 NPE(在 Java 中)。原因是生成的特定词法分析器中对 Base 词法分析器的引用没有初始化。

我错过了什么吗?

0 投票
0 回答
189 浏览

c - AntlrWorks 不想调试 C 目标代码

我正在尝试远程调试以 C 为目标的语法。AntlrWorks 可以很好地连接到解析器,但它只是将它运行到最后。我不能真正踩它也不能打破它。

我正在使用 AntlrWorks 1.4.2。解析器是使用 Antlr 3.2 生成的。

任何建议表示赞赏。

是否有人在使用 antlrworks 调试 C 目标代码方面取得了成功?

0 投票
1 回答
6188 浏览

whitespace - ANTLR 空白问题(不是典型的问题)

考虑这个简短的 SmallC 程序:

如果我在 ANTLWorks 中以及在使用解释器时指定行尾 ->“Mac (CR)”,我的 ANTLR 语法就可以很好地接受它。如果我将行尾选项设置为 Unix (LF),则语法会抛出 NoViableAltException 并且在 include 语句结束后不识别任何内容。如果我在包含末尾添加换行符,此错误就会消失。我为此使用的计算机是 Mac,所以我认为必须将行尾设置为 Mac 格式是有意义的。因此,我改用 Linux 机器——得到了同样的结果。如果我在 ANTLRWorks Interpreter 框中键入任何内容,并且如果我没有选择行尾 Mac (CR),则会出现上述情况下空行不足的问题,此外,每个语句块的最后一条语句都需要分号后面的额外空格(即在 bob; 之后)。

当我在要解析的代码输入文件上运行 Java 版本的语法时,这些错误再次出现......

可能是什么问题?我会理解问题是否存在太多新行,格式可能解析器不理解/没有被我的空格规则捕获。但是在这种情况下,这是缺少新行的问题。

我的空白声明如下:

或者,这可能是由于模棱两可的问题吗?

这是完整的语法文件(随意忽略前几个块,它们覆盖了 ANTLR 的默认错误处理机制:

0 投票
2 回答
662 浏览

visual-studio-2010 - 在 VS2010 中寻找 Antlr Grammar 语法高亮

我正在寻找一些方法来直接在 VS2010 中编辑 antlr 语法文件,并带有语法高亮。

我经常使用 antlrworks,但它的缺点是我必须单独启动 antlrworks,然后浏览到我要编辑的文件,进行更改并保存。对于较小的修复,我不需要 Antlrworks 中的所有工具,但我仍然想要语法高亮。

但是我无法让 VS2010 使用正确的文件打开 antlrworks,而且我没有找到其他方法可以直接在 VS2010 编辑器中获得语法高亮,它只是以纯文本形式打开。

我可以让visual studio打开antlrworks,但它只会打开它打开的最后一组文件,而不是我点击的那个。

所以我的问题是:

当我在visual studio项目资源管理器中双击它时,有没有办法让antlrworks用正确的文件打开?

有没有其他方法可以在 Visual Studio 中为 antlr 语法文件获得正确的语法高亮显示(或使用其他编辑器,最好不要花钱,但如果没有免费的,则可以选择商业编辑器)。