Consider the following reasonable D program:
---
void main()
{
import std.stdio : writeln;
int[][] var = new int[][](3, 2);
writeln(var);
}
---
The relevant parts of the grammar:
NewExpressionWithArgs:
'new' AllocatorArguments? Type '(' ArgumentListopt ')'
Type:
TypeCtors? BasicType
TypeCtors? BasicType AltDeclarator
AltDeclarator:
BasicType2? Identifier AltDeclaratorSuffixes
AltDeclaratorSuffix:
'[' ']'
"int[][]" cannot be parsed with the AltDeclarator rule because there is no identifier between "int" and "[][]"