2010-08-19 34 views
7

Bazı mantıklı (gizlenmemiş) Perl kaynak dosyam var ve bunları jetonlara bölen ve her birinin belirteç türünü döndüren bir belirteçlere ihtiyacım var, örn. komut dosyası içinPerl kaynak kodu nasıl belirlenir?

print "Hello, World!\n"; 

böyle bir şey döndürür:

  • kelime 5 bayt
  • boşluk 1 bayt
  • çift tırnaklı-string 17 byte
  • noktalı virgül 1 bayt
  • beyaz boşluk 1 bayt

Bunun için en iyi kütüphane hangisidir (tercihen Perl dilinde yazılmıştır)? Makul bir şekilde doğru olması gerekir, yani qq{{\}}} gibi sözdizimsel yapıları ayrışabilmelidir, ancak Lingua::Romana::Perligata gibi özel ayrıştırıcılar hakkında bilgi sahibi olmak zorunda değildir. Perl'i ayrıştırmanın Turing-complete olduğunu biliyorum ve sadece Perl'in kendisi doğru yapabilir, ama mutlak doğruluğa ihtiyacım yok: tokenizer başarısız olabilir ya da bazı çok nadir köşe durumlarda bazı varsayılanlar alabilir, ama işe yarayabilir çoğu zaman doğru. Ortalama bir metin editöründe bulunan sözdizimi vurgulamadan daha iyi olmalı. Evet

print length(<<"END"); print "\n"; 
String 
END 

cevap

7

use PPI;

:

Bilginize Ben bu birinde 2 print anahtar kelime bulamıyorum dışında çoğu yapılar için makul çalışır pygments yılında PerlLexer, denedik Sadece perl Perl'i ayrıştırabilir, ancak PPI% 95 doğru çözümdür.

+0

+1 komik cevap – Dacav

İlgili konular