Type = TypeName | ArrayType | PackedType | EnumType | ObjectType
| ProcedureType | RecordType | RefType | SetType | SubrangeType
| "(" Type ")".
ArrayType = ARRAY [Type {"," Type}] OF Type.
PackedType = BITS ConstExpr FOR Type.
EnumType = "{" [IdList] "}".
ObjectType = [TypeName | ObjectType] [Brand] OBJECT Fields
[METHODS Methods] [OVERRIDES Overrides] END.
ProcedureType = PROCEDURE Signature.
RecordType = RECORD Fields END.
RefType = [UNTRACED] [Brand] REF Type.
SetType = SET OF Type.
SubrangeType = "[" ConstExpr ".." ConstExpr "]".
Brand = BRANDED [ConstExpr].
Fields = [ Field {";" Field} [";"] ].
Field = IdList (":" Type & ":=" ConstExpr).
Methods = [ Method {";" Method} [";"] ].
Method = Id Signature [":=" ConstExpr].
Overrides = [ Override {";" Override} [";"] ].
Override = Id ":=" ConstExpr .