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

Ven*_*h V 7 java abstract-syntax-tree

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

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

预期输出:false.

输入:扫描仪输入 =新扫描仪(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;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有任何想法吗?谢谢!

Raj*_*Raj 4

尝试豆壳

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

Java评测特点:

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

特点总结

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

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

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

解释器很小,约 150K jar 文件。

纯Java。

免费!!

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

Java 中的语法检查