September 27, 2014
https://issues.dlang.org/show_bug.cgi?id=13538

          Issue ID: 13538
           Summary: Divide old C style syntax from D style grammar rule
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: spec
          Severity: normal
          Priority: P1
         Component: websites
          Assignee: nobody@puremagic.com
          Reporter: k.hara.pg@gmail.com

Current declaration grammar contains both D style syntax and C style one.

Decl:
    StorageClasses_opt BasicType Declarators ;

[snip]

Declarator:
    BasicType2_opt ( Declarator ) DeclaratorSuffixes_opt
    BasicType2_opt Identifier DeclaratorSuffixes_opt    // [x]

[snip]

DeclaratorSuffix:
    [ ]
    [ AssignExpression ]
    [ Type ]
    Parameters MemberFunctionAttributes_opt
    TemplateParameters Parameters MemberFunctionAttributes_opt Constraint_opt

The grammar [x] accept both:
   int[] var
and
   int var[]

But it's confusing, and hard to understand what the grammar will accept. Instead of mixing C style grammar rules under the one "Declarator", I'd propose to separate them into "AltDeclarator".

And finally we can easily say that the AltDeclarator will be deprecated.

--