Bu yüzden, Java'da Python için bir Lexical Analyzer kullanmalıyım, her şey temelde çalışıyor ancak normal ifadeleri kullanarak yorum satırlarını görmezden gelmenin bir yolunu bulamıyorum.Python için sözlü analiz cihazı - Yorum satırını görmezden gelin
int encontrouLista = 0;
token = token.replaceAll("[#](.)*","");
if (token.contains(" ")){
write.println("espaço em branco");
token = token.replaceAll("\\s+", "");
}
else if (token.contains("\n")){
write.println("quebra de linha");
token = token.replaceAll("\\r\\n|\\r|\\n", "");
}
for (Entry<String, ArrayList> entry : listas.entrySet()) {
if (encontrouLista==1) break;
if (token.length() > 0 && entry.getValue().contains(token)) {
write.println(token + " pertence a " + entry.getKey());
encontrouLista = 1;
}
}
if (encontrouLista == 0 && !token.matches("^\\s*$")) {
if (token.matches("[A-Za-z]+[0-9A-Za-z_]*")) {
write.println(token + " identificador");
encontrouLista = 1;
} else if (token.matches("[0-9]+")) {
write.println(token + " numérico inteiro");
encontrouLista = 1;
} else if (token.matches("[0-9]+[.][0-9]+")) {
write.println(token + " numérico real");
encontrouLista = 1;
} else {
write.println(token + " não reconhecido");
}
}
Ben satırlarını görmezden bu hattı kullanmaya çalıştı:
token = token.replaceAll("[#](.)*","");
Ama bu ben bugüne kadar ne olduğunu vs. saklıdır deyişle, işletme işaretleri, karşılaştırma bulguların olduğu Dizi Listeleri yarattı
if (token.matches("[A-Za-z]+[0-9A-Za-z_]*")) {
write.println(token + " identificador");
encontrouLista = 1;
}
doğru regex ifadesini kullanıyor muyum: Ben bu nedenle "eğer" kod görmezden gelmek yerine, bir "identificador" olarak yorumunu düşünüyor düşünüyorum? Ayrıca, baskılar için "" içindeki şeyleri tanımlamanın bir yolunu bulmalıyım. İşte
ben * \ n Bu # [^ \ n] kullandığınızda $ "#" Başka (tanınmayan) "não reconhecido" gider ve yorum gider "identificador" a atıfta bulunursa. –