Thread overview
D2 Grammar
Jan 12, 2009
Paolo Invernizzi
Jan 12, 2009
mpt
Jan 12, 2009
BCS
January 12, 2009
In the documentation, the grammar for Declarator is:

Declarator:
        BasicType2 Declarator DeclaratorSuffixesopt
        BasicType2 Identifier DeclaratorSuffixesopt

How is possible to parse something like " int i,j; "?
What are the parser reduction steps?

Thanks in advance!
Paolo



January 12, 2009
Paolo Invernizzi wrote:
> In the documentation, the grammar for Declarator is:
> 
> Declarator:
>         BasicType2 Declarator DeclaratorSuffixesopt
>         BasicType2 Identifier DeclaratorSuffixesopt
> 
> How is possible to parse something like " int i,j; "?
> What are the parser reduction steps?
> 
> Thanks in advance!
> Paolo
> 

Why not take a peek at the source :p? parse.c has the method parseDeclarator. Like any recursive descent parser, it just checks the next token and then chooses what to parse next. You have to kind of unwind the grammar a bit to get all possible tokens that can appear next.

January 12, 2009
Reply to Paolo,

> In the documentation, the grammar for Declarator is:
> 
> Declarator:
> BasicType2 Declarator DeclaratorSuffixesopt
> BasicType2 Identifier DeclaratorSuffixesopt
> How is possible to parse something like " int i,j; "? What are the
> parser reduction steps?
> 
> Thanks in advance!
> Paolo

The  only real definition for the D grammar is the parser code itself (cpp source code). The BNF in the docs is known to be incomplete and/or wrong. In the past Walter has edited it from corrections people has submitted so...