compiler-construction parsing parser-generator glr

compiler construction - Recursos de algoritmo de análisis GLR



compiler-construction parsing (4)

Adrian Johnstone publica mucho trabajo sobre versiones avanzadas de algoritmos GLR. Su sitio web de publicaciones probablemente será un recurso interesante.

Estoy escribiendo un generador de analizador GLR y me gustaría recibir algunos consejos sobre los recursos relacionados con este algoritmo tanto en Internet como en la variedad de árboles muertos (libros para aquellos que no están familiarizados con el habla geek).

Sé que Bison puede generar analizadores GLR, y dado que está bajo la GPL puedo examinar su código, sin embargo, sería bueno tener una descripción completa del algoritmo.

Entonces, ¿alguien sabe de algún buen recurso que pueda usar? Gracias.


Algunas cosas buenas que he encontrado antes en línea:

y para más detalles:

Y sé de un tercer analizador GLR de código abierto: DParser .


La mejor descripción que he visto, con imágenes que ilustran cada paso del algoritmo, se encuentra en este libro:

http://books.google.ca/books?id=05xA_d5dSwAC&lpg=PA381&dq=generalized%20deterministic%20parsers&pg=PA381#v=onepage&q=generalized%20deterministic%20parsers&f=false

Para pseudocódigo, vaya a la fuente: LR Generalized Parsing by Tomita, página 70 o menos. El artículo de Farshi contiene una descripción compacta.

http://books.google.ca/books?id=PvZiZiVqwHcC&lpg=PP1&dq=generalized%20lr%20parsing&pg=PA70#v=onepage&q=&f=false

Es una de las técnicas que probé para qb.js ( qbasic en javascript ).


Por lo que sé, funciona igual que un analizador LALR, excepto cuando encuentra una ambigüedad.

Cuando lo hace, esencialmente se divide en análisis separados correspondientes a las posibles opciones en ese punto, y continúa con ellos en tándem: cuando un análisis falla (debido a encontrar un elemento ilegal), simplemente se elimina, porque debe haber sido un Supongo mal en una ambigüedad anterior.

Al final, todos menos un análisis deberían haber muerto, y el que sobrevive es el análisis "correcto" de esos puntos ambiguos.