antlr相关内容

ANTLR4 在导入时找不到语法

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

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 要求标记所有替代品或不标注替代品?

我是 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 其他开发

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开发

Antlr 生成的类访问修饰符到内部

我正在构建一个包含某些解析器的库.这些解析器是用 ANTLR4 内部构建的.由于生成的类都是公开的,我库的用户可以看到他们不需要看到的所有类.Sandcastle 文档也包含所有这些类.有什么办法可以告诉 Antlr 将生成的类设为内部而不是公开吗? 解决方案 实际上,这相对容易做到.在内部,ANTLR 使用 StringTemplate 文件为每种支持的语言生成代码.对于 C#,您可以在 ..
发布时间:2021-11-11 04:05:26 C#/.NET

Antlr4 C++ 目标

我们正在启动一个项目,我们需要在该项目中解析 C++ 应用程序中的 Python 源文件.我曾经使用 Antlr2 生成一些编译器,但这是我第一次使用 Antlr4. 看起来 c++ antlr4 目标在 https://github.com/antlr/antlr4 上相当活跃-cpp 那么,我的问题基本上是 Antlr4 C++ target 的状态是什么,它准备好开始使用了吗?要 ..
发布时间:2021-11-11 04:05:24 C/C++开发

antlr4:ATN 版本 2 预期为 3

尝试使用生成的语法和词法分析器时,我得到: org.antlr.v4.runtime.atn.ATN;无法使用版本 2(预期为 3)反序列化 ATN. 怎么了? 解决方案 您的解析器是使用 ANTLR 4.0 生成的,但您正尝试使用 ANTLR 4.1 执行它.最可能的原因是使用 ANTLRWorks 2.0 生成解析器,该解析器在内部使用 ANTLR 4.0.我正在发布 AN ..
发布时间:2021-11-11 04:05:21 Java开发

如何分析 Antlr 语法

我有一个 Antlr 语法,目前大约有 1200 行.它解析我想要的语言,但至少对于一种构造,即使对于较小的输入文件,它也非常慢.对于构造的每个添加元素,执行时间似乎呈指数增长. 我想知道是否有任何关于调试/分析此类性能问题的好的指南. 我已经尝试过 VisualVM 并且给出了closureCheckingStopState 和closure_ 两种方法的名称,但这并不能更接近于找出 ..
发布时间:2021-11-11 04:05:18 其他开发

ANTLR 语法互左递归

我知道这个问题已经被问过很多次了.我正在尝试使用 ANTLR 构建语法. 谓词:LOWERCASE |谓词 VarChars ;VarChars : 小写 |大写;片段小写:[a-z];片段大写:[A-Z]; 我收到以下错误:“以下规则集相互左递归[谓词]" 请告诉我这是如何解决的.如何删除我的 antlr 语法中的相互左递归. 解决方案 彻底摆脱“Predicate"的递归出现 ..
发布时间:2021-11-11 04:05:03 其他开发

代码生成的变化,使用 ANTLR4 解析树访问者

我正在使用 ANTLR(带有访问者的 JavaScript 目标)编写转译器 (myLang -> JS). 重点是来自解析树的目标代码生成部分. 如,如何处理语言源代码的变化. 为了使问题更清楚,请考虑以下两种变体 - 来源#1: 打印'你好' 来源#2: varGreeting = '嘿!'PRINT varGreeting 在第一种情况下,我处理字符串.而在情况 ..
发布时间:2021-11-11 04:04:54 前端开发

Antlr 词法分析器语义谓词的另一种选择

给定语法: 语法测试;字:(字|空格|点)+;单词 : (LD|点{_input.LA(1)!='.'}?) + ;点:'.';空间: ' ';片段 LD: ~[.\n\r ]; 使用 Antlr4 生成的词法分析器,用于输入: 测试.测试.测试测试..测试 令牌序列如下: [@0,0:4='test.',,1:0][@1,5:5='',,1:5][@2,6:14='test.test' ..
发布时间:2021-11-11 04:04:52 其他开发

使用 ANTLR 生成词法分析器/解析器作为流

我可以使用 ANTLR Java API 将词法分析器/解析器生成为流并将它们保存在某些文件以外的地方吗? 另外,是否有使用 API 从给定语法生成所需文件的简单示例? 谢谢 解决方案 我不能 100% 确定我是否正确理解了您的问题,但您可能想看看 https://stackoverflow.com/a/38052798/5068458.这是一个用于 antlr 语法的内存编译 ..
发布时间:2021-11-11 04:04:46 其他开发

如何在 Antlr4 中为具有零参数的函数编写语法

我有像下面的词法分析器和解析器这样的带参数语法的函数: MyFunctionsLexer.g4 词法分析器语法 MyFunctionsLexer;功能:'功能';名称:[A-Za-z0-9]+;点:'.';逗号:',';L_BRACKET: '(';R_BRACKET: ')';WS : [ \t\r\n]+ ->跳过; MyFunctionsParser.g4 解析器语法 MyFun ..
发布时间:2021-11-11 04:04:43 Java开发

在多字符令牌上切换到孤岛模式

我正在研究一种基本上是孤岛语法的语法. 让我们说“岛"是大括号之间的一切,“海"是一切不是.像这样: {(岛屿内容)} 那么这个简单的语法就起作用了: IslandStart:'{' ->推模式(岛);起毛:~[\{\}]+;.... 但是对于我想要为我的“岛"块打开复杂(多字符)的情况,我很难想出类似的解决方案,如下所示: {#(岛屿内容)} 在这种情况下,我不 ..
发布时间:2021-11-11 04:04:34 其他开发

ANTLR4 '+' 操作

我正在使用 ANTLR4 来学习我现在正在上课的课程,我似乎理解其中的大部分内容,但我无法弄清楚“+"的作用.我只能说它通常在括号中的一组字符之后. 解决方案 plus 是 ANTLR 中的 BNF 运算符之一,可以确定表达式的基数.其中有 3 个:加号、星号(又名 kleene 运算符)和问号.意思很容易理解: 问号代表:零或一 Plus 代表:一个或多个 星号代表:零个或多个 ..
发布时间:2021-11-11 04:04:29 其他开发