2011-06-02 21 views
50

Quiero aprender cómo escribir un analizador léxico. Mi curso universitario tenía una misión en la que teníamos que escribir un programa de análisis (y un analizador léxico para ir junto con él), pero esto fue dado a nosotros con ninguna instrucción o realimentación (más allá de la marca), así que en realidad no aprender mucho de él.¿Dónde puedo aprender los conceptos básicos de escribir un lexer?

Después de buscar este tema, solo puedo encontrar redacciones bastante avanzadas que se centran en áreas que creo que están un paso por delante de donde estoy. Quiero una discusión sobre los fundamentos de la escritura de un analizador léxico de un lenguaje muy simple que puedo usar como base para la investigación de tokenising lenguajes más complejos.

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

Respuesta

42

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

  1. Creación de un uno en cuyo caso te recomiendo this small tutorial escrito a mano.
  2. El uso de algunos instrumentos de generación de analizador léxico como lex. En este caso, recomiendo leer los tutoriales a la herramienta particular de su elección.

También me gustaría recomendar el Kaleidoscope tutorial 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 pequeño lexer. Hay una versión del tutorial C++ y Objective Caml.

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 pertenece a la categoría de "reseñas bastante avanzadas".

+2

El tutorial Kaleidoscope fue la parte que realmente respondió esta pregunta para mí. –

8

El Dragon Book es probablemente la guía definitiva sobre el tema, aunque puede ser un poco abrumador. Language Implementation Patterns y Programming Language Pragmatics son grandes recursos también.

+3

+1 en el libro del dragón. Aprendí MUCHO cuando estaba en la universidad. Sí, hay muchas cosas allí, pero si estás realmente interesado en el diseño e implementación del compilador, es un gran recurso. – DarinH

Cuestiones relacionadas