• Publicidad

Parsear código "perl"

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Parsear código "perl"

Notapor kidd » 2005-06-11 20:15 @885

Hola:

Ayer por alguna razón estaba buscando algo en el sitio de Perl Monks cuando me tope con un post que puso merlyn donde habla acerca de como es extremadamente díficil inclusive hasta casi imposible crear un buen parser de perl.

En la participación pone solamente un par de ejemplos que complicarían la vida de cualquier persona que quiera crear un buen parser en perl, debido a la gran cantidad de formas en que uno puede escribir código en perl.

La conclusión: "La única cosa que puede hacer un parse de Perl(el lenguaje) es perl(el binario).

Se me hizo bastante interesante, y más porque ya hace tiempo que me había dado cuenta que la aplicación que uso para editar mis scripts, DzSoft Perl Editor, de pronto hace unas desiciones extrañas con el código, el ejemplo más común es cuando usas el # en situaciones donde no lo quieres usar como comentario.

Aquí les dejo la liga del post y sería interesante escuhar sus comentarios:
http://www.perlmonks.org/index.pl?node_id=44722


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Publicidad

Notapor Perl user » 2005-06-11 22:11 @966

Claro.. y mas aún porque como lo platicamos merlyn y yo en su momento.. para escribir un buen parser no solo necesitas conocer el lenguaje sino también la gramática. Sin embargo... Damain Conway, experto en parsing ha creado el módulo llamado Parse::RecDescent que es capaz de generar Parsers Descendentes Recursivos de manera MUY BUENA. A que voy con esto? si quieres hacer un buen parser, es necesario conocer COMO realmente se genera lo que quieres analizar.

Hace tiempo vi la gramática para Perl 6, creo que Sean M. Burke la había publicado en algún lado, pero no recuerdo. Para mi lenguaje, yo escribí from scratch mi Parser descendente recursivo, y bueno, tiene una excelente recuperación de errores.

Conclusión: el tema de Parsing como tal no es algo tan sencillo como simple análisis, hay mas a profundidad, por allí merlyn incluso tiene un artículo sobre Parse::RecDescent para un pequeño lenguaje teórico.

Saludos,

Comercial: Damian Conway liberará su mas reciente libro en algunos 2 meses, llamado Perl Best Practices por editorial O'Reilly, 100% recomendado ( cualquier texto de él es MUY recomendado ).
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor kidd » 2005-06-12 08:14 @385

Hola:

Hace algunos días en perl.com Adam Kennedy escribió un artículo acerca de un módulo que escribió que se llama PPI (Parse, Analyze and Manipulate Perl).

Me pareció bastante interesante aunque todavía no lo pruebo espero hacerlo en cuanto tenga chance, el módulo lo pueden encontrar en CPAN en la siguiente dirección:
http://search.cpan.org/~adamk/PPI-0.991/lib/PPI.pm

NOTA: Ya recordé que la liga al post de merlyn la encontré justamente ahí.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Perl user » 2005-06-12 10:20 @472

Hablando de parsing, la segunda edición de Advanced Perl Programming por Simon Cozens traerá un capítulo dedicado a Parse::RecDescent, el cual será liberado en este mes.

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron