antlr4相关内容

如何修复“不允许使用多字符文字"antlr4 词法分析器规则中的错误?

我想写的规则是: 字符:'\u0000'..'\u10FFF'; 但是当尝试针对定义它的词法分析器文件运行 antlr 工具时,我收到以下错误: 词法分析器集中不允许使用多字符文字:'\u10FFF' 如何解决这个问题? 解决方案 尝试用 { 和 } 包装多字符文字,并使用 v4 样式字符集[...]: 字符:[\u0000-\u{10FFF}]; 来自 https://git ..
发布时间:2021-11-11 04:06:46 其他开发

ANTLR4 RegEx 词法分析器模式

我正在为 XSD 中的 RegEx 开发一个 Regx 解析器.我之前的问题描述在这里:ANTLR4 parsing RegEx 从那时起我就拆分了 Lexer 和 Parser.现在我在解析括号内的括号时遇到问题.它们应该被视为括号内的字符和外的分组标记.这是我的词法分析器语法: 词法语法RegExLexer;字符:阿尔法;整数:数字;LBrack : '[' ;//->pushMode ..
发布时间:2021-11-11 04:06:40 其他开发

在侦听器中使用 ParserRuleContext 遍历令牌 - ANTLR4

在使用侦听器迭代令牌时,我想知道如何使用 ParserRuleContext 来查看令牌流中的下一个令牌或接下来的几个令牌? 在下面的代码中,我试图查看当前令牌之后直到 EOF 的所有令牌: @Override公共无效输入分号(JavaParser.SemicolonContext ctx){令牌tok,semiColon = ctx.getStart();int currentIndex ..
发布时间:2021-11-11 04:06:34 Java开发

使用 ANTLR4 识别单行中的多行注释

我想用 ANTLR4 解析 PostScript 代码.我完成了语法,但是一个特定的语言扩展(由其他人引入)导致难以重新调整. 一个简短的例子: 1: % 这是一行注释2: % 下一行只是将值 10 压入堆栈3:104:5: %?description 这是有问题的特殊行注释6:/过程{7:/var1 30 def %这只是创建一个变量8:/var2 10 def %?descriptio ..
发布时间:2021-11-11 04:06:32 其他开发

ANTLR4 在导入时找不到语法

我正在尝试将我的 ANTLR4 语法拆分为多个文件,以便我可以更轻松地测试它们,我在 Java 项目中使用 gradle 作为构建工具. 两种语法都可以通过单独的方式正确编译,但是当我将导入添加到主语法时,出现下一个编译错误 错误(110):kanekotic/specflow/rider/SpecflowFeature.g4:3:7:无法找到或加载语法SpecflowScenario ..
发布时间:2021-11-11 04:06:26 Java开发

使用 Antlr4 解析任意分隔符

我尝试在 Antlr4 中创建一个语法,它接受正则表达式由任意字符分隔(类似于 Perl).我怎样才能做到这一点? 要明确:我的问题不是正则表达式本身(我实际上不在 Antlr 中处理,而是在访问者中处理),而是分隔符.我可以轻松地为词法分析器定义以下规则: REGEXP: '/' (ESC_SEQ | ~('\\' | '/'))+ '/' ;片段 ESC_SEQ: '\\' .; 这 ..
发布时间:2021-11-11 04:06:23 其他开发

Antlr 解析器运算符优先级

考虑以下语法.我有操作符优先级的问题,例如:res=2*a+b 有一个与 res=2*(a+b) 类似的解析树.我知道问题出在哪里,但是我想到了没有相互左递归的“漂亮"解决方案.你能帮我一下吗?语法与自定义访问者一起使用. grammar Math;表达式:表达式 add=('+'|'-') 表达式 # expressionAddExpression|表达式 mult='*' 表达式 # exp ..
发布时间:2021-11-11 04:06:14 其他开发

ANTLR 4 在 OS X 上安装失败?

我有一个关于在我的 Unix 系统 (MacOS Sierra) 上安装 ANTLR 的问题. 我遵循了快速入门步骤(适用于 OS X 的 ANTLR 4 快速入门安装步骤) 如 ANTLR 4 主页上所述.一切似乎都运行良好,但是每当我关闭终端时,导出和别名命令似乎都消失了.有谁知道我可能做错了什么?谢谢! 附言我是 OS X 的新手并使用终端. 解决方案 将 export ..
发布时间:2021-11-11 04:06:11 其他开发

ANTLR 是否允许在 locals 子句中定义多个变量?

在解析器语法中,我想在locals 子句. 一个简化的例子如下所示: 正文当地人 [映射bodyContent = new HashMap();长计数器 = 0;]:BODY_CAPTION NEWLINE 行;行:key='MyKey' TAB value='MyValue' NEWLINE{$body::bodyContent.put($key.text, $value.text);$ ..
发布时间:2021-11-11 04:06:02 其他开发

为什么 ANTLR 要求标记所有替代品或不标注替代品?

我是 ANTLR 的新手.我刚刚发现可以像这样在作品中标记每个替代品: foo: 一个#一个标签|b # b标签|//...; 但是,我发现必须标记所有替代方案或不标记替代方案是令人不快的.我最近只需要标记具有 20 多个分支的产品的 2 个替代方案,我最终标记了其他每个# stubLabel.是否有任何理由必须标记全部或不标记? 解决方案 一旦您添加标签,ANTLR4 将不再为该规则 ..
发布时间:2021-11-11 04:05:59 其他开发

令牌识别错误:antlr

我有一个 ANTLR 4 语法: 语法测试;开始:非零数字'.'数字数字?EOF;点:'.';加号:'+';减 : '-' ;冒号 : ':' ;逗号 : ',' ;引用 : '\"' ;等于: '=' ;分号:';';下划线:'_';反斜杠 : '\\' ;单引号 : '\'' ;RESULT_TYPE_NONE : ..
发布时间:2021-11-11 04:05:53 其他开发

获取相对于文件开头的令牌起始字符位置

antlr4 API 有没有可靠的方法来获取相对于文件开头而不是行的令牌起始字符位置?在做了一些研究之后,我发现唯一的方法是使用 IntStream 的一些自定义实现,它不会将 '\n' 视为行终止符,但也许我错过了一些更简单的方法?如果重要的话,我正在使用访问者 API. 我正在处理的应用程序解析源文件并为另一个应用程序提供插入坐标,该应用程序使用提供的坐标插入附加代码.如果另一个应用程序 ..
发布时间:2021-11-11 04:05:50 其他开发

ANTLR 不匹配输入“"

鉴于以下 ANTLR 4.1 语法,有意注释掉一行... 语法Foobar;//whyDoesThisRuleHelp : 表达式 ;表达式:操作数 |二元运算;binaryOperation : 操作数 WS BINARY_OPERATOR WS 表达式;操作数:字母;BINARY_OPERATOR : '情商' ;字母 : [a-z] ;WS : [ \n]+ ; .. 为什么 echo ..
发布时间:2021-11-11 04:05:48 其他开发

antlr 4.2.2 输出到控制台警告 (157)

我下载了最新版本的 ANTLR - 4.2.2 (antlr-4.2.2-complete.jar)当我使用它为语法文件 Java.g4 生成解析器时,它会向我打印一些警告,例如:“Java.g4:525:16:规则‘表达式’在无法识别的位置包含‘assoc’终端选项" 文件已生成但未编译 以前的版本工作正常. 怎么了? 解决方案 现在应该移到“表达式"的左边. 它 ..
发布时间:2021-11-11 04:05:45 Java开发