问题标签 [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.
antlr - 在 ANTLR 中生成简单的 AST
我正在玩一些 ANTLR,并希望创建一个这样的函数:
这会产生以下 AST:
到目前为止,我已经尝试过没有运气,并且我不断让 AST 将参数作为兄弟姐妹,而不是孩子。
到目前为止的代码:
C#:
ANTLR:
antlr - ANTLR 重写查询文本以重复具有较早节点的文本
我是 ANTLR 的新手,正在尝试使用以下方法解析查询
这似乎适用于一般查询。但是,a near (b or c)
实际需要处理的情况为:
并且a near (b or c and (d or e))
需要处理为:
我无法确定如何执行此操作。非常感激任何的帮助。
谢谢
antlr - Antlr 3.2 重写规则
我最近开始学习 Antlr 并下载 AntlrWorks 1.4,据说它包括 Antlr 3.2。现在,3.2 应该支持重写规则语法,如 '->' 但我什至无法获得我可以基于 Lexer 或 Parser 规则构建的最简单的情况:
当我尝试编译它时,我得到了错误:
为什么是这样。构造看起来很简单:ab 应该生成一棵树,其中只捕获 a 节点。你不就是这样吗?我不能让它与生根('^')或忽略('!')一起工作。我很困惑。
antlr - ANTLR AST 构建问题
我无法获得 AST
使用以下语法
我想制作一个应该显示单词和运算符的 AST,以便
即我的要求是这样的:
相反,我得到的是:
实际上,我指的是 MultiwordNode 下的 AST(或在“原子”级别生成)
它应该像
(对不起我画的不好:))
问题是,如果运算符不带引号出现,它应该是其兄弟的头部(正如它在 AST 中所指的那样)。但是当它出现在一些带引号的文本中时,它应该像其他词一样被捕获......
compiler-construction - AntlrWorks 和语言语法错误
从事涉及脚本语言的游戏项目,我想将其解释为可以直接执行的虚拟机代码。我已经包含了下面的语法。所有词法分析器规则都在语法图中正确显示,但是当我单击任何解析器规则的主体时,对于给定的解析器规则 X,我得到“无法显示规则“X”,因为找不到开始状态”。
我不太确定为什么 ANTLR 抱怨没有启动状态。语法应该明确地从代码行开始,任何其他解析器规则都没有引用它。另外,右上角的框是绿色的,表示没有语法错误。
我梳理了其他一些留言板帖子,以及 ANTLRv3 示例语法下载中提供的许多语法,但它们都没有任何特殊代码向 ANTLR 指示哪个解析器规则是起始状态。我觉得一些简单的东西被打破了,但我对那到底是什么陷入了僵局。
任何建议或帮助将不胜感激!即使它只是沿着“去读这个”的路线。
antlr - 使用antlrworks解决左递归
嗨,我想编写一个语法(使用 ANTLRWORKS),稍后(在调试模式下)接受此代码
感谢您的帮助
java - 为什么在 Antlr 中导入词法分析器时会出现 NullPointerException?
我正在使用 antlr 3 和 Antlrworks。这是我的设置:
lexer Base //包含基本标记 - 如 WS、数字等。
lexer Specific //包含我的语言特定标记 - 并且派生自 Base lexer
特定于解析器的//我的语言的解析器
组合语法 -> 导入特定的词法分析器和特定的解析器
当我生成时,我总是得到一个 NPE(在 Java 中)。原因是生成的特定词法分析器中对 Base 词法分析器的引用没有初始化。
我错过了什么吗?
c - AntlrWorks 不想调试 C 目标代码
我正在尝试远程调试以 C 为目标的语法。AntlrWorks 可以很好地连接到解析器,但它只是将它运行到最后。我不能真正踩它也不能打破它。
我正在使用 AntlrWorks 1.4.2。解析器是使用 Antlr 3.2 生成的。
任何建议表示赞赏。
是否有人在使用 antlrworks 调试 C 目标代码方面取得了成功?
whitespace - ANTLR 空白问题(不是典型的问题)
考虑这个简短的 SmallC 程序:
如果我在 ANTLWorks 中以及在使用解释器时指定行尾 ->“Mac (CR)”,我的 ANTLR 语法就可以很好地接受它。如果我将行尾选项设置为 Unix (LF),则语法会抛出 NoViableAltException 并且在 include 语句结束后不识别任何内容。如果我在包含末尾添加换行符,此错误就会消失。我为此使用的计算机是 Mac,所以我认为必须将行尾设置为 Mac 格式是有意义的。因此,我改用 Linux 机器——得到了同样的结果。如果我在 ANTLRWorks Interpreter 框中键入任何内容,并且如果我没有选择行尾 Mac (CR),则会出现上述情况下空行不足的问题,此外,每个语句块的最后一条语句都需要分号后面的额外空格(即在 bob; 之后)。
当我在要解析的代码输入文件上运行 Java 版本的语法时,这些错误再次出现......
可能是什么问题?我会理解问题是否存在太多新行,格式可能解析器不理解/没有被我的空格规则捕获。但是在这种情况下,这是缺少新行的问题。
我的空白声明如下:
或者,这可能是由于模棱两可的问题吗?
这是完整的语法文件(随意忽略前几个块,它们覆盖了 ANTLR 的默认错误处理机制:
visual-studio-2010 - 在 VS2010 中寻找 Antlr Grammar 语法高亮
我正在寻找一些方法来直接在 VS2010 中编辑 antlr 语法文件,并带有语法高亮。
我经常使用 antlrworks,但它的缺点是我必须单独启动 antlrworks,然后浏览到我要编辑的文件,进行更改并保存。对于较小的修复,我不需要 Antlrworks 中的所有工具,但我仍然想要语法高亮。
但是我无法让 VS2010 使用正确的文件打开 antlrworks,而且我没有找到其他方法可以直接在 VS2010 编辑器中获得语法高亮,它只是以纯文本形式打开。
我可以让visual studio打开antlrworks,但它只会打开它打开的最后一组文件,而不是我点击的那个。
所以我的问题是:
当我在visual studio项目资源管理器中双击它时,有没有办法让antlrworks用正确的文件打开?
有没有其他方法可以在 Visual Studio 中为 antlr 语法文件获得正确的语法高亮显示(或使用其他编辑器,最好不要花钱,但如果没有免费的,则可以选择商业编辑器)。