[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More comments, and the ANTLR code is too complex

This page is part of the web mail archives of SRFI 110 from before July 7th, 2015. The new archives for SRFI 110 contain all messages, not just those from before July 7th, 2015.

Mark H Weaver <mhw@xxxxxxxxxx> wrote:
> For example, constraining yourself to an LL(1) grammar probably rules
> out a more elegant presentation.

Hmm, I've always heard complaints about grammars that are NOT LL(1).
The obvious way to make sure it's LL(1)... is to specify it as LL(1).

> Another big problem is the amount of redundancy in this grammar.

We can look for that, at least!

> I suspect that the key to simplifying this grammar (apart from moving
> away from ANTLR for purposes of the specification) is to choose a
> different set of non-terminals.

That may be true, but I'm not sure what they would be.
I'll have to think about it, and if you have any other specific examples,
please post!

> One more nit while I'm on this subject: In the BNF conventions section,
> you write "a sweet-expression reader MUST act as if it preprocessed its
> input as follows", but as far as I can tell it's not actually possible
> to implement this as a preprocessor.  This "preprocessing" must be
> interleaved with parser, because several syntactic elements affect the
> preprocessing.  For example, the <* and *> markers manipulate the
> preprocessor's stack, and yet you need a full parser to recognize those
> markers.

You don't need a full parser.  ANTLR, for example, really does do
manipulations of the parsing stack in its *lexer* when it sees <* and *>.
In fact, there's no way in ANTLR for the parser to send messages back
to the lexer; ANTLR lexes the entire stream before it calls the parser.

I appreciate the comments.  I'll have to think about this some more.

--- David A. Wheeler