www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - D2 Grammar

reply Paolo Invernizzi <paoloinvernizzi fastwebnet.it> writes:
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
Jan 12 2009
next sibling parent mpt <mpt iki.fi> writes:
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.
Jan 12 2009
prev sibling parent BCS <ao pathlink.com> writes:
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...
Jan 12 2009