problem with declaration grammar?

Christopher Wright dhasenan at gmail.com
Wed Feb 18 19:57:40 PST 2009


jerry quinn wrote:
> Hi there,
> 
> I'm not sure if I'm missing something, but I'm having trouble seeing that a simple declaration will parse correctly with the D grammar.
> 
> If we take a declaration statment like:
> 
> int x = 3;
> 
> we have (my best guess):
> 
> DeclarationStatement -> Declaration
> Declaration -> Decl
> Decl -> BasicType Declarators ;
> BasicType -> int
> Declarators -> DeclaratorInitializer
> DeclaratorInitializer -> Declarator = Initializer
> Declarator -> BasicType2 Identifier
> BasicType2 -> ????
> 
> I'm thinking that BasicType2 is optional here, rather than required as the grammar shows.  Is that correct?
> 
> Thanks
> Jerry

. Declaration -> Decl
. Decl -> BasicType Declarators
. BasicType -> "int"
. Declarators -> DeclaratorInitializer
. DeclaratorInitializer -> Declarator "=" Initializer
We agree up to here.

. Declarator -> Identifier
Here, you don't need BasicType2, and if you use it, you recurse, so 
using the rule Declarator -> BasicType2 Declarator here is useless.

. Identifier -> "x"
. Initializer -> ... -> "3"



More information about the Digitalmars-d mailing list