antlrworks相关内容

ANTLR词法分析器规则即使不匹配也会消耗字符?

我有一个反语言词典规则的奇怪副作用,并且我创建了一个(几乎)最小的工作示例来演示它. 在此示例中,我想例如匹配字符串[0..1].但是,当我调试语法时,到达解析器的令牌流仅包含[..1].第一个整数,无论​​它包含多少个数字,总是会消耗掉,而且我不知道它是如何发生的.如果我删除FLOAT规则,一切都很好,所以我猜错误出在该规则的某处.但是由于它根本不匹配[0..1]中的任何内容,所以我很困惑. ..
发布时间:2020-06-20 18:34:57 其他开发

^和!是什么?在ANTLR语法中代表

我很难弄清楚^和!是什么.代表ANTLR语法术语. 解决方案 看看 ANTLR速查表: !不在AST中 ^创建AST根节点 和^也可以用于重写规则:... -> ^( ... ).例如,以下两个解析器规则是等效的: expression : A '+'^ A ';'! ; 和: expression : A '+' A ';' -> ^('+' ..
发布时间:2020-06-20 18:34:55 其他开发

ANTLR4:隐式或显式令牌定义

在ANTLR4中使用显式令牌定义的优点和缺点是什么?与创建单独的标记并代替文本使用令牌相比,我发现在单个括号中的文本更具描述性,更易于使用. 例如: grammar SimpleTest; top: library | module ; library: 'library' library_name ';' ; library_name: IDENTIFIER; ..
发布时间:2020-06-20 18:34:48 其他开发

有谁知道在ANTLRWorks中调试树语法的方法

使用ANTLR的推荐模式是让解析器构造一个抽象语法树,然后构建树遍历器(AKA树语法)来处理它们. 我试图弄清为什么我的树语法无法正常工作,并且希望像使用解析器本身一样使用ANTLRWorks的调试器.解析器的输入是“源代码",而树解析器的输入是解析器的AST结果.我没有看到如何将其用作测试树语法的输入. 目前尚不清楚是否有一种方法可以在ANTLRWorks中测试树语法.如果可以做到, ..
发布时间:2020-06-20 18:34:45 其他开发

是“解析器规则中的隐式令牌定义"吗?有什么需要担心的吗?

我正在使用ANTLR和ANTLRWorks 2创建我的第一个语法.我基本上已经完成了语法本身(它可以识别用所描述的语言编写的代码并构建正确的解析树),但是我还没有开始做任何其他事情. 让我担心的是,在解析器规则中第一次出现令牌时,都会用黄色的下划线标出“在解析器规则中隐含令牌定义". 例如,在此规则中,'var'具有该形式: variableDeclaration: 'var' ..
发布时间:2020-06-20 18:34:43 其他开发

antlr3-生成解析树

我在弄清antlr3 API时遇到了麻烦,因此我可以在一些javascript代码中生成并使用解析树.当我使用antlrWorks(其IDE)打开语法文件时,解释器可以向我显示语法分析树,它甚至是正确的. 在使用antlr3运行时在我的代码中跟踪如何获取此解析树的资源方面,我遇到了很多困难.我一直在弄乱运行时文件和解析器文件中的各种功能,但无济于事: var input = "(PR= ..
发布时间:2020-06-20 18:34:37 其他开发

ANTLR 4什么时候需要EOF?

ANTLRWorks2中的 TestDriver 似乎有点挑剔,它何时会接受不带显式EOF的语法,何时不接受. ANTLR4入门中的 Hello 语法《入门指南》 不在任何地方使用EOF,因此我推断最好避免使用显式的EOF. 使用EOF的最佳实践是什么?您何时真正需要它? 解决方案 在您尝试解析整个输入文件时,应在输入规则的末尾添加一个显式的EOF.如果不包括EOF,则表示您不尝试解 ..
发布时间:2020-06-20 18:34:35 其他开发

如何处理ANTLR中的列表返回值

在ANTLR中解决此问题的正确方法是什么? 我有一个简单的语法规则,比如说一个具有任意数量元素的列表。 p> 列表 :'[]' | '['value(COMMA value)*']' 如果我想为列表,并将该值作为生产中返回值的实际列表,执行此操作的正确方法是什么?我正在娱乐的替代方法是: 在全局范围内创建自己的堆栈以跟踪这些列表 尝试检查我下面的树 ..
发布时间:2020-06-01 00:46:28 其他开发

如何在语法或解析错误上引发有意义的错误

我有一个解析jcl的语法 jcl如下所示 /*注释行 //PR1290 @ JOB(10),"ISPW COB SN900E" 词法分析器和解析器工作正常. 假设而不是//如果jcl从/开始,当前lexer在以下位置抛出1:0令牌识别错误:'/P' 解析器不会抛出任何可行的替代输入R1290 @ JOB 我正在寻找在编辑时抛出类似于eclipse的错误. public ..
发布时间:2020-05-25 01:58:56 Java开发

如何删除以下语法中的左递归?

不幸的是,当规则传递了参数时, ANTLR 无法支持直接左递归.唯一可行的选择是删除左递归.有没有一种方法可以消除以下语法中的左递归? a[int x] : b a[$x] c | a[$x - 1] ( c a[$x - 1] | b c ) ; 问题出在第二种选择中,涉及左递归.任何帮助将不胜感激. ..
发布时间:2020-05-25 01:42:32 其他开发

解析不完整的语法

有什么通用的解决方案如何使用不完整的语法?就我而言,我只想检测Delphi(Pascal)文件中的方法,这意味着procedures和functions.以下第一次尝试有效 methods : ( procedure | function | . )+ ; 但这是一个解决方案吗?有更好的解决方案吗?是否可以通过某个动作停止解析(例如,在检测到impleme ..
发布时间:2020-05-25 01:08:12 其他开发

ANTLR/语法问题:计算器语言

我正在尝试为个人项目创建布尔表达式语言/语法.用户将能够使用类似Java的语法编写字符串,并提供变量,这些变量将在变量初始化后的稍后时间进行评估. 雨 例如,用户可能输入字符串 @FOO+7 > 4*(5+@BAR); 稍后,当变量FOO初始化为6且BAR等于1时,表达式的计算结果为13> 24,因此返回false. 我正在使用ANTLRworks生成语法,尽管看起来不错,但它不能 ..
发布时间:2020-04-30 10:11:50 Java开发

ANTLR java测试文件无法创建树语法对象

我正在使用针对java的ANTLR 3.x创建一个解析器。我编写了解析器语法(用于创建抽象语法树,AST)和树语法(用于在AST上执行操作)。最后,为了测试两个语法文件,我用Java编写了一个测试文件。 看看下面的代码, 协议语法 语法协议; 期权{ language = Java; 输出= AST; } 代币{//虚构代币 PROT; INITIALP; ..
发布时间:2019-01-09 21:01:27 Java开发

生成无效java异常的ANTLR会抛出代码

这些天我一直在使用ANTLRwork 1.5和antlr runtime 3.5。这是我发现的一个奇怪的事情: Antlr为我生成这种java代码: public final BLABLABLAParser .addExpression_return addExpression()抛出{ blablabla ... } 通知这个函数什么都不抛出,这在java中是无效 ..
发布时间:2019-01-02 21:51:21 Java开发

ANTLR和Eclipse(或任何体面的IDE)

我一直在使用ANTLR与Eclipse一段时间使用ANTLRv3IDE插件。虽然它不是完美的,有点过时,它的工作相当不错。 现在我正在寻找转换为ANTLRv4为我正在创建的另一个DSL。然而,Eclipse支持似乎非常薄。我决定试用ANTLRWorks,这是一个NetBeans插件,但是我无法安装它(似乎被锁定到特定的日期版本(201302132200,而我有更新的东西,依然是7.3)依赖关 ..
发布时间:2017-07-29 00:10:33 Java开发

ANTLRWorks调试 - 不同颜色的含义?

我正在使用ANTLRWorks的调试模式来测试我的c语法。在ANTLRWorks中的调试非常有助于更好地理解,但是在理解输出树的不同颜色方面有一个问题。我在我的语法中使用 backtrack = true 。我认为红色意味着调试器错误的方式,而绿色告诉我它已经走了正确的方式。但是深红色和深绿色呢? 我添加了一个“小树”的图片,它只匹配以下输入: int test; ..
发布时间:2017-04-18 00:38:56 开发方法

AntlrWorks&语言语法错误

使用涉及脚本语言的游戏项目,我想将其解释为可以直接执行的虚拟机代码。我已经包括了下面的语法。所有词法规则在语法图中正确显示,但是当我点击任何解析器规则的主体时,由于给定的解析器规则X,我得到“无法显示规则”X,因为未找到开始状态“ / p> 我不太确定为什么ANTLR抱怨没有开始状态。语法应该清楚地从codeline开始,它没有被任何其他解析器规则引用。此外,右上方的框是绿色的,表示没有语法 ..
发布时间:2016-12-22 23:27:57 其他开发