/ / Java Compile Time Error: Erreichtes Ende der Datei beim Parsen - Java, Compiler-Konstruktion, Kompilierung, Compiler-Fehler

Java Compile Time Error: Erreichtes Dateiende beim Parsen - Java, Compiler-Konstruktion, Kompilierung, Compiler-Fehler

public class Test{
public static void main(String[] arg){
System.out.println("Alexander The Great");
}
}

Wenn ich in diesem Code das erste Anführungszeichen in der Zeichenfolge entferne, erhalte ich 3 Fehler. 1. ")" erwartet 2. Nicht geschlossenes Zeichenfolgenliteral 3. keine Aussage

ok, ich habe oben Fehler verstanden.

Wenn ich das zweite Anführungszeichen in der Zeichenfolge entferne, erhalte ich auch 3 Fehler. 1. nicht geschlossenes Zeichenfolgenliteral 2. ";" erwartet 3. erreichte das Ende der Datei beim Parsen

Ich habe 1 und 2 verstanden, aber warum 3 ??

Tritt es normalerweise nicht auf, wenn Zahnspangen fehlen? Aber klar, ich habe die richtige Anzahl an Zahnspangen. Auch, warum nicht der erste Fall den Fehler "erreicht Ende der Datei beim Parsen"?

P.S. Ich benutze jGrasp, Java 1.6.

Antworten:

1 für die Antwort № 1

Verlassen der zuerst Zitat gibt dem Parser möglicherweise ein bisschen mehrarbeiten mit, weil es versuchen wird, "Alexander" als Referenz zu behandeln. Sobald es den Raum erreicht, ist das einzige legale Zeug der Rest eines Ausdrucks, aber stattdessen denkt es, dass es ein anderer Bezeichner ist.

Es kann einen Bonus einfügen ) zu versuchen, sich zu erholen; hängt von der Implementierung ab.

Wenn Sie das letzte Zitat weglassen, wird der Parser gesendetbis zum Ende der Linie. Anstatt zu versuchen, diese Aussage zu schließen, wird sie ein wenig verloren und spinnt ab und kann nicht wiederhergestellt werden und trifft das Ende der Datei.

Aus meinem Kopf, mir scheint es so zu seinJava-Strings sind nur einzeilige, es könnte viel das gleiche tun und versuchen, die Zeichenfolge und / oder Anweisung in diesem Fall zu schließen und ein wenig eleganter wiederherzustellen. Ich vermisse aber vielleicht etwas Offensichtliches.


0 für die Antwort № 2

Weil EOF während der Suche nach einem Anführungszeichen aufgetreten ist. Ich bin mir nicht sicher, ob die genauen Fehlermeldungen, die für schlechten Code ausgegeben werden sollen, spezifiziert sind oder nicht.


-1 für die Antwort № 3

benutze public static void main (String arg []) anstelle von public static void main (String [] arg)