Thread overview
Grammar documentation
Feb 06, 2002
Martin M. Pedersen
Feb 06, 2002
Walter
February 06, 2002
Hi,

I have noted that the expression grammar is documented like this:

    AddExpression:
        MulExpression
        MulExpression + MulExpression
        MulExpression - MulExpression
        MulExpression ~ MulExpression

However, I would expect it to be:

    AddExpression:
        MulExpression
        AddExpression + MulExpression
        AddExpression - MulExpression
        AddExpression ~ MulExpression

as the former does not allow multiple additions to appear in sequence (e.g. a+b+c). This goes for all the expressions.

Can we agree that this is a documentation error?

Other languages I have studied have a very formal definition, either as a YACC source, or something close to it. What I would like to see, is a complete formal grammar of the language. I acknowledge that Walter does not necessarily want to make the sources of his compiler public, but e.g. a YACC grammar - without productions and lexical analyzer - would make the language specification more useful for others implementing the language. If, for example, someone other than Walter wanted to start a dfront project, this could be a good starting point.

But perhaps I'm to early out?

Regards,
Martin M. Pedersen



February 06, 2002
"Martin M. Pedersen" <mmp@www.moeller-pedersen.dk> wrote in message news:a3psna$1oao$1@digitaldaemon.com...
> Hi,
>
> I have noted that the expression grammar is documented like this:
>
>     AddExpression:
>         MulExpression
>         MulExpression + MulExpression
>         MulExpression - MulExpression
>         MulExpression ~ MulExpression
>
> However, I would expect it to be:
>
>     AddExpression:
>         MulExpression
>         AddExpression + MulExpression
>         AddExpression - MulExpression
>         AddExpression ~ MulExpression
>
> as the former does not allow multiple additions to appear in sequence
(e.g.
> a+b+c). This goes for all the expressions.
>
> Can we agree that this is a documentation error?

Yes.

> Other languages I have studied have a very formal definition, either as a YACC source, or something close to it. What I would like to see, is a complete formal grammar of the language. I acknowledge that Walter does
not
> necessarily want to make the sources of his compiler public, but e.g. a
YACC
> grammar - without productions and lexical analyzer - would make the
language
> specification more useful for others implementing the language. If, for example, someone other than Walter wanted to start a dfront project, this could be a good starting point.
>
> But perhaps I'm to early out?

I'm going to do a formal grammar. I work on it in parallel with the language implementation.



February 06, 2002
Walter wrote:

> "Martin M. Pedersen" <mmp@www.moeller-pedersen.dk> wrote in message news:a3psna$1oao$1@digitaldaemon.com...
> > Other languages I have studied have a very formal definition, either as a YACC source, or something close to it. What I would like to see, is a complete formal grammar of the language. I acknowledge that Walter does
> not
> > necessarily want to make the sources of his compiler public, but e.g. a
> YACC
> > grammar - without productions and lexical analyzer - would make the
> language
> > specification more useful for others implementing the language. If, for example, someone other than Walter wanted to start a dfront project, this could be a good starting point.
> >
> > But perhaps I'm to early out?
>
> I'm going to do a formal grammar. I work on it in parallel with the language implementation.

May I recommend good old BNF?  (Backus-Naur Form, a notation for Context-Free Grammars, http://cui.unige.ch/db-research/Enseignement/analyseinfo/BNFweb.html)

YACC/BISON draw heavily on BNF for their own notation, but it isn't the same, and fails to capture the full richness of BNF (which leads to the limitations of the kinds of languages YACC/BISON can handle, and the frequent need for "explosions" of semantic actions to implement BNF rules YACC can't support directly).  However, I doubt D has any need of "full" BNF, so perhaps a YACC grammar would be the expedient way to go, especially if the goal is to get D everywhere ASAP.

There are also several "Extended-BNFs" that seek to bridge the gap between BNF and YACC language descriptions.  I don't recommend them.

A disadvantage of using YACC as the "definition" of a language is that it makes it more difficult to leave the World of YACC.  BNF is more abstract, and thus more portable.


-BobC