¿Dónde puedo aprender los conceptos básicos de escribir un lexer?


Quiero aprender a escribir un lexer. Mi curso universitario tenía una tarea en la que teníamos que escribir un analizador (y un lexer para ir junto con él), pero esto nos fue dado sin instrucción o retroalimentación (más allá de la marca), así que realmente no aprendí mucho de él.

Después de buscar este tema, solo puedo encontrar escritos bastante avanzados que se centran en áreas que siento que están unos pasos por delante de donde estoy. Quiero una discusión sobre los fundamentos de la escritura de un lexer para una muy simple lenguaje que puedo usar como base para investigar la tokenización de lenguajes más complejos.

En esta etapa no estoy realmente interesado en las mejores prácticas o técnicas de optimización, sino que prefiero un enfoque en lo esencial. ¿Cuáles son algunos buenos recursos para comenzar?

Author: vitaut, 2011-06-02

2 answers

Básicamente hay dos enfoques principales para escribir un léxico:

  1. Creando uno escrito a mano en cuyo caso recomiendo este pequeño tutorial.
  2. Usando algunas herramientas de generador lexer como lex. En este caso, recomiendo leer los tutoriales de la herramienta particular de elección.

También me gustaría recomendar el tutorial Caleidoscopio de la documentación LLVM. Se ejecuta a través de la implementación de un lenguaje simple y en particular demuestra cómo escribir un léxico pequeño. Hay una versión en C++ y una versión Caml objetiva del tutorial.

El libro de texto clásico sobre el tema es Compilers: Principles, Techniques, and Tools también conocido como el Libro del Dragón. Sin embargo, esto probablemente cae dentro de la categoría de "escritura bastante avanzada ups".

 48
Author: vitaut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-26 13:52:12

El Libro del Dragón es probablemente la guía definitiva sobre el tema, aunque puede ser un poco abrumador. Los Patrones de Implementación del Lenguaje y la Pragmática del Lenguaje de programación también son grandes recursos.

 9
Author: Brandon Moretz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-02 15:19:09