java - 如何检查给定的代码行是否是用 java 编写的?

标签 java abstract-syntax-tree

检查给定行是否为 java 代码的正确方法是什么?

输入:LogSupport.java:44 com/sun/activation/registries/LogSupport log (Ljava/lang/String;)V

预期输出:错误。

输入:Scanner in = new Scanner(System.in);

预期输出:真。

我尝试了 Eclipse JDT ASTParser 来检查我们是否可以创建 AST。这是代码:

public static boolean isJava(String line) {
    boolean isJava = false;
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setSource(line.toCharArray());
    parser.setResolveBindings(false);
    ASTNode node = null;

    parser.setKind(ASTParser.K_STATEMENTS);
    try {
        node = parser.createAST(null);
        if (node == null) return false;
        isJava = true;
    } catch (Exception e) {
        return false;
    }
    return isJava;
}

但这行不通。有任何想法吗?谢谢!

最佳答案

试试 bean 壳

http://www.beanshell.org/intro.html

Java 评估功能:

动态评估完整的 Java 源类以及独立的 Java 方法、语句和表达式。

功能总结

动态执行完整的 Java 语法、Java 代码片段,以及松散类型的 Java 和其他脚本编写便利性。

对所有 Java 对象和 API 的透明访问。

以四种模式运行:命令行、控制台、Applet、远程 session 服务器。 可以在安全受限的环境中工作,而无需为大多数功能生成类加载器或字节码。

解释器很小~150K jar 文件。

纯 Java。

它是免费的!!

下面的链接有一些您可以尝试的其他选项

Syntax Checking in Java

关于java - 如何检查给定的代码行是否是用 java 编写的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816389/

相关文章:

c++ - C++ 抽象语法树组合和代码生成库

java - 在 Tomcat 中重新部署应用程序时发生内存泄漏

Groovy 编译时 AST 转换 : Assignment to a field

java - 光束 : writing per window element count with window boundaries

java -/usr/bin/java : is a directory

c++ - 声明后如何获取变量及其大小?

c++ - 为 C++ 获取 AST?

algorithm - 如何在 AST 中查找标识符的用法?

java - Cassandra 中的范围查询

java - 如何禁用作业进度栏对话框上的取消按钮?