我试图在java中构建一个接口程序来分析任何java文件,并得到Halsted量度的结果,但是我在解析输入文件时遇到了一个问题,我读了很多关于Antlr和JavaParsing项目的文章,但是我真的不明白我们如何使用它。我的问题是:
1-在java编译器中是否存在任何默认命令行,解析任何字符串,并在此输入字符串行中找到任何操作数或操作符。2-如果答案是否定的,谁能帮助发送关于使用Javaparsing或Antlr库的小例子?
你一贯的支持感谢你的问候
发布于 2015-04-26 16:04:00
我不知道有任何命令行解析器会这样做。
ANTLR并不简单,但您想要做的是从Java语法创建一个解析器。这就是我们生成语法的方法(您可以在这里下载语法- https://github.com/antlr/grammars-v4/tree/master/java):
公共类GenerateVisitor { 公共静态void ( String[] args) {String[] arg0 ={ "-visitor","D:/grammars/antlr/Java.g4","-package","com.virtualmachinery.jhawk.antlr“};org.antlr.v4.Tool.main(arg0);}
当你这样做了,你会发现你有6个生成的类和两个文件。
显然,我不能在5分钟内教您如何使用ANTLR,但是您要做的是创建一个扩展已经创建的JavaVisitor类的访问者。然后,您可以重写访问这些方法的方法,然后分析传入的上下文。然后,您可以使用switch语句将操作符和操作数标记分开。
在我们的代码中,我们执行这样的操作:
public static void handleTokens(ParseTree ctx)
List<Token> tokens = getTokens(ctx);
int type;
for (Token each: tokens) {
type = getHalsteadType(type);
}
}这些类型都定义为JavaParser类中的常量。对于哪些令牌可以被忽略,哪些是操作符,哪些是运营者,您可以在这里找到一些关于如何做出决定的信息-
Www.virtualMachiny.com/sidebar2.htm
https://stackoverflow.com/questions/21652079
复制相似问题