antlr4相关内容

使用 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 其他开发

Antlr 解析器 StackOverflowException

我的 Xamarin.ios C# 项目的 Antlr 解析器语法中有以下内容: mathToken:数字#数字|NULL #Null|小于 #LessThan|伟大的#GreaterThan|anyLessThanOrEqual #LessThanOrEqual//这里还有大约 30 个选项数学令牌列表: mathToken mathTokenList #CompoundMathTokens| ..
发布时间:2021-11-11 04:11:49 C#/.NET

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

ANTLR 获得第一批生产

我正在使用 ANTLR4,特别是在他们的存储库中可用的 C 语法(语法).语法似乎没有初始规则,所以我想知道如何获得它.事实上,一旦初始化解析器,我就附加了我的侦听器,但是由于我试图解析具有不同代码指令的两个文件,因此出现语法错误: int a; int foo() { return 0;} 在我的示例中,我使用 "parser.primaryExpression();" 调用解析器,这 ..
发布时间:2021-11-11 04:11:37 其他开发

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

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

重叠规则 - 不匹配的输入

我的语法(如下(从原文删减))需要一些重叠的规则 语法 NOVIANum;语句 : (priorityStatement | integerStatement)* ;priorityStatement : T_PRIO TwoDigits ;integerStatement : T_INTEGER 整数;WS : [ \t\r\n]+ ->跳过 ;T_PRIO : 'PRIO' ;T_INTEG ..
发布时间:2021-11-11 04:11:31 其他开发

词法分析器,重叠规则,但想要更短的匹配

我想读取一个输入流并将输入分为两种类型:PATTERN &WORD_WEIGHT,定义如下. 问题源于为 WORD_WEIGHT 定义的所有字符对于 PATTERN 也有效.当我们有多个 WORD_WEIGHT 之间没有空格时,词法分析器将匹配 PATTERN 而不是传递多个 WORD_WEIGHT. 我需要能够处理以下情况并得到指示的结果: [20] => WORD_WEIGH ..
发布时间:2021-11-11 04:11:28 其他开发

即使有预期输入,Antlr4 也会打印“外部输入"错误

我正在尝试使用 SMILES 字符串解析OpenSMILES 规范. 语法: 语法微笑;原子:括号原子|脂肪族有机|芳香有机|'*';脂肪有机:'B' |'C' |'N' |'O' |'S' |'P' |'F' |'Cl' |'Br' |'一世';芳香有机:'b' |'c' |'n' |'o' |'s' |'p';括号原子:'['同位素?符号手性?计数?收费?原子类?']';符号: ele ..
发布时间:2021-11-11 04:11:25 其他开发

N元运算符解析

我正在尝试在数学表达式中匹配变量 arity 的运算符(例如,“1 表达式:'!表达|算术(SMALLER_THAN 算术)+|算术(GREATER_THAN 算术)+|....;算术:'(' 表达 ')'|表达式 ('*' | '/' | '%') 表达式|表达式 ('+' | '-') 表达式|标识符|...; 这会强制将诸如“x ..
发布时间:2021-11-11 04:11:22 其他开发

是否可以让 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 标记大量关键字

我想将一些已知的标识符名称嵌入到我的语法中,例如我的项目的类名是已知的,我想告诉词法分析器哪些标识符是实际上属于类名标记的已知关键字.但是由于我有很长的类名列表(数百个名称),我不想通过列出规则中所有已知的类名关键字来创建类名词法分析器规则,这会使我的语法文件太大. 是否可以将我的关键字放入单独的文件中?我正在考虑的一种可能性是将关键字放在一个 Java 类中,该类将由生成的词法分析器类进行 ..
发布时间:2021-11-11 04:11:13 其他开发

Antlr4 语法歧义

我有以下语法(为 SO 最小化) 语法 你好;odataIdentifier : identifierLeadingCharacter identifierCharacter*;identifierLeadingCharacter : Alpha|下划线;identifierCharacter : identifierLeadingCharacter |数字;identifierUnreserv ..
发布时间:2021-11-11 04:11:10 其他开发

Antlr 获取子令牌

请原谅我的术语. 假设我有一些简化的语法: //解析器expr :比较;//词法分析器WS : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+;比较器:'对'|'相对';物品: '男孩'|'女孩';比较:项目 WS* 比较器 WS* 项目; 所以这当然会匹配 'boy vs girl' 或 'girl vs boy' 等.但我的问题是当我创建一个词法分析器 ..
发布时间:2021-11-11 04:11:07 Java开发

初始化我的词法分析器会在 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 其他开发