Jaki jest właściwy sposób sprawdzenia, czy dana linia to kod Java?Jak sprawdzić, czy dany wiersz kodu jest napisany w java?
Wejście: LogSupport.java:44 com/sun/aktywacja/rejestry/log LogSupport (Ljava/lang/String;) V
Oczekiwany Wyjście false.
Input: Scanner in = new Scanner (System.in);
Oczekiwany wynik: prawda.
Próbowałem Eclipse JDT ASTParser, aby sprawdzić, czy możemy stworzyć AST. Oto kod:
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;
}
Ale to nie działa. Jakieś pomysły? Dzięki!
Co oznacza "to nie działa"? Czy otrzymujesz błąd? Czy wyniki różnią się od oczekiwanych? Może parser oczekuje kompletnego pliku źródłowego Java, a nie tylko pojedynczej linii (która nie jest poprawnym, kompletnym plikiem źródłowym Java). – Jesper
Rzeczywiście, Java nie jest językiem kompilowanym i/lub interpretowanym wiersz po linii. Jako przykład można podać deklarację zmiennej, nie można jej po prostu zbudować na AST, ponieważ reguły nie będą w stanie określić, czy jest to lokalna zmienna metody czy atrybut klasy. – Gimby
Które oświadczenie analizujesz? Co to jest w 'line.toCharArray()'? – LittlePanda