我有一个 ANTLR4 语法,它有一个解析器规则行,如下所示: 此规则是用于定义expression的大型复合规则的一部分。 然而,现实情况是,只有实际表达式类型的子集对赋值的左侧有效,但由于左递归问题,我无法将解析器规则分解为那些特定的表达式子集。 我想做的是在匹配规则时将自定义代码插入生成的解 ...
我有一个 ANTLR4 语法,它有一个解析器规则行,如下所示: 此规则是用于定义expression的大型复合规则的一部分。 然而,现实情况是,只有实际表达式类型的子集对赋值的左侧有效,但由于左递归问题,我无法将解析器规则分解为那些特定的表达式子集。 我想做的是在匹配规则时将自定义代码插入生成的解 ...
我有以下代码接受我的输入文件的输入: 但是当我调用 parser.program() 时,我的程序会正常运行。 但是,我需要一种方法来验证输入文件在语法上是否正确,以便用户无需运行脚本(针对特殊机器运行)即可进行验证。 Antlr4csharp 是否很容易支持这个? ...
我刚刚开始使用 antlr,所以我非常感谢您的帮助,我只是想制定一个变量声明声明规则,但它不起作用! 我把我正在使用的文件放在下面,如果您需要其他任何东西,请 lmk! 输入代码: 语法 G4 文件: 我得到的错误: ...
我正在构建的应用程序针对的是讲葡萄牙语的用户。 用户可以输入一个由 ANTLR 解释的句子。 为了向用户提供他们输入的最佳反馈,我需要用葡萄牙语显示错误。 我没有找到可以像在其他一些库中那样更改错误标记的配置或文件。 ...
您好我目前正在尝试从 C# 中的 ANTLR 中提取所有标记,我正在使用 Antlr4.CodeGenerator 和 Antlr4.Runtime 包。 我希望它们以一种我可以操纵它们、改变它们的内容等等的方式结构化。 我尝试过使用监听器和访问者,但一无所获,所以我的意图是用包含其内容、规则和令 ...
我的简单表达式的 ANTLR 语法如下: 除了我尝试使用负数时,该语法适用于大多数情况。 或者,如果表达式只是一个负数,例如-1.344 ,我会在控制台中遇到以下错误。 ...
我的情况是,使用 ANTLR,我正在尝试解析包含对其中其他文件的引用的输入文件,就像 C 语言的#include "[insert file name]"一样。 一种建议的方法是: 解析根文件,将所述引用保存为节点(因此,特定的语法规则) 访问树搜索“参考”节点对于每个引用节点,解析引用的文件并用新 ...
我试图匹配括号之间的所有内容。 我遇到了一个错误,它无法识别“&”和“”。 但是,在 IntelliJ antlr 预览版中,它运行良好。 请帮我解决这个错误。 太感谢了。 第 1:0 行标记识别错误:“&” 第 3:23 行标记识别错误:“&” 第 3:30 行令牌识 ...
我重新阅读了所有文档,但仍然没有得到我到底需要做什么。 请逐步解释我需要做什么才能在 VS2019(对于 C#)中使用 Antlr 设置工作,以及之后如何将 .g4 编译为 .cs。 我是否需要安装 Antlr4 或 Antlr4.Runtime 或 Antlr4.Runtime.Standard? ...
对于 .net 框架 4.8,我无法获得更简单的语义谓词来使用 Antlr 4.6.6,下面的语法找不到可行的输入替代方案 . 更新:这是我的问题的简化。 是否有可能有一个语法可以将这个“received:last week”解析为“received”“last week”,前提是“last we ...
我一直在尝试实现访问者模式以将一些特定的 SQL 语句解析为由 TableDefinition 和 ColumnDefinition 对象组成的内部 object 结构。 这是语法中的一小部分(精简): 这是派生的 BaseVisitor 之一,它旨在返回 ColumnDefinitions: 当 ...
我定义了一个 ANTLR4 语法,其中词法分析器和解析器位于两个不同的文件中。 这是一种类似于 XML 的语法。 在我的解析器中,我也想定义一个表达式,该表达式可以将自身重新用于计算目的(如“(1+1)*2”)。 我添加的最后一件事是expression PLUS expression ,从那时 ...
我有以下语法: 当我输入以下文字时,它应该有效 当我输入以下文本时出现错误: 我觉得应该报错,bug antlr 没有做,antlr 捕获了之前的“-1.1”,丢弃了“ffff”,但是我想改变这个行为,没有丢弃无效的token,而是抛出异常,报告检测无效令牌。 那我该怎么办,谢谢你的建 ...
有没有办法为词法分析器的谓词提供当前令牌的值? 例如,在我的lexer grammar FlowLexer ,我动态加载令牌: 在解析之前,我会动态加载令牌: 然后在解析/词法分析期间, TokenExists谓词称为: 但是,如何将令牌值传递给TokenExists谓词 ...
我正在尝试为C#创建我的第一个antlr4语法,并且遇到以下异常: System.NotSupportedException:无法使用UUID反序列化ATN aadb8d7e-aeef-4415-ad2b-8204d6cf042e(预期为ab35191a-1603-487e-b75a- ...
在这个问题中,我问过从任意文本中提取标签的问题 。 提供的解决方案效果很好,但是我想处理一种情况。 回顾一下,我正在解析任意用户输入的文本,并希望出现<或>任何内容以符合有效的标记语法。 如果尖括号不是有效标签的一部分,则应将其转为&lt; 或&gt; 。 ...
我是Antlr的新手,所以请原谅这可能是一个非常简单的问题。 我正在创建一个解析类似Excel的公式的语法,它需要支持基于列表分隔符(对于en-US)和小数点分隔符(。对于en-US)的多个语言环境。 我宁愿不要在基于区域设置的单独语法之间进行选择。 我可以修改或继承CommonT ...
我在调试适用于Gameboy Assembly的ANTLR语法时遇到问题。 它似乎正常工作,但由于某些原因,在某些情况下无法处理十六进制的0x表示法。 如果我的输入字符串是“ JR 0x10”,则antlr失败,并显示“输入时没有可行的选择”错误。 据我了解,这意味着我要么没有规则来解 ...
我正在尝试创建行首令牌: 但是上面发出错误 创建此代码时: getCharPositionInLine()方法不存在的地方... ...
参考此链接 。 它显示了如何从Antlr3上的任何infix表达式创建lisp样式s-表达式。 我正在使用Antlr4,但似乎无法使用。 有人可以建议我一些实现它的方法吗? 2x+3x^5至(+ (* 2 x) (* 3 (^ x 5))) ...