我使用ANTLR4将一种语言翻译成另一种语言。例如,当我阅读数字文字时,我可以返回Integer或Double。 @Override public Integer visitIntegerValue(Parser.IntegerValueContext ctx) { return Integer.valueOf(ctx.getText()); } @Override public Double visitDoubleValue(Parser.DoubleValueContext ctx) { return Doub…

2020年10月4日 0条评论 31点热度 阅读全文

我正在尝试编写一个输出Java方法的ANTLR语法。即我为以下公式编写了语法: expr("L") + expr("R") 我希望我的语法翻译器在翻译后像下面这样用下面的方法返回一个Java类: public class FormulaExecutor(){ public Double formula1234(FormulaAPI apiReference) { return apiReference.evaluateResult("L") + apiReference.evaluateResult("R") ; …

2020年9月20日 0条评论 37点热度 阅读全文

在Antlr3中,我有以下语法: ruleA: (ruleBStart) => ruleB | ruleC ; 为了简单起见,我们假设ruleB是SQL中SELECT语句的语法,但是可以嵌套在任意数量的LPAREN中。简单地说,这很容易用旧语法表示: ruleBStart: (LPAREN)* SELECT ; 在Antlr4中,如果我想做同样的事情,我会写一个语义谓词 isRuleBStart(),看起来像这样(伪代码): @parser::members{ public boolean isRuleBSt…

2020年9月18日 0条评论 30点热度 阅读全文

This question already has answers here: If/else statements in ANTLR using listeners (1个答案) How to do Priority of Operations (+ * - /) in my grammars? (2个答案) 上个月关闭。 我想创建自己的编程语言,并想用类似的括号实现运算符(和)。 x = 1 x2 = 2 x3 = 0 x4 = 0 // tmpMap = {x = 1 , x2 = 2, x3 = 0 , x…

2020年8月29日 0条评论 38点热度 阅读全文

我正在尝试在脱机计算机上构建项目(这是必需的)。我已经创建了本地Maven存储库(它只是具有适当结构的文件夹)并成功构建了所有其他内容。 我采用以下方式: 1)运行gradle installl(此Maven插件的目标) 然后手动检查错误。如果我发现找不到某些库,则 2)我将其作为行家坐标,并从我的机器中手动复制到该机器中。 除Antlr之外,它均有效。我收到以下消息: >gradle install :generateGrammarSource FAILURE: Build failed with an e…

2020年7月26日 0条评论 42点热度 阅读全文

如何使Visual Studio Code的Java扩展识别ANTLR4源代码包?我在VSCode中安装了Maven扩展,它可以自行检测Java依赖关系。但这还不够。有像 import org.antlr.v4.parse.ANTLRParser; 扩展程序不接受的内容。软件包也会发生类似的情况。看到: 解决方案如下: 尝试从net安装依赖项,打开您的pom.xml然后添加以下依赖项: <dependency> <groupId>org.antlr</groupId> <a…

2020年7月2日 0条评论 48点热度 阅读全文

我正在尝试解析以下内容: SELECT name-of-key[random text] 这是我正在尝试构建的较大语法的一部分。为了清楚起见,我将其保留。 我想出了以下规则: select : 'select' NAME '[' anything ']' ; anything : (ANYTHING | NAME)+ ; NAME : ('a'..'z' | 'A'..'Z' | '0'..'9' | '-' | '_')+ ; ANYTHING : (~(']' | '['))+ ; WHITESPACE : (…

2020年6月7日 0条评论 34点热度 阅读全文

我有一个Java目标v4 ANTLR语法。我想使用侦听器实现嵌入式语义谓词的相同功能,以使语法从特定于语言的嵌入式动作中解放出来。建议是停用备用子规则匹配。我知道如何编写扩展BaseListener并对其进行覆盖,但是由于我是初学者,所以实际上不知道如何执行此操作。 grammar MyParserGrammar; @parser::members { public static boolean singularSub, pluralSub; } sentence: (subject beVerb)+ { sing…

2020年5月30日 0条评论 59点热度 阅读全文

我正在使用ANTLR4来解析Java Shell项目的命令行。当我在VSCode中运行JUnit测试时,一切都很好。但是,当我构建Docker镜像并尝试以交互方式运行Shell时,出现此错误: Error: Unable to initialize main class uk.ac.ucl.jsh.Jsh Caused by: java.lang.NoClassDefFoundError: org/antlr/v4/runtime/CharStream 我的pom.xml文件是否存在任何问题,或者该问题来自其他地方…

2020年5月23日 0条评论 22点热度 阅读全文

我通过使用教授提供的样本来测试ANTLR-4.7.1是否正常工作,以将这些结果与相同的打印标记集相匹配: % java -jar ./antlr-4.7.1-complete.jar HelloExample.g4 % javac -cp antlr-4.7.1-complete.jar HelloExample*.java % java -cp .:antlr-4.7.1-complete.jar org.antlr.v4.gui.TestRig HelloExample greeting helloworld.…

2020年5月15日 0条评论 26点热度 阅读全文