Pegged, a Parsing Expression Grammar (PEG) generator in D
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sun Mar 11 15:48:05 PDT 2012
On 3/11/12 3:02 AM, Philippe Sigaud wrote:
> There is an operator to drop unnecessary nodes (':').
Good.
> Apart from that,
> a Pegged grammar is a self-contained entity: it automatically cuts
> nodes coming from other grammars, to simplify the tree (it keeps the
> matcheds substrings, of course). I plan to code different type of
> grammars, to play with the way the deal with nodes coming from outside
> rules and grammar composition.
Not getting this, but picture me with an intense look and nodding.
> As for the root, the PEG rule is that the first rule in the grammar is
> the root. But currently, I deliberately made my grammars unsealed, in
> that the user can call any rule inside the grammar to begin parsing:
>
> mixin(grammar("
> A<- B C
> B<- ...
> C<-
> "));
>
> A.parse("some input"); // standard way to do it, the parse tree will
> be rooted on an 'A' node.
> B.parse("some input"); // also possible, the parse tree will be rooted
> on a 'B' node.
That sounds cool, but how do you say that in the construct
Expression <- Term "+" Term
the "+" should become the root?
Andrei
More information about the Digitalmars-d-announce
mailing list