iOS Developer Library — Prerelease

Developer

The Swift Programming Language

iBooks
On This Page

Summary of the Grammar

Statements

Grammar of a statement

statement expression­opt­

statement declaration­opt­

statement loop-statement­opt­

statement branch-statement­opt­

statement labeled-statement­opt­

statement control-transfer-statement­opt­

statement defer-statement­opt­

statement do-statement­opt­

statements statement­statements­opt­

Grammar of a loop statement

loop-statement for-statement­

loop-statement for-in-statement­

loop-statement while-statement­

loop-statement repeat-while-statement­

Grammar of a for statement

for-statement for­for-init­opt­expression­opt­expression­opt­code-block­

for-statement for­for-init­opt­expression­opt­expression­opt­code-block­

Grammar of a for-in statement

for-in-statement for­case­opt­pattern­in­expression­code-block­where-clause­opt­

Grammar of a while statement

while-statement while­condition-clause­code-block­

condition-clause expression­

condition-clause expression­condition-list­

condition-clause condition-list­

condition-clause availability-condition­expression­

condition-list condition­ condition­condition-list­

condition availability-condition­ case-condition­ optional-binding-condition­

case-condition case­pattern­initializer­where-clause­opt­

optional-binding-condition optional-binding-head­optional-binding-continuation-list­opt­where-clause­opt­

optional-binding-head let­pattern­initializer­ var­pattern­initializer­

optional-binding-continuation-list optional-binding-continuation­ optional-binding-continuation­optional-binding-continuation-list­

optional-binding-continuation pattern­initializer­ optional-binding-head­

Grammar of a repeat-while statement

repeat-while-statement repeat­code-block­while­expression­

Grammar of a branch statement

branch-statement if-statement­

branch-statement guard-statement­

branch-statement switch-statement­

Grammar of an if statement

if-statement if­condition-clause­code-block­else-clause­opt­

else-clause else­code-block­ else­if-statement­

Grammar of a guard statement

guard-statement guard­condition-clause­else­code-block­

Grammar of a switch statement

switch-statement switch­expression­switch-cases­opt­

switch-cases switch-case­switch-cases­opt­

switch-case case-label­statements­ default-label­statements­

switch-case case-label­ default-label­

case-label case­case-item-list­

case-item-list pattern­where-clause­opt­ pattern­where-clause­opt­case-item-list­

default-label default­

where-clause where­where-expression­

where-expression expression­

Grammar of a labeled statement

labeled-statement statement-label­loop-statement­ statement-label­if-statement­ statement-label­switch-statement­

statement-label label-name­

label-name identifier­

Grammar of a control transfer statement

control-transfer-statement break-statement­

control-transfer-statement continue-statement­

control-transfer-statement fallthrough-statement­

control-transfer-statement return-statement­

control-transfer-statement throw-statement­

Grammar of a break statement

break-statement break­label-name­opt­

Grammar of a continue statement

continue-statement continue­label-name­opt­

Grammar of a fallthrough statement

fallthrough-statement fallthrough­

Grammar of a return statement

return-statement return­expression­opt­

Grammar of an availability condition

availability-condition #available­availability-arguments­

availability-arguments availability-argument­ availability-argument­availability-arguments­

availability-argument platform-name­platform-version­

availability-argument

platform-name iOS­ iOSApplicationExtension­

platform-name OSX­ OSXApplicationExtension­

platform-name watchOS­

platform-version decimal-digits­

platform-version decimal-digits­decimal-digits­

platform-version decimal-digits­decimal-digits­decimal-digits­

Grammar of a throw statement

throw-statement throw­expression­

Grammar of a defer statement

defer-statement defer­code-block­

Grammar of a do statement

do-statement do­code-block­catch-clauses­opt­

catch-clauses catch-clause­catch-clauses­opt­

catch-clause catch­pattern­opt­where-clause­opt­code-block­

Generic Parameters and Arguments

Grammar of a generic parameter clause

generic-parameter-clause generic-parameter-list­requirement-clause­opt­

generic-parameter-list generic-parameter­ generic-parameter­generic-parameter-list­

generic-parameter type-name­

generic-parameter type-name­type-identifier­

generic-parameter type-name­protocol-composition-type­

requirement-clause where­requirement-list­

requirement-list requirement­ requirement­requirement-list­

requirement conformance-requirement­ same-type-requirement­

conformance-requirement type-identifier­type-identifier­

conformance-requirement type-identifier­protocol-composition-type­

same-type-requirement type-identifier­==­type­

Grammar of a generic argument clause

generic-argument-clause generic-argument-list­

generic-argument-list generic-argument­ generic-argument­generic-argument-list­

generic-argument type­

Declarations

Grammar of a declaration

declaration import-declaration­

declaration constant-declaration­

declaration variable-declaration­

declaration typealias-declaration­

declaration function-declaration­

declaration enum-declaration­

declaration struct-declaration­

declaration class-declaration­

declaration protocol-declaration­

declaration initializer-declaration­

declaration deinitializer-declaration­

declaration extension-declaration­

declaration subscript-declaration­

declaration operator-declaration­

declarations declaration­declarations­opt­

Grammar of a top-level declaration

top-level-declaration statements­opt­

Grammar of a code block

code-block statements­opt­

Grammar of an import declaration

import-declaration attributes­opt­import­import-kind­opt­import-path­

import-kind typealias­ struct­ class­ enum­ protocol­ var­ func­

import-path import-path-identifier­ import-path-identifier­import-path­

import-path-identifier identifier­ operator­

Grammar of a constant declaration

constant-declaration attributes­opt­declaration-modifiers­opt­let­pattern-initializer-list­

pattern-initializer-list pattern-initializer­ pattern-initializer­pattern-initializer-list­

pattern-initializer pattern­initializer­opt­

initializer expression­

Grammar of a variable declaration

variable-declaration-head attributes­opt­declaration-modifiers­opt­var­

variable-name identifier­

getter-setter-block getter-clause­setter-clause­opt­

getter-setter-block setter-clause­getter-clause­

getter-clause attributes­opt­get­code-block­

setter-clause attributes­opt­set­setter-name­opt­code-block­

setter-name identifier­

getter-setter-keyword-block getter-keyword-clause­setter-keyword-clause­opt­

getter-setter-keyword-block setter-keyword-clause­getter-keyword-clause­

getter-keyword-clause attributes­opt­get­

setter-keyword-clause attributes­opt­set­

willSet-didSet-block willSet-clause­didSet-clause­opt­

willSet-didSet-block didSet-clause­willSet-clause­opt­

willSet-clause attributes­opt­willSet­setter-name­opt­code-block­

didSet-clause attributes­opt­didSet­setter-name­opt­code-block­

Grammar of a type alias declaration

typealias-declaration typealias-head­typealias-assignment­

typealias-head attributes­opt­access-level-modifier­opt­typealias­typealias-name­

typealias-name identifier­

typealias-assignment type­

Grammar of a function declaration

function-head attributes­opt­declaration-modifiers­opt­func­

function-name identifier­ operator­

function-signature parameter-clauses­throws­opt­function-result­opt­

function-signature parameter-clauses­rethrows­function-result­opt­

function-result ->­attributes­opt­type­

function-body code-block­

parameter-clauses parameter-clause­parameter-clauses­opt­

parameter-clause parameter-list­...­opt­

parameter-list parameter­ parameter­parameter-list­

parameter inout­opt­let­opt­external-parameter-name­opt­local-parameter-name­type-annotation­default-argument-clause­opt­

parameter inout­opt­var­external-parameter-name­opt­local-parameter-name­type-annotation­default-argument-clause­opt­

parameter attributes­opt­type­

external-parameter-name identifier­

local-parameter-name identifier­

default-argument-clause expression­

Grammar of an enumeration declaration

enum-declaration attributes­opt­access-level-modifier­opt­union-style-enum­

enum-declaration attributes­opt­access-level-modifier­opt­raw-value-style-enum­

union-style-enum enum­enum-name­generic-parameter-clause­opt­type-inheritance-clause­opt­union-style-enum-members­opt­

union-style-enum-members union-style-enum-member­union-style-enum-members­opt­

union-style-enum-member declaration­ union-style-enum-case-clause­

union-style-enum-case-clause attributes­opt­case­union-style-enum-case-list­

union-style-enum-case-list union-style-enum-case­ union-style-enum-case­union-style-enum-case-list­

union-style-enum-case enum-case-name­tuple-type­opt­

enum-name identifier­

enum-case-name identifier­

raw-value-style-enum enum­enum-name­generic-parameter-clause­opt­type-inheritance-clause­raw-value-style-enum-members­

raw-value-style-enum-members raw-value-style-enum-member­raw-value-style-enum-members­opt­

raw-value-style-enum-member declaration­ raw-value-style-enum-case-clause­

raw-value-style-enum-case-clause attributes­opt­case­raw-value-style-enum-case-list­

raw-value-style-enum-case-list raw-value-style-enum-case­ raw-value-style-enum-case­raw-value-style-enum-case-list­

raw-value-style-enum-case enum-case-name­raw-value-assignment­opt­

raw-value-assignment raw-value-literal­

raw-value-literal numeric-literal­ string-literal­ boolean-literal­

Grammar of a structure declaration

struct-declaration attributes­opt­access-level-modifier­opt­struct­struct-name­generic-parameter-clause­opt­type-inheritance-clause­opt­struct-body­

struct-name identifier­

struct-body declarations­opt­

Grammar of a class declaration

class-declaration attributes­opt­access-level-modifier­opt­class­class-name­generic-parameter-clause­opt­type-inheritance-clause­opt­class-body­

class-name identifier­

class-body declarations­opt­

Grammar of a protocol declaration

protocol-declaration attributes­opt­access-level-modifier­opt­protocol­protocol-name­type-inheritance-clause­opt­protocol-body­

protocol-name identifier­

protocol-body protocol-member-declarations­opt­

protocol-member-declaration protocol-property-declaration­

protocol-member-declaration protocol-method-declaration­

protocol-member-declaration protocol-initializer-declaration­

protocol-member-declaration protocol-subscript-declaration­

protocol-member-declaration protocol-associated-type-declaration­

protocol-member-declarations protocol-member-declaration­protocol-member-declarations­opt­

Grammar of a protocol property declaration

Grammar of a protocol method declaration

protocol-method-declaration function-head­function-name­generic-parameter-clause­opt­function-signature­

Grammar of a protocol initializer declaration

protocol-initializer-declaration initializer-head­generic-parameter-clause­opt­parameter-clause­

Grammar of a protocol subscript declaration

protocol-subscript-declaration subscript-head­subscript-result­getter-setter-keyword-block­

Grammar of a protocol associated type declaration

protocol-associated-type-declaration typealias-head­type-inheritance-clause­opt­typealias-assignment­opt­

Grammar of an initializer declaration

initializer-declaration initializer-head­generic-parameter-clause­opt­parameter-clause­initializer-body­

initializer-head attributes­opt­declaration-modifiers­opt­init­

initializer-head attributes­opt­declaration-modifiers­opt­init­

initializer-head attributes­opt­declaration-modifiers­opt­init­

initializer-body code-block­

Grammar of a deinitializer declaration

deinitializer-declaration attributes­opt­deinit­code-block­

Grammar of an extension declaration

extension-declaration access-level-modifier­opt­extension­type-identifier­type-inheritance-clause­opt­extension-body­

extension-body declarations­opt­

Grammar of a subscript declaration

subscript-declaration subscript-head­subscript-result­code-block­

subscript-declaration subscript-head­subscript-result­getter-setter-block­

subscript-declaration subscript-head­subscript-result­getter-setter-keyword-block­

subscript-head attributes­opt­declaration-modifiers­opt­subscript­parameter-clause­

subscript-result ->­attributes­opt­type­

Grammar of an operator declaration

prefix-operator-declaration prefix­operator­operator­

postfix-operator-declaration postfix­operator­operator­

infix-operator-declaration infix­operator­operator­infix-operator-attributes­opt­

infix-operator-attributes precedence-clause­opt­associativity-clause­opt­

precedence-clause precedence­precedence-level­

precedence-level A decimal integer between 0 and 255, inclusive

associativity-clause associativity­associativity­

associativity left­ right­ none­

Grammar of a declaration modifier

declaration-modifier class­ convenience­ dynamic­ final­ infix­ lazy­ mutating­ nonmutating­ optional­ override­ postfix­ prefix­ required­ static­ unowned­ unowned­safe­ unowned­unsafe­ weak­

declaration-modifier access-level-modifier­

declaration-modifiers declaration-modifier­declaration-modifiers­opt­

access-level-modifier internal­ internal­set­

access-level-modifier private­ private­set­

access-level-modifier public­ public­set­

access-level-modifiers access-level-modifier­access-level-modifiers­opt­

Patterns

Grammar of a pattern

pattern wildcard-pattern­type-annotation­opt­

pattern identifier-pattern­type-annotation­opt­

pattern value-binding-pattern­

pattern tuple-pattern­type-annotation­opt­

pattern enum-case-pattern­

pattern optional-pattern­

pattern type-casting-pattern­

pattern expression-pattern­

Grammar of a wildcard pattern

wildcard-pattern

Grammar of an identifier pattern

identifier-pattern identifier­

Grammar of a value-binding pattern

value-binding-pattern var­pattern­ let­pattern­

Grammar of a tuple pattern

tuple-pattern tuple-pattern-element-list­opt­

tuple-pattern-element-list tuple-pattern-element­ tuple-pattern-element­tuple-pattern-element-list­

tuple-pattern-element pattern­

Grammar of an enumeration case pattern

enum-case-pattern type-identifier­opt­enum-case-name­tuple-pattern­opt­

Grammar of an optional pattern

optional-pattern identifier-pattern­

Grammar of a type casting pattern

type-casting-pattern is-pattern­ as-pattern­

is-pattern is­type­

as-pattern pattern­as­type­

Grammar of an expression pattern

expression-pattern expression­

Attributes

Grammar of an attribute

attribute attribute-name­attribute-argument-clause­opt­

attribute-name identifier­

attribute-argument-clause balanced-tokens­opt­

attributes attribute­attributes­opt­

balanced-tokens balanced-token­balanced-tokens­opt­

balanced-token balanced-tokens­opt­

balanced-token balanced-tokens­opt­

balanced-token balanced-tokens­opt­

balanced-token Any identifier, keyword, literal, or operator

balanced-token Any punctuation except , , , , , or

Expressions

Grammar of an expression

expression try-operator­opt­prefix-expression­binary-expressions­opt­

expression-list expression­ expression­expression-list­

Grammar of a prefix expression

prefix-expression prefix-operator­opt­postfix-expression­

prefix-expression in-out-expression­

in-out-expression identifier­

Grammar of a try expression

try-operator try­ try­

Grammar of a binary expression

binary-expression binary-operator­prefix-expression­

binary-expression assignment-operator­try-operator­opt­prefix-expression­

binary-expression conditional-operator­try-operator­opt­prefix-expression­

binary-expression type-casting-operator­

binary-expressions binary-expression­binary-expressions­opt­

Grammar of an assignment operator

assignment-operator

Grammar of a conditional operator

conditional-operator expression­

Grammar of a type-casting operator

type-casting-operator is­type­

type-casting-operator as­type­

type-casting-operator as­type­

type-casting-operator as­type­

Grammar of a primary expression

primary-expression identifier­generic-argument-clause­opt­

primary-expression literal-expression­

primary-expression self-expression­

primary-expression superclass-expression­

primary-expression closure-expression­

primary-expression parenthesized-expression­

primary-expression implicit-member-expression­

primary-expression wildcard-expression­

Grammar of a literal expression

literal-expression literal­

literal-expression array-literal­ dictionary-literal­

literal-expression __FILE__­ __LINE__­ __COLUMN__­ __FUNCTION__­

array-literal array-literal-items­opt­

array-literal-items array-literal-item­opt­ array-literal-item­array-literal-items­

array-literal-item expression­

dictionary-literal dictionary-literal-items­

dictionary-literal-items dictionary-literal-item­opt­ dictionary-literal-item­dictionary-literal-items­

dictionary-literal-item expression­expression­

Grammar of a self expression

self-expression self­

self-expression self­identifier­

self-expression self­expression­

self-expression self­init­

Grammar of a superclass expression

superclass-method-expression super­identifier­

superclass-subscript-expression super­expression­

superclass-initializer-expression super­init­

Grammar of a closure expression

closure-expression closure-signature­opt­statements­

closure-signature parameter-clause­function-result­opt­in­

closure-signature identifier-list­function-result­opt­in­

closure-signature capture-list­parameter-clause­function-result­opt­in­

closure-signature capture-list­identifier-list­function-result­opt­in­

closure-signature capture-list­in­

capture-list capture-specifier­expression­

capture-specifier weak­ unowned­ unowned(safe)­ unowned(unsafe)­

Grammar of a implicit member expression

implicit-member-expression identifier­

Grammar of a parenthesized expression

parenthesized-expression expression-element-list­opt­

expression-element-list expression-element­ expression-element­expression-element-list­

expression-element expression­ identifier­expression­

Grammar of a wildcard expression

wildcard-expression

Grammar of a postfix expression

postfix-expression primary-expression­

postfix-expression postfix-expression­postfix-operator­

postfix-expression function-call-expression­

postfix-expression initializer-expression­

postfix-expression explicit-member-expression­

postfix-expression postfix-self-expression­

postfix-expression dynamic-type-expression­

postfix-expression subscript-expression­

postfix-expression forced-value-expression­

postfix-expression optional-chaining-expression­

Grammar of a function call expression

function-call-expression postfix-expression­parenthesized-expression­

function-call-expression postfix-expression­parenthesized-expression­opt­trailing-closure­

trailing-closure closure-expression­

Grammar of an initializer expression

initializer-expression postfix-expression­init­

Grammar of an explicit member expression

explicit-member-expression postfix-expression­decimal-digits­

explicit-member-expression postfix-expression­identifier­generic-argument-clause­opt­

Grammar of a self expression

postfix-self-expression postfix-expression­self­

Grammar of a dynamic type expression

dynamic-type-expression postfix-expression­dynamicType­

Grammar of a subscript expression

subscript-expression postfix-expression­expression-list­

Grammar of a forced-value expression

forced-value-expression postfix-expression­

Grammar of an optional-chaining expression

optional-chaining-expression postfix-expression­

Lexical Structure

Grammar of an identifier

identifier identifier-head­identifier-characters­opt­

identifier identifier-head­identifier-characters­opt­

identifier implicit-parameter-name­

identifier-list identifier­ identifier­identifier-list­

identifier-head Upper- or lowercase letter A through Z

identifier-head

identifier-head U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA

identifier-head U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF

identifier-head U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF

identifier-head U+1E00–U+1FFF

identifier-head U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F

identifier-head U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793

identifier-head U+2C00–U+2DFF or U+2E80–U+2FFF

identifier-head U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF

identifier-head U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44

identifier-head U+FE47–U+FFFD

identifier-head U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD

identifier-head U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD

identifier-head U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD

identifier-head U+D0000–U+DFFFD or U+E0000–U+EFFFD

identifier-character Digit 0 through 9

identifier-character U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F

identifier-character identifier-head­

identifier-characters identifier-character­identifier-characters­opt­

implicit-parameter-name decimal-digits­

Grammar of a literal

numeric-literal opt­integer-literal­ opt­floating-point-literal­

boolean-literal true­ false­

nil-literal nil­

Grammar of an integer literal

integer-literal binary-literal­

integer-literal octal-literal­

integer-literal decimal-literal­

integer-literal hexadecimal-literal­

binary-literal 0b­binary-digit­binary-literal-characters­opt­

binary-digit Digit 0 or 1

binary-literal-character binary-digit­

binary-literal-characters binary-literal-character­binary-literal-characters­opt­

octal-literal 0o­octal-digit­octal-literal-characters­opt­

octal-digit Digit 0 through 7

octal-literal-character octal-digit­

octal-literal-characters octal-literal-character­octal-literal-characters­opt­

decimal-literal decimal-digit­decimal-literal-characters­opt­

decimal-digit Digit 0 through 9

decimal-digits decimal-digit­decimal-digits­opt­

decimal-literal-character decimal-digit­

decimal-literal-characters decimal-literal-character­decimal-literal-characters­opt­

hexadecimal-literal 0x­hexadecimal-digit­hexadecimal-literal-characters­opt­

hexadecimal-digit Digit 0 through 9, a through f, or A through F

hexadecimal-literal-character hexadecimal-digit­

hexadecimal-literal-characters hexadecimal-literal-character­hexadecimal-literal-characters­opt­

Grammar of a floating-point literal

floating-point-literal decimal-literal­decimal-fraction­opt­decimal-exponent­opt­

floating-point-literal hexadecimal-literal­hexadecimal-fraction­opt­hexadecimal-exponent­

decimal-fraction decimal-literal­

decimal-exponent floating-point-e­sign­opt­decimal-literal­

hexadecimal-fraction hexadecimal-digit­hexadecimal-literal-characters­opt­

hexadecimal-exponent floating-point-p­sign­opt­decimal-literal­

floating-point-e

floating-point-p

sign

Grammar of a string literal

string-literal quoted-text­opt­

quoted-text quoted-text-item­quoted-text­opt­

quoted-text-item escaped-character­

quoted-text-item \(­expression­

quoted-text-item Any Unicode scalar value except , , U+000A, or U+000D

escaped-character \0­ \\­ \t­ \n­ \r­ \"­ \'­

escaped-character \u­unicode-scalar-digits­

unicode-scalar-digits Between one and eight hexadecimal digits

Grammar of operators

operator-head

operator-head U+00A1–U+00A7

operator-head U+00A9 or U+00AB

operator-head U+00AC or U+00AE

operator-head U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7

operator-head U+2016–U+2017 or U+2020–U+2027

operator-head U+2030–U+203E

operator-head U+2041–U+2053

operator-head U+2055–U+205E

operator-head U+2190–U+23FF

operator-head U+2500–U+2775

operator-head U+2794–U+2BFF

operator-head U+2E00–U+2E7F

operator-head U+3001–U+3003

operator-head U+3008–U+3030

operator-character operator-head­

operator-character U+0300–U+036F

operator-character U+1DC0–U+1DFF

operator-character U+20D0–U+20FF

operator-character U+FE00–U+FE0F

operator-character U+FE20–U+FE2F

operator-character U+E0100–U+E01EF

operator-characters operator-character­operator-characters­opt­

dot-operator-head ..­

dot-operator-character operator-character­

dot-operator-characters dot-operator-character­dot-operator-characters­opt­

binary-operator operator­

prefix-operator operator­

postfix-operator operator­

Types

Grammar of a type annotation

type-annotation attributes­opt­type­

Grammar of a type identifier

type-identifier type-name­generic-argument-clause­opt­ type-name­generic-argument-clause­opt­type-identifier­

type-name identifier­

Grammar of a tuple type

tuple-type tuple-type-body­opt­

tuple-type-body tuple-type-element-list­...­opt­

tuple-type-element-list tuple-type-element­ tuple-type-element­tuple-type-element-list­

tuple-type-element attributes­opt­inout­opt­type­ inout­opt­element-name­type-annotation­

element-name identifier­

Grammar of a function type

function-type type­throws­opt­->­type­

function-type type­rethrows­->­type­

Grammar of an array type

array-type type­

Grammar of a dictionary type

dictionary-type type­type­

Grammar of an optional type

optional-type type­

Grammar of an implicitly unwrapped optional type

implicitly-unwrapped-optional-type type­

Grammar of a protocol composition type

protocol-composition-type protocol­protocol-identifier-list­opt­

protocol-identifier-list protocol-identifier­ protocol-identifier­protocol-identifier-list­

protocol-identifier type-identifier­

Grammar of a metatype type

metatype-type type­Type­ type­Protocol­

Grammar of a type inheritance clause

type-inheritance-clause class-requirement­type-inheritance-list­

type-inheritance-clause class-requirement­

type-inheritance-clause type-inheritance-list­

type-inheritance-list type-identifier­ type-identifier­type-inheritance-list­

class-requirement class­