java - Java编译时错误: reached end of file while parsing

标签 java compiler-construction compilation compiler-errors

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?

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

附言我正在使用Java 1.6的jGrasp。

最佳答案

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

可能正在插入奖励)尝试恢复;取决于实现。

删除最后一个引号会将解析器发送到行尾。与其尝试关闭该语句,不如让它丢失一点并旋转,并且无法恢复并命中文件末尾。

在我看来,由于Java字符串仅是单行,所以它似乎可以做很多相同的事情,并在这种情况下尝试关闭字符串和/或语句,从而更加优雅地恢复。我可能只是想念一些明显的东西。

关于java - Java编译时错误: reached end of file while parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032555/

相关文章:

compiler-construction - 最大方法名称长度

c - 关于ubuntu gcc编译器的问题

typescript - webpack angular2 编译报错

java - 需要帮助使用java创建氨基酸排列系统

c# - 使用 Mono Compiler/创建一个新的同时仍然输出 Windows EXE?

java - 在二维数组网格中的 JLabel 之间绘制线条

c++ - 发布 Qt C++ GUI 程序的最简单方法?

c++ - 单步编译时是否生成目标文件?

java - 为什么我可以使用 AccessController.doPrivileged 突破受限的 AccessControlContext?

java - 如何在javascript html5中获取本地IP地址