antlr相关内容

用于字母数字单词的 ANTLR 解析器,它们之间可能有空格

首先我尝试识别一个正常的单词,下面的工作正常: 语法测试;我的令牌:字;单词:(小写 | 大写)+ ;片段小写:[a-z];片段大写:[A-Z];片段数字:'0'..'9';空格 : (' ' | '\t')+; 就在我在“myToken"下面添加解析器规则时,即使我的 WORD 标记也没有被输入字符串识别为“abc" ALPHA_NUMERIC_WS: ( WORD | DIGIT | W ..
发布时间:2021-11-11 04:12:18 其他开发

ANTLR 识别单个字符

我很确定这是不可能的,但我想问一下以防万一. 我有通用 ID 令牌定义: ID: LETTER (LETTER | DIG)*; 问题是在我需要解析的语法中,有一些指令将单个字符作为操作数,例如: a + 4 但是 ab + 4 不可能. 所以我不能写这样的规则: sum: (INT | LETTER) ('+' (INT | LETTER))* 因为 lexer 会将 ..
发布时间:2021-11-11 04:12:14 其他开发

为什么 antlr4 将我的句子解析为两个语句?

我正在为表达式编写一个小解析器.目前我只是想让它识别二进制乘法 (myId * myId) 和类似 C 的解引用指针 (*myId),加上一些赋值语句 (myId*= myId). 使解析器抛出错误的输入是: x *= y; ...解析器失败并显示此消息和解析树: [line 1:1 不匹配的输入 '*' 期望 {';', NEWLINE}](sourceFile (statement ..
发布时间:2021-11-11 04:12:09 其他开发

如何解决歧义

我有一个语法: 语法测试;s : ID OP (NUMBER | ID);ID : [a-z]+ ;数字 : '.'?[0-9]+ ;操作:'/.'|'/';WS : [ \t\r\n]+ ->跳过 ; 像 x/.123 这样的表达式既可以解析为 (sx/. 123),也可以解析为 (sx/.123).通过上面的语法,我得到了第一个变体. 有没有办法得到两个解析树?有没有办法控制它的解析 ..
发布时间:2021-11-11 04:12:00 其他开发

使用 ANTLR4 在语法中对词法分析器规则进行排序

我正在使用 ANTLR4 来生成解析器.我是解析器语法的新手.我已经阅读了非常有帮助的 ANTLR Mega 教程,但我仍然坚持如何正确订购(和/或编写)我的词法分析器和解析器规则. 我希望解析器能够处理这样的事情: 你好>,你好吗? 在运行时,我会用用户名替换“>". 所以我主要是在解析文本单词(以及标点符号、符号等),除了偶尔的“ ..
发布时间:2021-11-11 04:11:57 其他开发

ANTLR4 - 需要对此字符串文字的解释

在我的作业中,我有关于字符串词法分析器的描述: "字符串字面量包含零个或多个由 double 括起来的字符引号 (").使用转义序列(如下所列)表示特殊字符串中的字符.这是一个新行的编译时错误或出现在字符串文字中的 EOF 字符. 所有支持的转义序列如下: \b 退格 \f 换页 \r 回车 \n 换行 \t 水平制表符 \" 双引号 \反斜杠 ..
发布时间:2021-11-11 04:11:54 其他开发

处理 ANTLR4 中单引号和双引号字符串的范围

我正在使用 ANTLR4,并且正在编写处理单引号和双引号字符串的语法.我正在尝试使用 Lexer 模式来确定字符串的范围,但这对我不起作用,下面列出了我的语法.这是正确的方法还是我如何正确地将这些解析为标记而不是带有上下文的解析器规则.有什么见解吗? 示例: 's single quote that contains "a double quote 'that has another si ..
发布时间:2021-11-11 04:11:52 其他开发

Android 应用程序中的 Gradle ANTLR4 插件:构建失败

我花了几天时间发现这个问题,我想在这里发布我的发现. 我正在构建一个包含多个模块的 Android 应用程序,其中一个模块使用 ANTLR 插件.虽然带有 ANTLR 的模块构建正常,因为它是一个 Java 模块,但 android 模块在 transformClassesWithDexForDebug 任务中失败: * 出了什么问题:任务 ':Android:transformClass ..
发布时间:2021-11-11 04:11:46 移动开发

antlr 语法避免尖括号

在这个问题中,我询问了从任意文本中提取标签的问题.提供的解决方案运行良好,但我想处理一个边缘情况.回顾一下,我正在解析任意用户输入的文本,并希望任何出现的 或 > 符合有效的标记语法.如果尖括号不是有效标记的一部分,则应将其转义为 < 或 >.我正在寻找的语法是 其中 foo 是来自固定条目列表的文本,123 是一个数字[0-9]+.解析器: parser 语法 ..
发布时间:2021-11-11 04:11:43 C#/.NET

词法分析器处理带有行号前缀的行

我正在为一种如下所示的语言编写解析器: L00>L10>L250 < 标识符>> 也就是说,每一行可能以也可能不以 Lxxx.. 形式的行号开头('L' 后跟一个或多个数字),后跟一个标识符或一个关键字.标识符是标准的[a-zA-Z_][a-zA-Z0-9_]*,L 后面的数字位数不是固定的.行号和后面的标识符/关键字之间的空格是可选的(大多数情况下不存在). 我当前的词法分 ..
发布时间:2021-11-11 04:11:34 其他开发

是否可以让 Antlr4 从基本语法词法分析器而不是一般词法分析器生成词法分析器?

我有名为 BasicTokens 的 lexer 语法,它是我的语言的一组基本标记,具有像 null、true、false 等 现在,当我创建解析器语法时说 BasicGrammar 导入引用 BasicTokens 和另一个名为 InheritedGrammar 的语法导入 BasicGrammar. 当 Antlr4 为 InheritedGrammar 生成解析器时,它包含了 B ..
发布时间:2021-11-11 04:11:19 Java开发

ANTLv4 中的 Flex 'r/s'

弹性:‘r/s’ 一个“r",但前提是它后面跟着一个“s".在确定此规则是否为最长匹配时,包含与“s"匹配的文本,但在执行操作之前将其返回到输入.所以动作只看到与“r"匹配的文本.这种类型的模式称为尾随上下文.(有一些 'r/s' 的组合不能正确匹配.参见限制,关于危险的尾随上下文.) 在 ANTLRv4 中如何做到这一点? 解决方案 我主要通过两种方式完成了这项工作. ..
发布时间:2021-11-11 04:11:16 其他开发

初始化我的词法分析器会在 Antlr4 中引发错误

嗨,团队, 我是 Antlr 的新手,我花了 4 天时间尝试学习、安装、运行教程并与我的 IDE 集成.:( 我可以在终端中成功运行这个 [教程][1].我现在的目标是使用 AntlrWorks2 在 Netbeans 中运行相同的教程,我已经从 [Here][2] 蚕食了 Main. 代码可以编译,但是当我运行时,我从 Lexer 的 init 中得到一个“java.lang.Ex ..
发布时间:2021-11-11 04:11:04 Java开发

Antlr4:不匹配输入

我的语法: qwe.g4 grammar qwe;询问: 列运算符值 EOF;柱子: [a-z_]+;操作员: ('='|'>'|'跳过 ; 在 Python 代码中处理: qwe.py from antlr4 import InputStream, CommonTokenStream从 qweLexer 导入 qweLexer从 qweParser 导入 qweParser条件 ..
发布时间:2021-11-11 04:11:01 其他开发

GRUN for Antlr4:如何使用?

对于语法: grammar qwe;询问: 列运算符值 EOF;柱子: [a-z_]+;操作员: ('='|'>'|'跳过 ; COLUMN 和 SCALAR 有相同的规则.此处建议我使用 grun 别名.> 我为我的 Ubuntu 安装了它.对于文件夹结构: 从项目 learning_antlr4 级别运行: grun qwe tokens -tokens qwe/qwe.toke ..
发布时间:2021-11-11 04:10:59 其他开发

ANTLR4 歧义语法

我想实现以下行为:User:class 应该被解析为 Object - User;类型 - 类,也Us:er:class 应该结果 Object - Us:er;类型 - 类.我无法使第二部分工作,只要我添加 : 作为 WORD 的合法符号,它就会将整个输入解析为一个对象 Object - Us:er:class.我的语法: 语法草图;/** 解析器规则*/输入:(对象)+ EOF ;对象:对象 ..
发布时间:2021-11-11 04:10:53 其他开发

ANTLR孤岛文法和消耗过多的非贪婪规则

我遇到了孤岛语法和用于消耗“除我想要的之外的所有东西"的非贪婪规则的问题. 预期结果: 我的输入文件是一个 C 头文件,包含函数声明以及类型定义、结构、注释和预处理器定义.我想要的输出只是函数声明的解析和后续转换.我想忽略其他一切. 设置和我尝试过的: 我尝试 lex 和解析的头文件非常统一和一致.每个函数声明前面都有一个链接宏PK_linkage_m,并且所有函数都返回相 ..
发布时间:2021-11-11 04:10:50 其他开发

Antlr4在jsx中解析templateLiteral

我尝试使用在grammars-v4项目中定义的语法(https://github.com/antlr/grammars-v4/tree/master/javascript/jsx) 来解析 jsx 文件.当我解析下面的代码片段时, let str =`${dsName}${parameterStr ?`( ${parameterStr} )` : ""}${returns ?`{${return ..
发布时间:2021-11-11 04:10:47 其他开发

如何使用递归使 ANTLR 消耗所有可用元素?

这是我的语法: 语法测试;文字:foo EOF;富:'X'|'('富')'|富'!|富尾巴;尾巴: (' ' foo)+; 这是它完美解析的输入: X (X!(X)!(X X X)!!!) X 然而,输出树有太多 tail 元素,正如我之前解释的 此处.可以解决这个问题吗? 解决方案 感谢@kaby76,找到了解决方案: foo:“X"尾巴?|'(' foo ')' 尾巴?|'! ..
发布时间:2021-11-11 04:10:29 Java开发