Was ist der richtige Weg zu überprüfen, ob die angegebene Zeile Java-Code ist?Wie überprüft man, ob die angegebene Codezeile in Java geschrieben ist?
Eingang: LogSupport.java:44 com/sun/Aktivierung/Register/LogSupport log (Ljava/lang/String;) V
Erwartete Ausgabe: false.
Eingabe: Scanner ein = neuer Scanner (System.in);
Erwartete Ausgabe: wahr.
Ich habe versucht Eclipse JDT ASTParser zu überprüfen, ob wir einen AST erstellen können. Hier ist der Code:
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;
}
Aber das funktioniert nicht. Irgendwelche Ideen? Vielen Dank!
Was bedeutet "das geht nicht"? Erhalten Sie einen Fehler? Ist die Ausgabe anders als erwartet? Möglicherweise erwartet der Parser eine vollständige Java-Quelldatei und nicht nur eine einzelne Zeile (was keine gültige, vollständige Java-Quelldatei ist). – Jesper
Tatsächlich ist Java keine Sprache, die Zeile für Zeile kompiliert und/oder interpretiert wird. Nehmen wir zum Beispiel eine Variablendeklaration, die Sie nicht einfach in eine AST einbauen können, da die Regeln nicht bestimmen könnten, ob es sich um eine lokale Methodenvariable oder ein Klassenattribut handelt. – Gimby
Welche Aussage analysieren Sie? Was ist in 'line.toCharArray()' enthalten? – LittlePanda