tdparser

Yukarıdan aşağıya algoritmaya dayanan çok basit bir ayrıştırma kütüphanesi
Şimdi İndirin

tdparser Sıralama ve Özet

Reklamcılık

  • Rating:
  • Lisans:
  • MIT/X Consortium Lic...
  • Fiyat:
  • FREE
  • Yayıncı adı:
  • Raphael Barrois
  • yayıncı web sitesi:
  • https://github.com/rbarrois/

tdparser Etiketler


tdparser Açıklama

TDParser, Python'da basit bir Lexer / ayrıştırıcıyı yazmanın, yukarıdan aşağıya ayrıştırma algoritmasını kullanarak verimli bir şekilde yazmayı amaçlayan bir Python kütüphanesidir. Diğer python kütüphaneleri ayrıştırma / mesajlaşma aletleri sağlar (bkz. Http://nedbatchelder.com/text/python) -Parsers.html Birkaç örnek için); TDParser'in ayırt edici özellikleri şunlardır: - Docstring tabanlı dilbilgisi tanımlarından kaçının - genel bir ayrıştırıcı yapısı sağlayın, herhangi bir gramer işlemi yapabilir - Kod oluşturmayın - Kullanıcının ayrıştırma sonuçlarının doğasına karar verin: Soyut sözdizimi ağacı, nihai ifade,. ..ExampleHere basit bir aritmetik ayrıştırıcı için tanımdır: TDParser ithalat Lexer, Tokenclass tamsayı (Token): def __it __ (öz, metin): self.Value = int (metin) def nud (öz, bağlam): "" " Belirteçinin ne değerlendirir "" "Self.ValueClass ilavesi (belirteç): LBP = 10 # öncelik def led (öz, sol, içerik):" "" İki ifadenin arasında olduğunda bu belirteç değerini hesaplayın. "" "# İfadeyi sağa getirin, bir sonraki sınırda durdurun. Aynı önceliktir. bağlam): Sola dön - Context.Expression (self.lbp) def nud (öz, içerik): "" "A '-' ne zaman solda bulunur bir ifade. "" "# Bu, bir sonraki ifade dönüşünün tersini döndürdüğümüz anlamına gelir. Sol, Bağlam): Sola dönün * Context.Expression (self.lbp) Lexer = Lexer (with_parens = true) Lexer.register_token (tamsayı, requer (r '\ d +')) Lexer.register_Token (ek, reque.com (r '\ +')) lexer.register_token (alt işlem, requister (r '-')) Lexer.register_token (çarpma, yeniden program (R '*')) DEF Ayrsu (Metin): Lexer.parse döndürün (Metin) Kullanımı Beklenen değeri döndürür: >>> ayrıştırma ("1 + 1") 2 >>> ayrıştırma ("1 + -2 * 3") - 5Adding yeni belirteçler basittir: sınıf bölümü (belirteç): LBP = 20 # Çarpma DEF LED'i (öz, sol, içerik) olarak aynı öncelik: sola dön // Context.Expression (self.lbp) Lexer.register_token (bölünme, yeniden program (r '/')) ve kullanarak:> >> Ayrıştırma ("3 + 12/3") 7, Üst Teknik İşletmeciyi Ekleyin: Sınıf Gücü (Token): LBP = 30 # Mult DEF LED'ten daha yüksek (öz, Sol, bağlam): # Düşük bir önceliğe sahip ifadeleri seçiyoruz, böylece # 2 ** 3 ** 2, 2 ** (3 ** 2) Sol ** Context.Expression (self.lbp - 1) Lexer olarak bildirir. .Register_Token (Güç, Güç, ROMILE (R '\ * \ *')) ve kullanın: >>> Parse ("2 ** 3 ** 2") 512Product'ın ana sayfası


tdparser İlgili Yazılım

minitage.recipe.du

ZC.Buildout yazılımlarını veya python paketlerini derlemek ve yüklemek ve komut dosyaları oluşturmak veya ... ...

74

İndirmek