Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a227b654cbd8ecfa

Jump to content

Draft:GLL parser

From Wikipedia, the free encyclopedia


GLL parser
ClassParsing, context-free
Data structureString
Worst-case performance
  • for LL(1) grammars
  • for ambiguous context-free grammars

A GLL parser (Generalized Left to right, Leftmost derivation) is a parser based on a modification of LL parsers to recognize languages described by any context-free grammar.[1] While the theory behind "generalising" deterministic parsers had already been developed by Bernard Lang in 1974,[2] it wasn't until 2010 that a fully generalized LL recognizer was put into practice.[1]

Algorithm

[edit]

Most implementations of GLL parsers use a recursive descent parser as their base and replace the normal stack with a graph-structured stack, similar to the GLR algorithm. Whereas recursive descent parsers usually make implicit use of the function-call-stack, a GLL parser will have to manage its stack explicitly. This means that for a recursive descent parser to be turned into a GLL parser, a few smaller transformations have to be made first.[3]

Similarly to GLR, the resulting parse forest is usually represented in a shared packed parse forest (SPPF).[4] However, newer, simpler methods have been developed as well.[5]

Advantages

[edit]

Due to being based on recursive descent parsers, the source code for a GLL parser will usually closely match the grammar it parses.[1] Compared to GLR, GLL parsers are generally easier to implement and, due to their top-down nature, can generate better error messages.[6]

See also

[edit]

References

[edit]
  1. ^ a b c Scott, Elizabeth; Johnstone, Adrian (2010-09-17). "GLL Parsing". Electronic Notes in Theoretical Computer Science. 253 (7): 177–189. doi:10.1016/j.entcs.2010.08.041. ISSN 1571-0661.
  2. ^ Lang, Bernard (1974). Deterministic techniques for efficient non-deterministic parsers. International Colloquium on Automata, Languages, and Programming. Springer. pp. 255--269. doi:10.1007/978-3-662-21545-6_18. ISBN 978-3-662-21545-6.
  3. ^ Cappers, Bram (2014-08-11). Exploring and visualizing GLL parsing (PDF) (Thesis). Retrieved 2026-06-21.
  4. ^ Scott, Elizabeth; Johnstone, Adrian (2013-10-01). "GLL parse-tree generation". Science of Computer Programming. 78 (10): 1828–1844. doi:10.1016/j.scico.2012.03.005. ISSN 0167-6423.
  5. ^ Scott, Elizabeth; Johnstone, Adrian; van Binsbergen, L. Thomas (2019-04-15). "Derivation representation using binary subtree sets". Science of Computer Programming. 175: 63–84. doi:10.1016/j.scico.2019.01.008. ISSN 0167-6423.
  6. ^ Afroozeh, Ali; Izmaylova, Anastasia (2015-10-15), One parser to rule them all, Association for Computing Machinery, pp. 151–170, doi:10.1145/2814228.2814242, ISBN 9781450336888

Category:Parsing algorithms