2016-03-29 11 views
0

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

cevap

0
(#[^\n]*\n$) 

olduğu çalışma DEMO

+0

ben * \ n Bu # [^ \ n] kullandığınızda $ "#" Başka (tanınmayan) "não reconhecido" gider ve yorum gider "identificador" a atıfta bulunursa. –