views:

288

answers:

4

Hi, I am writing a GLR parser generator and would like some advice on resources relating to this algorithm both on the internet and of the dead-tree variety (books for those unfamiliar with the geek-speak).

I know Bison can generate GLR parsers, and given it's under the GPL I can examine its code, however it'd be nice to have a full description of the algorithm.

So, does anybody know of any good resources out there which I can make use of? Thanks.

+2  A: 

From what I'm aware, it functions the same as an LALR parser - except when it encounters an ambiguity.

When it does, it essentially divides into separate parses corresponding to the possible options at that point, and continues with them in tandem - when a parse fails (due to encountering an illegal element), it is simply dropped, because it must have been a wrong guess at an earlier ambiguity.

At the end, all but one parse should have died - and the surviving one is the "correct" parse of those ambiguous points.

Anon.
Is it really as simple as that? Or are there specific alternative GLR algorithms out there?
kronoz
That's basically it from my reading of the Bison manual (http://www.gnu.org/software/bison/manual/bison.html#GLR-Parsers) - it's actually pretty clear on how GLR parsers work.
Anon.
You might find it a bit more complicated than this.
Ira Baxter
yeah, having read one of the papers @Matthew Slattery recommended, I do think the algorithm is rather more involved than that :)
kronoz
+4  A: 

Some good stuff I've come across before online:

and for more detail:

And I know of a third open source GLR parser: DParser.

Matthew Slattery
Excellent! Thank you.
kronoz
A: 

The best description I have ever seen, with pictures illustrating each step of the algorithm, is contained in this book:

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

For pseudocode, go to the source: Generalized LR Parsing by Tomita, page 70 or so. Farshi's paper contains a compact description.

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

It's one of the techniques I tried for qb.js (qbasic in javascript).

Steve Hanov