Mam kilka rozsądnych (nie zamaskowanych) plików źródłowych Perla i potrzebuję tokenizera, który podzieli go na tokeny i zwróci typ tokena każdego z nich, np. za scenariuszJak tokenizować kod źródłowy Perla?
print "Hello, World!\n";
byłoby powrócić coś takiego:
- kluczowego 5 bajtów
- spacje 1 bajt
- podwójnie cytowany-ciąg 17 bajtów
- średnik 1 bajt
- biały 1-bajtowy
Która biblioteka jest najlepsza (najlepiej napisana w języku Perl)? Musi to być poprawne, tzn. Powinno być w stanie analizować konstrukcje syntaktyczne, takie jak qq{{\}}}
, ale nie musi wiedzieć o specjalnych analizatorach składniowych, takich jak Lingua::Romana::Perligata. Wiem, że przetwarzanie Perla to Turing-complete, i tylko Perl może to zrobić dobrze, ale nie potrzebuję absolutnej poprawności: tokenizer może zawieść lub być niekompatybilny lub przyjąć pewne domyślne w rzadkich przypadkach narożnych, ale powinien działać właściwie przez większość czasu. Musi być lepszy niż podświetlanie składni wbudowane w średni edytor tekstu.
FYI Próbowałem PerlLexer w pygments, który działa rozsądna dla większości konstrukcji, poza tym, że nie można znaleźć 2nd print
słowa kluczowego w tej jednej:
print length(<<"END"); print "\n";
String
END
+1 zabawna odpowiedź – Dacav