在按照这一篇推文
https://blog.csdn.net/weixin_43877853/article/details/123148335
做实验的时候卡在了最后一步,即把生成的语法分析器和词法分析器打包成jar包的那一步,由于描述过于简略导致我不知道究竟应该怎么打包。所以如果有哪位知道如何打包希望能赐教,希望能有每一步的详细截图,在ide里面打开的是什么文件夹,修改的是什么文件,打jar包的详细截图。
我是先把全部的文件在一个文件夹(也就是三个c文件夹)生成好,然后创建lib文件夹,把antlr-4.12.0-complete.jar放进lib文件夹,然后用ide打开,再创建MyCGrammer包,再把三个c文件夹中的下图这几个文件第一行全部加上package MyCGrammer;,再移动到MyCGrammer包下
然后Projecture Structure里面把jdk全部设置为11,接着打包,然后就失败
希望各位解答越详细越好
我看了你提到的那篇博文,也看了你的描述。我感觉做这个事情并不仅仅是打包。首先你需要把代码都编译通过,从你最后那个截图看,项目还没有编译通过,还有137个错误。第一步是先要解决这些错误。编译错误。我猜想你是没有把jar添加到你的path中。建议你使用maven来管理项目。编译通过后,再说打包的事情。打包其实是很简单的一件事情,可以参考我之前写的一片文章:
https://blog.csdn.net/weixin_53036603/article/details/128211312
用ant来打包
https://blog.csdn.net/anhuixiaozi/article/details/5278233
该回答引用GPTᴼᴾᴱᴺᴬᴵ
Antlr生成的词法分析器和语法分析器可以打包成一个JAR文件,可以按照以下步骤进行:
参考GPT和自己的思路:Antlr生成的词法分析器和语法分析器可以打包成一个jar包,然后在其他项目中使用。下面是详细的步骤:
1 创建一个新的Java项目,例如MyParser。
2 将antlr-4.9.2-complete.jar文件复制到MyParser项目的lib目录下。如果没有lib目录,可以在项目根目录下创建一个。
3 在MyParser项目中创建一个新的包,例如com.myparser.grammars,用于存放我们的语法文件。
4 将Antlr生成的词法分析器和语法分析器的Java文件(.java文件)复制到com.myparser.grammars包下。这些文件应该在之前的步骤中已经生成了。
5 编辑Antlr生成的Java文件(.java文件),在开头添加如下代码:
package com.myparser.grammars;
这将确保生成的类位于正确的包中。
6 打开命令行,导航到MyParser项目的根目录,并运行以下命令:
javac -cp "lib/antlr-4.9.2-complete.jar" com/myparser/grammars/*.java
这将编译所有的Java文件。
7 创建一个新的包,例如com.myparser,用于存放我们的应用程序代码。
8 在com.myparser包中创建一个新的类,例如MyParser,用于实例化我们的词法分析器和语法分析器,并进行解析操作。例如:
package com.myparser;
import com.myparser.grammars.MyGrammarLexer;
import com.myparser.grammars.MyGrammarParser;
import org.antlr.v4.runtime.*;
public class MyParser {
public static void main(String[] args) throws Exception {
String input = "1 + 2 * 3";
ANTLRInputStream inputStream = new ANTLRInputStream(input);
MyGrammarLexer lexer = new MyGrammarLexer(inputStream);
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
MyGrammarParser parser = new MyGrammarParser(tokenStream);
parser.expr();
}
}
这将解析字符串"1 + 2 * 3",并调用expr规则。
9 打开命令行,导航到MyParser项目的根目录,并运行以下命令:
jar cvf MyParser.jar com/myparser/*.class com/myparser/grammars/*.class
这将创建一个名为MyParser.jar的jar包,并将所有编译后的class文件打包进去。
10 在其他项目中,将MyParser.jar文件添加到项目的classpath中,并使用com.myparser.MyParser类来实例化词法分析器和语法分析器,以进行解析操作。
希望以上步骤对你有所帮助。
如果已参考 @lverson1022 实现成功打包,在其他项目中引用 .jar 包,仍然飘红提示,多为没有在项目中成功识别到。请参考以下 添加
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
打包ANTLR生成的词法分析器和语法分析器需要使用命令行或者通过构建工具,比如Maven或Gradle进行打包。
以下是通过命令行打包的步骤:
Main-Class: org.antlr.v4.gui.TestRig
Class-Path: antlr-runtime-4.7.2.jar
jar cfm mygrammar.jar Manifest.txt *
其中mygrammar.jar为你的打包jar包的名称
java -jar mygrammar.jar
其中mygrammar.jar为你的打包jar包的名称
注意,上述步骤中的jar包名称,Main类名称和classpath需要根据你的实际情况进行修改。
另外参考该篇博客,我个人认为没有必要将生成的语法和词法分析器代码放到指定的包中,可以直接在命令行或者构建工具中指定该包。
如果我的回答解决了您的问题,请采纳!