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"