antlr相关内容

Antlr 和 PL/I 语法

现在我们想要PL/I的语法,基于Antlr4的COBOL.有没有人提供这些语法如果没有,您能否分享您从头开始开发这些语法的想法/经验谢谢 解决方案 我假设您指的是 IBM PL/I 和 COBOL.(周围没有很多其他 PL/Is,但我认为这不会真正改变答案). 寻找成熟的 ANTLR 语法的明显地方是 ANTLR3 语法库;那里没有 PL/1 或 COBOL 语法.Antlr V4( ..
发布时间:2021-11-11 04:04:23 其他开发

ANTLR4:无关输入错误

我正在关注“权威 ANTLR4 参考"一书,并决定在他们的计算器语法中添加几个关键字以帮助清理记忆.构建语法并编译生成的 Java 代码工作正常,但是当我执行访问者代码时,我收到错误:"line 6:0 extraneous input '$rem' expecting {, '(',ID, INT, NEWLINE}" 和第 8:0 行的 '$clearmem' 相同. 这是我的 ..
发布时间:2021-11-11 04:04:11 其他开发

ANTLR4 只跳过空行

我正在使用 antlr4 解析文本文件,而且我是新手.这是文件的一部分: abcdef//空行abcdef 在文件流字符串中,它将如下所示: abcdef\r\n\r\nabcdef\r\n 就ANTLR4而言,它提供了“跳过"方法,可以在解析时通过正则表达式跳过空格、制表符和换行符等内容.即 WS : [\t\s\r\n]+ ->跳过 ;//跳过空格、制表符、换行符 我的问题是我只想 ..
发布时间:2021-11-11 04:04:02 其他开发

如何检查一行的第一个字符是否为“*"?在 ANTLR4 中?

我正在尝试为一种相对简单但特殊的语言编写解析器. 简单地说,其中一条规则是注释行用星号表示仅,如果该星号是行的第一个字符.我该如何在 ANTLR4 中正式化这样的规则?我想过使用: START_LINE_COMMENT: '\n*' .*?'\n' ->跳过; 但我确信这不会连续处理多于一行的注释,因为末尾的换行符将作为 START_LINE_COMMENT 标记的一部分使用,这意味着任 ..
发布时间:2021-11-11 04:03:54 其他开发

有没有办法生成单元测试来测试我的语法

我使用 antlr4 创建了我的语法,但我想测试鲁棒性 是否有自动工具或快速完成此操作的好方法 谢谢:) 解决方案 我发现为语法创建单元测试的唯一方法是根据给定语言的书面规范创建许多示例.这既不快也不完整,但我看不出其他方法. 您可能会想直接从语法中创建测试用例(为此编写一个工具并不难).但是想一想.那你要测试什么?您的单元测试总是会成功的,除非您使用从早期版本的语法生成的测 ..
发布时间:2021-11-11 04:03:51 其他开发

ANTLR4 - 如何在 ANTLR 中获取令牌 TYPE 作为令牌文本?

假设我有一个包含如下标记的语法: AND : 'AND' |'和' |'&&'|'&';或:'或' |'或' |'||'|'|';不是:'不是' |'不是' |'~' |'!'; 当我使用 TreeViewer 可视化 ParseTree 或使用 tree.toStringTree() 打印树时,每个节点的文本与匹配的内容相同. 因此,如果我解析“A 和 B 或 C",两个二元运算符将是 ..
发布时间:2021-11-11 04:03:42 其他开发

Antlr4-JS 语法中的动作:如何访问令牌并定义 funcs ?(直接在java中,而不是在JS中)

我正在尝试适应 JS 目标 本书的 Expr.g4. 在这个例子中,动作直接在语法中.它们包括在@parser::members 中定义的实用函数,这些函数在规则中被调用. 该示例在 Java 中运行良好,但在其 JS 翻译中我有两个问题: 获取动作规则可见的动作函数 获取函数中识别的令牌. 我终于设法得到这个有效的公式: @parser::members {myeval ..
发布时间:2021-11-11 04:03:34 前端开发

修改表达式,由 Antlr 生成?

我想用 Antlr4 读取表达式并对其进行一些修改. 例如,如果语法是算术,我会修改表达式,表示 2 * (3 + 1) 与 2 * 4 然后用 8 这是“计算"或“简化".为了执行这件事,我会创建一些树结构,第一个想法是使用由 Antlr 创建的完全相同的树. 很遗憾,我没有看到任何适合儿童的二传手. 如何实现?我真的应该用我自己的 Antlr 树复制表达式逻辑吗? ..
发布时间:2021-11-11 04:03:17 Java开发

如何使用 Gradle 2.10 将 ANTLR 词法分析器语法导入另一个语法?

我一直在通过 Terence Parr 的权威的 ANTLR 4 参考了解 ANTLR 4,到目前为止我一直在使用 Gradle 2.10 及其内置的 ANTLR 插件.但是,我在获取一些从第 4 章第 38-41 页改编的代码以与我的 Gradle 构建脚本一起正常工作时遇到了一些麻烦.(我使用 Gradle 而不是直接使用 ANTLR 的原因是我想最终将 ANTLR 集成到我正在为我的论文制作 ..
发布时间:2021-11-11 04:03:14 Java开发

ANTLR4 在 Python 中生成解析器很慢,但在 Java 中很快

我正在尝试将 ant ANTLR3 语法 转换为 问题是解析很慢.一个包含约 200 行的文件需要 5 多分钟才能完成,而在 antlrworks 中解析同一个文件只需要 1-2 秒.分析 antlrworks 树,我注意到 expr 规则及其所有后代经常被调用,我认为我需要简化/更改这些规则以使解析器运行得更快: 我的假设是正确的还是我在转换语法时犯了一些错误?怎样做才能使解析像在 ..
发布时间:2021-11-11 04:03:02 Java开发

R 是否有现有的 ANTLR 或 IRONY 语法?

有谁知道 R 是否存在现有的 ANTLR 或 IRONY 语法? 非常感谢. 解决方案 我已经为抢先体验的“Honey Badger"ANTLR v4 版本构建了一个 R 语法,如果您想看一看的话.请参阅 ANTLR v4 示例页面.v4 的来源是 https://github.com/antlr/antlr4.二进制 jar 在这里:http://antlr.org/downloa ..
发布时间:2021-11-11 04:03:00 其他开发

如何在 Eclipse 中使用 Antlr4 Ide 查看实时解析树?

我是使用 Antlr4 的新手,但我知道存在一个 Eclipse 插件.我有一个简单的问题......在我创建了 g4 文件之后,我如何可视化实时解析树以查看输入表达式的树?谢谢 解决方案 目前在 用于 Eclipse 的 ANTLR 4 IDE. 同时,您可以在命令行中使用 -gui 开关查看解析树.它还提供了将解析树保存为 PNG 的功能. ..
发布时间:2021-11-11 04:02:51 Java开发

ANTLR4:隐式或显式令牌定义

在 ANTLR4 中使用显式令牌定义的优点和缺点是什么?我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性和更易于使用. 例如: grammar SimpleTest;顶部:图书馆 |模块 ;图书馆:'图书馆' library_name ';';图书馆名称:标识符;模块:模块 module_name ';';模块名称:标识符;模块:'模块';标识符:[a-zA-Z0-9]+; ..
发布时间:2021-11-11 04:02:31 其他开发

Antlr4 语言翻译 - 将模板逻辑与访问者类分开?

我正在考虑将大量相对简单的 TSQL 代码切实地转换为 Groovy 代码.肯定有很多原因,但驱动原因只是看是否可以完成,并在此过程中了解编译器/语法/等. Antlr4 似乎是解决这个问题的理想工具(Java 是加分项). 标记/解析 TSQL(使用语法文件),并使用生成的 Listener/Visitor 读取树非常简单. 我知道我可以在继承的访问者中创建 Groovy 代码 ..
发布时间:2021-11-11 04:02:28 其他开发

antlr4:如何知道在给定上下文的情况下选择了哪个选项

假设有一个关于“类型"的规则.它是预定义的类型(由 IDENTIFIER 引用)或 typeDescriptor. 类型: 标识符|类型描述符; 在我的程序中,我有一个 typeContext 'ctx' 的实例.我怎么知道是选择了路径 IDENTIFIER,还是选择了 typeDescriptor. 我知道一种方法是测试 ctx.IDENTIFIER() == null 和 ctx.t ..
发布时间:2021-11-11 04:02:22 其他开发

Lexer 前瞻如何与 ANTLR3 和 ANTLR4 中的贪婪和非贪婪匹配一起使用?

如果有人能让我从前瞻关系与涉及贪婪/非贪婪匹配的标记化背后的困惑中清醒过来,我会非常高兴.请注意,这是一篇略长的帖子,因为它遵循了我的思考过程. 我正在尝试编写允许我匹配输入的 antlr3 语法,例如: “标识符关键字" 我想出了一个类似 Antlr 3.4 的语法: KEYWORD: '关键字' ;标识符:(选项 {greedy=false;}: (LOWCHAR|HIGH ..
发布时间:2021-11-11 04:02:13 其他开发

出于语法突出显示的目的,是否建议使用标记?

我正在尝试使用 Xamarin 在 Android 上的 C# 中实现语法突出显示.我正在使用 C# 的 ANTLR v4 库来实现这一点.我的代码,目前使用 这个语法高亮语法a>,不会尝试构建解析树并使用访问者模式.相反,我只是将输入转换为令牌列表: 私有静态 IList标记化(字符串文本){var inputStream = new AntlrInputStream(text);var le ..
发布时间:2021-11-11 04:02:10 C#/.NET

使用 ANTLR4 解析并返回双精度列表

如何使用 ANTLR4 在 C# 中将包含十进制数字的文件解析为 List?一个完整的、有效的示例将说明所有部分是如何组合在一起的. 输入文件如下所示: 12.3445.6789.10 解决方案 这是对不同问题的旧答案的更新版本,展示了使用 C# 和 ANTLR4 完成此任务的一种方法. 语法 语法值;解析 : (number ( LINEBREAK | EOF ) )* ;数 ..
发布时间:2021-11-11 04:02:08 C#/.NET