GLR parsing algorithm resources [closed]
Asked Answered
L

4

24

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.

Lingam answered 25/1, 2010 at 0:22 Comment(2)
Very cool project (Terse, not the parser generator), I’ll follow its progress with interest.Institution
Unfortunately I've been distracted by many things, so the project has stalled but... more work will commence on it soon promise!!Lingam
G
17

Some good stuff I've come across before online:

and for more detail:

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

Gleeful answered 26/1, 2010 at 0:43 Comment(0)
A
6

Adrian Johnstone publishes a lot of work on advanced versions of GLR algorithms. His publications website will likely be an interesting resource.

Asgard answered 4/11, 2010 at 14:30 Comment(0)
S
5

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).

Strapper answered 9/3, 2010 at 13:44 Comment(0)
R
2

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.

Runin answered 25/1, 2010 at 0:30 Comment(4)
Is it really as simple as that? Or are there specific alternative GLR algorithms out there?Lingam
That's basically it from my reading of the Bison manual (gnu.org/software/bison/manual/bison.html#GLR-Parsers) - it's actually pretty clear on how GLR parsers work.Runin
You might find it a bit more complicated than this.Asgard
yeah, having read one of the papers @Matthew Slattery recommended, I do think the algorithm is rather more involved than that :)Lingam

© 2022 - 2024 — McMap. All rights reserved.