2010-01-25 14 views
19

I am writing a GLR parser generator y me gustaría obtener 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 lenguaje geek).recursos de algoritmo de análisis GLR

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.

+0

Proyecto muy bueno (Terse, no el generador de analizadores), voy a seguir su progreso con interés. –

+0

Lamentablemente me han distraído muchas cosas, por lo que el proyecto se ha estancado pero ... ¡más trabajo comenzará pronto! – ljs

Respuesta

10

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

y para más detalles:

Y sé de una tercera fuente abierta GLR analizador: DParser.

+0

¡Excelente! Gracias. – ljs

2

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

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

Al final, todos menos uno han muerto, y el que queda es el análisis "correcto" de esos puntos ambiguos.

+0

¿Es realmente tan simple como eso?¿O hay algoritmos GLR alternativos específicos por ahí? – ljs

+0

Eso es básicamente por mi lectura del manual de Bison (http://www.gnu.org/software/bison/manual/bison.html#GLR-Parsers). De hecho, es bastante claro cómo funcionan los analizadores de GLR. –

+0

Puede que le resulte un poco más complicado que esto. –

3

La mejor descripción que he visto, con imágenes que ilustran cada paso del algoritmo, está contenida 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, ir a la fuente: Generalizado análisis sintáctico LR por Tomita, página 70 más o menos. El documento 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 in javascript).

5

Adrian Johnstone publica mucho trabajo en versiones avanzadas de algoritmos GLR. Su publications website probablemente sea un recurso interesante.

Cuestiones relacionadas