Empecé a aprender ANTLR y tengo el libro de 2007 "The Definitive ANTLR Reference" y ANTLRWorks (una herramienta interactiva para crear gramáticas). Y, siendo ese tipo de persona, comencé en el Capítulo 3. ("Una visita rápida para los impacientes").Comenzando con ANTLR y evitando errores comunes
Es un proceso bastante doloroso, especialmente porque algunos errores son bastante impenetrables (por ejemplo, ANTLR: "missing attribute access on rule scope" problem, lo que para mí significa "tienes algo mal"). También tengo algunas gramáticas muy simples (3-4 producciones solamente) y entrada simple (2 líneas) que cuando se ejecutan dan el error "OutOfMemory".
El sitio ANTLR es útil pero algo fragmentado y algunos usuarios de SO han comentado (https://stackoverflow.com/questions/278480/good-tutorial-for-antlr) que el libro y los tutoriales esperan un alto nivel de entrada. He sido reacio a acercarme a la lista de discusión ANTLR debido a esto.
MÁS TARDE Estamos empezando a entenderlo. Sería útil contar con ejemplos simples y confiables que podrían expandirse suavemente. Ciertamente vale la pena dominarlo ya que hemos remodelado bastante nuestro pensamiento basado en ANTLR.
Un problema es que ANTLR V3 tiene cambios significativos de V2. Una respuesta en SO (y en las páginas ANTLR) se refería a una sintaxis V2 que ya no está disponible.
Algunas de las preguntas ANTLR sobre SO me han ayudado mucho, pero encontrarlas es un poco ad hoc. Así que me gustaría saber cómo los usuarios de SO pueden ayudar a que el proceso de aprendizaje sea menos doloroso. (Si consulta el libro de referencia, sería útil señalar páginas concretas).
EDIT. @duffymo y @JamesAnderson han confirmado que ANTLR es un trabajo duro, en gran parte porque los analizadores son difíciles. (FWIW He pasado por LEX/YACC, etc. y no hay duda de que ANTLR es más potente y más fácil de usar.) Creo que aún sería útil tener áreas donde es posible evitar el ensuciamiento como:
- asegurar la correcta capitalización de los nombres de las variables
- nombre de paquete complementario a lexer, así como analizador
- cuidar sobre el orden de las reglas, ya que afecta precedencia
vez más de este tipo sería útil.
Aunque no específicamente sobre ANTLR, Ter escribió un libro posterior llamado Language Implementation Patterns. Es un * excelente * trabajo con relevancia tanto para principiantes como para veterinarios. I | MVHO es una necesidad absoluta para cualquiera que realice un análisis sintáctico. –