SORU
3 EYLÜL 2010, Cuma


Düzenli ifadeler yazmak için bir ayrıştırıcı

Hatta programlama yıllar sonra, bir daha asla tamamen düzenli ifadeler kavramış olduğumu söylemeye utanıyorum. Genel olarak, ne zaman bir sorun aramaları için bir düzenli ifade, ben genellikle (sonra bir sürü atıfta için sözdizimi) gelmek ile ilgili olarak uygun bir, ama teknik olarak buluyorum kendimi kullanarak giderek daha sık.

Bu yüzden, kendimi eğitmek ve düzenli ifadeler anlamak içindoğruBir şeyler öğrenmeye çalışırken , ben her zaman yaptığım şeyi yapmaya karar verdim; yani, muhtemelen yeterince öğrendim hissediyorum en kısa sürede terk edeceğim bu iddialı bir şey yazmak için deneyin

Bu amaçla, Python regular expression parser yazmak istiyorum. Bu durumda, "yeterli Perl genişletilmiş düzenli ifade sözdizimi tamamen anlayabileceği bir ayrıştırıcı uygulamak istiyorum" anlamına gelir. Ancak, en verimli çözümleyici olmak zorunda yoksa bile mutlaka gerçek dünya olarak kullanılabilir değil. Sadece doğru veya bir dize içinde bir desen eşleşmesi için maç başarısız.

Soru, nereden başlayayım? Ben yukarıdaki diyagram ayrıştırılır ve ayrı bir şekilde sonlu durum otomat içerir gerçeğinden nasıl yorumladığı hakkında neredeyse hiçbir şey bilmiyorum. Oldukça zor bu sorun nasıl yaklaşılması için herhangi bir öneriniz çok takdir olurdu.

DÜZENLEME:Ben yokken bunu açıklığa kavuşturmalıdıruygulamakPython düzenli çözümleyici örnekleri ya da makaleler yazıyor ne aşırı gürültü patırtı değilim. Brainfuck değil sürece, muhtemelen bu değer yapmak için yeterince anlayamayacağım.

CEVAP
3 EYLÜL 2010, Cuma


Normal ifade motorunun bir uygulama yazmak gerçekten oldukça karmaşık bir iştir.

Ama eğer gerçekten bunu uygulamak için detaylar hakkında yeterli olabilir bile, bunu yapmak için nasıl ilgileniyorsanız, en azından bu makale bakmak tavsiye ederim:

Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)

Popüler programlama dillerinin pek çoğu bazı düzenli ifadeler için çok yavaş bir şekilde düzenli ifadeler uygulamak nasıl açıklar, ve daha hızlı olduğundan biraz farklı bir yöntem açıklar. Madde içeren bazı detayları nasıl önerilen uygulama çalışmaları da dahil olmak üzere bazı kaynak kodu C olabilir biraz ağır okuma eğer sadece başlangıç için öğrenmek düzenli ifadeler, ama bence değer bilmek arasındaki fark bu iki yaklaşım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gee Cee

    Gee Cee

    1 AĞUSTOS 2009
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008