LLVM / C--

Neither C-- nor LLVM provide this. Why do you need a GLR parser


Parsing with arbitrary context-free grammars has two key advantages: (1)
unbounded lookahead, and (2) support for ambiguous grammars. Unbounded
lookahead is achieved by allowing multiple potential parses to coexist for as
long as necessary. Similarly, ambiguity is handled by letting potential
parses be coalesced, with special action taken to handle the ambiguous region
of the input. In general, by using the GLR algorithm, Elkhound avoids the
difficulty of trying to make a language grammar fit the LALR(1) restrictions.

When implemented carefully, the GLR algorithm has the same time complexity as
the CYK algorithm and Earley algorithm -- O(n3). However, GLR carries two
additional important advantages:
The time required to run the algorithm is proportional to the degree of
nondeterminism in the grammar -- on deterministic grammars the GLR algorithm
runs in O(n) time (this is not true of the Earley and CYK algorithms)
The GLR algorithm is "on-line" -- that is, it consumes the input tokens in a
specific order and performs as much work as possible after consuming each
Since most programming languages are deterministic or "almost deterministic",
in practice the GLR algorithm often performs markedly better than others.

In short : to have cutting-edge stuff and to forget bison another GNU tool ...

Best Regards,


Is your goal to implement a new language, or to implement C++?


This doesn't really answer the question. If you need to get C/C++
into llvm, it would make sense to use the most mature, stable, and
supported tool you can. In this case that is llvm-gcc. If what you
need is hacking on languages, do whatever.