problem with declaration grammar?

Christopher Wright dhasenan at gmail.com
Thu Feb 19 03:54:13 PST 2009


jerry quinn wrote:
> Christopher Wright Wrote:
> 
>> 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.
> 
> What you describe sounds like what I'd expect.

It's from the 1.0 grammar.

> Maybe I'm missing something.  The grammar shown in http://www.digitalmars.com/d/2.0/declaration.html has the following rules:

That looks to be in error.



More information about the Digitalmars-d mailing list