【问题标题】:Java Compile Time Error: reached end of file while parsingJava 编译时错误:解析时到达文件末尾
【发布时间】:2011-11-07 03:54:11
【问题描述】:
public class Test{
    public static void main(String[] arg){
        System.out.println("Alexander The Great");
    }
}

在这段代码中,如果我删除字符串中的第一个引号,我会得到 3 个错误。 1. ')' 预期 2. 未闭合的字符串字面量 3. 不是陈述

好的,我明白上面的错误了。

如果我删除字符串中的第二个引号,我也会得到 3 个错误。 1. 未闭合的字符串字面量 2.';'预期的 3. 解析时到达文件末尾

我理解 1 和 2,但为什么是 3??

大括号缺失时通常不会发生吗?但很明显,我有正确数量的大括号。 另外,为什么第一种情况不给出“解析时到达文件末尾”的错误?

附:我正在使用 jGrasp,java 1.6。

【问题讨论】:

    标签: java compiler-construction compilation compiler-errors


    【解决方案1】:

    省略 first 引号可能会给解析器更多的工作空间,因为它会尝试将“Alexander”视为引用。一旦它到达空格,唯一合法的东西就是表达式的其余部分,但它认为它是另一个标识符。

    它可能会插入奖金) 来尝试恢复;取决于实现。

    省略最后一个引号会将解析器发送到行尾。它没有尝试关闭该语句,而是稍微丢失并旋转,无法恢复并到达文件末尾。

    在我看来,在我看来,由于 Java 字符串只是单行的,它可以做很多相同的事情,并在这种情况下尝试关闭字符串和/或语句并恢复更多优雅地。不过,我可能只是遗漏了一些明显的东西。

    【讨论】:

      【解决方案2】:

      因为在搜索引号时遇到了 EOF。我不确定是否指定了针对错误代码发出的确切错误消息。

      【讨论】:

        【解决方案3】:

        使用 public static void main(String arg[]) 代替 public static void main(String[] arg)

        【讨论】:

        • 我同意将数组尖括号放在标识符旁边是更好的风格。这不是问题的答案,请考虑使用评论而不是答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多