Pregunta

Quiero escribir un generador de analizadores sintácticos para los propósitos educativos, y se preguntaba si hay algunos buenos recursos en línea o tutoriales que explican cómo escribir uno. Algo en la línea de "Construyamos un compilador" por Jack Crenshaw.

Quiero escribir el generador de analizadores sintácticos LR (1) gramática.

Tengo una idea bastante acertada de la teoría detrás de la generación de las tablas de acción y Goto, pero quiero un poco recurso que me ayudará con la implementación de la misma.

idiomas preferidos son C / C ++, Java, aunque incluso en otros idiomas están bien.

Gracias.

¿Fue útil?

Solución

Estoy de acuerdo con otros, el libro del dragón es una buena base para el análisis sintáctico LR.

Si está interesado en programas de análisis descendente recursivo, una experiencia de aprendizaje enormemente divertido es este sitio web, que le guía a través de la construcción de un sistema de compilador completamente autónomo que puede compilarse a sí mismo y otros idiomas siguientes:

MetaII Compilador Tutorial

Todo esto se basa en un poco sorprendente de 10 páginas por documento técnico Val Schorre: META II: Una orientada a la sintaxis del compilador Idioma escritura a partir honesto-a-dios 1964. He aprendido cómo construir compiladores de este en 1970. Hay un momento alucinante cuando finalmente se asimilen que el compilador puede regenerarse a sí mismo ....

Sé que el autor del sitio de mis días en la universidad, pero no tienen nada que ver con el sitio web.

Otros consejos

Si quería ir a la ruta pitón Yo recomendaría el siguiente.

He encontrado ambas cosas a ser extremadamente útil y Paul McGuire el autor de pyparsing es super a ayudar cuando se encuentra con problemas. El Procesamiento de texto en Python libro es sólo una referencia útil para tener a su alcance y le ayuda a entrar en el estado de ánimo adecuado cuando se trata de construir un analizador.

Me gustaría también señalar que un lenguaje orientado a objetos es más adecuado como un motor de lenguaje de análisis porque es extensible y polimorfismo es la forma correcta de hacerlo (en mi humilde opinión). Mirando el problema en términos de una máquina de estados en lugar de "Buscar un punto y coma al final de XYZ" va a demostrar que el analizador se vuelve mucho más robusto en el final.

Espero que ayude!

En realidad, no en línea, pero el Dragón libro tiene bastante elaborado discusiones de análisis sintáctico LR.

Me pareció más fácil de aprender a escribir analizadores descenso recursivo antes de aprender a escribir analizadores LR. Bueno, para ser honesto, después de muchos años de escribir programas de análisis, no me ha sido necesario escribir un analizador sintáctico LR.

Recientemente he escrito un tutorial en CodeProject llamada Implementación Herramientas de Lenguaje de programación en C # 4.0 que describe las técnicas Analizador descendente recursivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top