Tengo algunos archivos fuente Perl razonables (no ofuscados), y necesito un tokenizer, que lo dividirá en tokens, y devolverá el tipo de token de cada uno de ellos, p. para el script¿Cómo se tokeniza el código fuente de Perl?
print "Hello, World!\n";
volvería algo como esto:
- palabra clave 5 bytes
- espacio en blanco 1 byte
- entre comillas dobles cuerdas 17 bytes
- punto y coma 1 byte
- espacios en blanco 1 byte
¿Cuál es la mejor biblioteca (preferiblemente escrita en Perl) para esto? Tiene que ser razonablemente correcto, es decir, debería ser capaz de analizar construcciones sintácticas como qq{{\}}}
, pero no tiene que saber acerca de analizadores especiales como Lingua::Romana::Perligata. Sé que el análisis de Perl es Turing-completo, y solo Perl puede hacerlo bien, pero no necesito la corrección absoluta: el tokenizador puede fallar o ser incompatible o puede asumir algún defecto en algunos casos de esquina muy raros, pero debería funcionar correctamente la mayor parte del tiempo. Debe ser mejor que el resaltado de sintaxis integrado en un editor de texto promedio.
FYI Probé la PerlLexer en pygments, que trabaja razonable para la mayoría de las construcciones, excepto que no se puede encontrar el segundo print
palabra clave en éste:
print length(<<"END"); print "\n";
String
END
+1 respuesta divertida – Dacav