首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中构建霍尔斯特德度量标准

在java中构建霍尔斯特德度量标准
EN

Stack Overflow用户
提问于 2014-02-08 21:34:18
回答 1查看 640关注 0票数 0

我试图在java中构建一个接口程序来分析任何java文件,并得到Halsted量度的结果,但是我在解析输入文件时遇到了一个问题,我读了很多关于Antlr和JavaParsing项目的文章,但是我真的不明白我们如何使用它。我的问题是:

1-在java编译器中是否存在任何默认命令行,解析任何字符串,并在此输入字符串行中找到任何操作数或操作符。2-如果答案是否定的,谁能帮助发送关于使用Javaparsing或Antlr库的小例子?

你一贯的支持感谢你的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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语句将操作符和操作数标记分开。

在我们的代码中,我们执行这样的操作:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21652079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档