$(BNF /ArrayType := DynamicArray | StaticArray | SliceArray | AssociativeArray /DynamicArray := T "[" "]" /StaticArray := T "[" E "]" /SliceArray := T "[" E ".." E "]" # for slicing tuples /AssociativeArray := T "[" T "]" /)
$(BNF BaseClassType := Protection? BasicType)
$(BNF DelegateType := ReturnType delegate ParameterList)
$(BNF FunctionType := ReturnType function ParameterList)
$(BNF IdentifierType := Type? Identifier)
Syntax error.
$(BNF IntegralType := char | int | float | ...)
$(BNF ModifierType := ModAttrType | ModParenType /ModAttrType := Modifier Type /ModParenType := Modifier "(" Type ")" /Modifier := const | immutable | shared | inout)
$(BNF ModuleScopeType := ".")
$(BNF PointerType:= Type "*")
$(BNF TemplateInstanceType := / Identifier "!" (TemplateArgumentList | TemplateArgumentSingle))
$(BNF TypeofType := typeof "(" (Expression | return) ")")