declaration:
attribute*
;
declaration2:
aliasDeclaration
| aliasThisDeclaration
| classDeclaration
| conditionalDeclaration
| constructor
| destructor
| enumDeclaration
| functionDeclaration
| importDeclaration
| interfaceDeclaration
| mixinDeclaration
| mixinTemplateDeclaration
| pragmaDeclaration
| sharedStaticConstructor
| sharedStaticDestructor
| staticAssertDeclaration
| staticConstructor
| staticDestructor
| structDeclaration
| templateDeclaration
| unionDeclaration
| unittest
| variableDeclaration
| attributeDeclaration
| invariant
| versionSpecification
| debugSpecification
| '{' declaration+ '}'
;