Summary of the Grammar 文法の概要

Lexical Structure 語彙の構造

Grammar of whitespace 空白の文法

whitespace whitespace-item whitespace opt

whitespace-item line-break

whitespace-item inline-space

whitespace-item comment

whitespace-item multiline-comment

whitespace-item U+0000, U+000B, or U+000C

line-break U+000A

line-break U+000D

line-breakU+000D followed by U+000A U+000D に続けて U+000A

inline-spaces inline-space inline-spaces opt

inline-space U+0009 or U+0020

comment // comment-text line-break

multiline-comment /* multiline-comment-text */

comment-text comment-text-item comment-text opt

comment-text-itemAny Unicode scalar value except U+000A or U+000D 任意のユニコードスカラー値、 しかし U+000A または U+000D を除く

multiline-comment-text multiline-comment-text-item multiline-comment-text opt

multiline-comment-text-item multiline-comment

multiline-comment-text-item comment-text-item

multiline-comment-text-itemAny Unicode scalar value except /* or */ 任意のユニコードスカラー値、 しかし/* または */ を除く

Grammar of an identifier 識別子の文法

identifier identifier-head identifier-characters opt

identifier ` identifier-head identifier-characters opt `

identifier implicit-parameter-name

identifier property-wrapper-projection

identifier-list identifier | identifier , identifier-list

identifier-headUpper- or lowercase letter A through Z 大文字または小文字のAからZ

identifier-head _

identifier-headU+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, または U+00B7–U+00BA

identifier-headU+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, または U+00F8–U+00FF

identifier-headU+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, または U+180F–U+1DBF

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

identifier-headU+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, または U+2060–U+206F

identifier-headU+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793 U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, または U+2776–U+2793

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

identifier-headU+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, または U+3040–U+D7FF

identifier-headU+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44 U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, または U+FE30–U+FE44

identifier-head U+FE47–U+FFFD

identifier-headU+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, または U+40000–U+4FFFD

identifier-headU+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, または U+80000–U+8FFFD

identifier-headU+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, または U+C0000–U+CFFFD

identifier-headU+D0000–U+DFFFD or U+E0000–U+EFFFD U+D0000–U+DFFFD または U+E0000–U+EFFFD

identifier-characterDigit 0 through 9 アラビア数字の0から9

identifier-characterU+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, または U+FE20–U+FE2F

identifier-character identifier-head

identifier-characters identifier-character identifier-characters opt

implicit-parameter-name $ decimal-digits

property-wrapper-projection $ identifier-characters

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-digitDigit 0 or 1 アラビア数字の0または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-digitDigit 0 through 7 アラビア数字の0から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-digitDigit 0 through 9 アラビア数字の0から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-digitDigit 0 through 9, a through f, or A through F アラビア数字の0から9、aからf、またはAから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 e | E

floating-point-p p | P

sign + | -

Grammar of a string literal 文字列リテラルの文法

string-literal-opening-delimiter extended-string-literal-delimiter opt "

string-literal-closing-delimiter " extended-string-literal-delimiter opt

multiline-string-literal-opening-delimiter extended-string-literal-delimiter opt """

multiline-string-literal-closing-delimiter """ extended-string-literal-delimiter opt

extended-string-literal-delimiter # extended-string-literal-delimiter opt

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

quoted-text-item escaped-character

quoted-text-itemAny Unicode scalar value except ", \, U+000A, or U+000D 何らかのユニコードスカラー値、しかし", \、U+000A、またはU+000Dを除く

multiline-quoted-text multiline-quoted-text-item multiline-quoted-text opt

multiline-quoted-text-item escaped-character

multiline-quoted-text-itemAny Unicode scalar value except \ 任意のユニコードスカラー値、しかし\を除く

multiline-quoted-text-item escaped-newline

interpolated-text interpolated-text-item interpolated-text opt

interpolated-text-item \( expression ) | quoted-text-item

multiline-interpolated-text multiline-interpolated-text-item multiline-interpolated-text opt

multiline-interpolated-text-item \( expression ) | multiline-quoted-text-item

escape-sequence \ extended-string-literal-delimiter

escaped-character escape-sequence 0 | escape-sequence \ | escape-sequence t | escape-sequence n | escape-sequence r | escape-sequence " | escape-sequence '

escaped-character escape-sequence u { unicode-scalar-digits }

unicode-scalar-digitsBetween one and eight hexadecimal digits 1から8桁の16進数

escaped-newline escape-sequence inline-spaces opt line-break

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

operator-headU+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 U+00B6, U+00BB, U+00BF, U+00D7, または U+00F7

operator-head U+2016–U+2017

operator-head 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+3020

operator-head 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

infix-operator operator

prefix-operator operator

postfix-operator operator

Types

Grammar of a type 型の文法

type function-type

type array-type

type dictionary-type

type type-identifier

type tuple-type

type optional-type

type implicitly-unwrapped-optional-type

type protocol-composition-type

type opaque-type

type metatype-type

type any-type

type self-type

type ( type )

Grammar of a type annotation 型注釈の文法

type-annotation : attributes opt inoutopt type

Grammar of a type identifier 型識別子の文法

Grammar of a tuple type タプル型の文法

tuple-type ( ) | ( tuple-type-element , tuple-type-element-list )

tuple-type-element-list tuple-type-element | tuple-type-element , tuple-type-element-list

tuple-type-element element-name type-annotation | type

element-name identifier

Grammar of a function type 関数型の文法

function-type attributes opt function-type-argument-clause throwsopt -> type

function-type-argument-clause ( )

function-type-argument-clause ( function-type-argument-list ...opt )

function-type-argument-list function-type-argument | function-type-argument , function-type-argument-list

function-type-argument attributes opt inoutopt type | argument-label type-annotation

argument-label identifier

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 type-identifier & protocol-composition-continuation

protocol-composition-continuation type-identifier | protocol-composition-type

Grammar of an opaque type 不透明型の構文

opaque-type some type

Grammar of a metatype type メタタイプ型の文法

metatype-type type . Type | type . Protocol

Grammar of an Any type Any型の構文

any-type Any

Grammar of a Self type Self型の文法

self-type Self

Grammar of a type inheritance clause 型継承節の文法

type-inheritance-clause : type-inheritance-list

type-inheritance-list type-identifier | type-identifier , type-inheritance-list

Expressions

Grammar of an expression 式の文法

Grammar of a prefix expression 接頭辞式の文法

prefix-expression prefix-operator opt postfix-expression

prefix-expression in-out-expression

Grammar of an in-out expression in-out式の文法

in-out-expression & identifier

Grammar of a try expression try式の文法

try-operator try | try ? | try !

Grammar of an await expression await式の文法

await-operator await

Grammar of an infix expression 接中辞式の文法

infix-expression infix-operator prefix-expression

infix-expression assignment-operator try-operator opt prefix-expression

infix-expression conditional-operator try-operator opt prefix-expression

infix-expression type-casting-operator

infix-expressions infix-expression infix-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 tuple-expression

primary-expression implicit-member-expression

primary-expression wildcard-expression

primary-expression key-path-expression

primary-expression selector-expression

primary-expression key-path-string-expression

Grammar of a literal expression リテラル式の文法

literal-expression literal

literal-expression array-literal | dictionary-literal | playground-literal

literal-expression #file | #fileID | #filePath

literal-expression #line | #column | #function | #dsohandle

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

playground-literal #colorLiteral ( red : expression , green : expression , blue : expression , alpha : expression )

playground-literal #fileLiteral ( resourceName : expression )

playground-literal #imageLiteral ( resourceName : expression )

Grammar of a self expression self式の文法

self-method-expression self . identifier

self-subscript-expression self [ function-call-argument-list ]

self-initializer-expression self . init

Grammar of a superclass expression スーパークラス式の文法

superclass-method-expression super . identifier

superclass-subscript-expression super [ function-call-argument-list ]

superclass-initializer-expression super . init

Grammar of a closure expression クロージャ式の文法

closure-expression { closure-signature opt statements opt }

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

closure-signature capture-list in

closure-parameter-clause ( ) | ( closure-parameter-list ) | identifier-list

closure-parameter-list closure-parameter | closure-parameter , closure-parameter-list

closure-parameter closure-parameter-name type-annotation opt

closure-parameter closure-parameter-name type-annotation ...

closure-parameter-name identifier

capture-list [ capture-list-items ]

capture-list-items capture-list-item | capture-list-item , capture-list-items

capture-list-item capture-specifier opt identifier

capture-list-item capture-specifier opt identifier = expression

capture-list-item capture-specifier opt self-expression

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

Grammar of a implicit member expression 暗黙的メンバー式の文法

implicit-member-expression . identifier

implicit-member-expression . identifier . postfix-expression

Grammar of a parenthesized expression 丸括弧に入れられた式の文法

parenthesized-expression ( expression )

Grammar of a tuple expression タプル式の文法

tuple-expression ( ) | ( tuple-element , tuple-element-list )

tuple-element-list tuple-element | tuple-element , tuple-element-list

tuple-element expression | identifier : expression

Grammar of a wildcard expression ワイルドカード式の文法

wildcard-expression _

Grammar of a key-path expression キーパス式の文法

key-path-expression \ type opt . key-path-components

key-path-components key-path-component | key-path-component . key-path-components

key-path-component identifier key-path-postfixes opt | key-path-postfixes

key-path-postfixes key-path-postfix key-path-postfixes opt

key-path-postfix ? | ! | self | [ function-call-argument-list ]

Grammar of a selector expression セレクタ式の文法

selector-expression #selector ( expression )

selector-expression #selector ( getter: expression )

selector-expression #selector ( setter: expression )

Grammar of a key-path string expression キーパス文字列式の文法

key-path-string-expression #keyPath ( 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 subscript-expression

postfix-expression forced-value-expression

postfix-expression optional-chaining-expression

Grammar of a function call expression 関数呼び出し式の文法

function-call-argument-clause ( ) | ( function-call-argument-list )

function-call-argument-list function-call-argument | function-call-argument , function-call-argument-list

function-call-argument expression | identifier : expression

function-call-argument operator | identifier : operator

trailing-closures closure-expression labeled-trailing-closures opt

labeled-trailing-closures labeled-trailing-closure labeled-trailing-closures opt

labeled-trailing-closure identifier : closure-expression

Grammar of an initializer expression イニシャライザ式の文法

initializer-expression postfix-expression . init

initializer-expression postfix-expression . init ( argument-names )

Grammar of an explicit member expression 明示的メンバー式の文法

explicit-member-expression postfix-expression . decimal-digits

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

explicit-member-expression postfix-expression . identifier ( argument-names )

explicit-member-expression postfix-expression conditional-compilation-block

argument-names argument-name argument-names opt

argument-name identifier :

Grammar of a postfix self expression 接尾辞self式の文法

postfix-self-expression postfix-expression . self

Grammar of a subscript expression 添え字式の文法

subscript-expression postfix-expression [ function-call-argument-list ]

Grammar of a forced-value expression 強制された値の式の文法

forced-value-expression postfix-expression !

Grammar of an optional-chaining expression オプショナル連鎖式の文法

optional-chaining-expression postfix-expression ?

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

statement compiler-control-statement

statements statement statements opt

Grammar of a loop statement ループ文の文法

loop-statement for-in-statement

loop-statement while-statement

loop-statement repeat-while-statement

Grammar of a for-in statement for-in文の文法

for-in-statement for caseopt pattern in expression where-clause opt code-block

Grammar of a while statement while文の文法

while-statement while condition-list code-block

case-condition case pattern initializer

optional-binding-condition let pattern initializer | var pattern initializer

Grammar of a repeat-while statement repeat-while文の文法

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文の文法

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

else-clause else code-block | else if-statement

Grammar of a guard statement guard文の文法

guard-statement guard condition-list else code-block

Grammar of a switch statement switch文の文法

switch-statement switch expression { switch-cases opt }

switch-cases switch-case switch-cases opt

switch-case case-label statements

switch-case default-label statements

switch-case conditional-switch-case

case-label attributes opt case case-item-list :

case-item-list pattern where-clause opt | pattern where-clause opt , case-item-list

default-label attributes opt default :

where-clause where where-expression

where-expression expression

conditional-switch-case switch-if-directive-clause switch-elseif-directive-clauses opt switch-else-directive-clause opt endif-directive

switch-if-directive-clause if-directive compilation-condition switch-cases opt

switch-elseif-directive-clauses elseif-directive-clause switch-elseif-directive-clauses opt

switch-elseif-directive-clause elseif-directive compilation-condition switch-cases opt

switch-else-directive-clause else-directive switch-cases opt

Grammar of a labeled statement ラベルをつけられた文の文法

labeled-statement statement-label loop-statement

labeled-statement statement-label if-statement

labeled-statement statement-label switch-statement

labeled-statement statement-label do-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文の文法

return-statement return expression opt

Grammar of a throw statement スロー文の文法

throw-statement throw expression

Grammar of a defer statement defer文の文法

defer-statement defer code-block

Grammar of a do statement do文の文法

do-statement do code-block catch-clauses opt

catch-clauses catch-clause catch-clauses opt

catch-clause catch catch-pattern-list opt code-block

catch-pattern-list catch-pattern | catch-pattern , catch-pattern-list

catch-pattern pattern where-clause opt

Grammar of a compiler control statement コンパイラ制御文の文法

compiler-control-statement conditional-compilation-block

compiler-control-statement line-control-statement

compiler-control-statement diagnostic-statement

Grammar of a conditional compilation block 条件コンパイルブロックの文法

if-directive-clause if-directive compilation-condition statements opt

elseif-directive-clauses elseif-directive-clause elseif-directive-clauses opt

elseif-directive-clause elseif-directive compilation-condition statements opt

else-directive-clause else-directive statements opt

if-directive #if

elseif-directive #elseif

else-directive #else

endif-directive #endif

compilation-condition platform-condition

compilation-condition identifier

compilation-condition boolean-literal

compilation-condition ( compilation-condition )

compilation-condition ! compilation-condition

compilation-condition compilation-condition && compilation-condition

compilation-condition compilation-condition || compilation-condition

platform-condition os ( operating-system )

platform-condition arch ( architecture )

platform-condition swift ( >= swift-version ) | swift ( < swift-version )

platform-condition compiler ( >= swift-version ) | compiler ( < swift-version )

platform-condition canImport ( module-name )

platform-condition targetEnvironment ( environment )

operating-system macOS | iOS | watchOS | tvOS | Linux | Windows

architecture i386 | x86_64 | arm | arm64

swift-version decimal-digits swift-version-continuation opt

swift-version-continuation . decimal-digits swift-version-continuation opt

module-name identifier

environment simulator | macCatalyst

Grammar of a line control statement 行制御文の文法

line-control-statement #sourceLocation ( file: file-path , line: line-number )

line-control-statement #sourceLocation ( )

line-numberA decimal integer greater than zero 0より大きい10進法整数

file-path static-string-literal

Grammar of a compile-time diagnostic statement コンパイル時診断文の文法

diagnostic-statement #error ( diagnostic-message )

diagnostic-statement #warning ( diagnostic-message )

diagnostic-message static-string-literal

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 macOS | macOSApplicationExtension

platform-name macCatalyst | macCatalystApplicationExtension

platform-name watchOS

platform-name tvOS

platform-version decimal-digits

platform-version decimal-digits . decimal-digits

platform-version decimal-digits . decimal-digits . decimal-digits

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 actor-declaration

declaration protocol-declaration

declaration initializer-declaration

declaration deinitializer-declaration

declaration extension-declaration

declaration subscript-declaration

declaration operator-declaration

declaration precedence-group-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 | let | 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 code-block

getter-setter-block { getter-clause setter-clause opt }

getter-setter-block { setter-clause getter-clause }

getter-clause attributes opt mutation-modifier opt get code-block

setter-clause attributes opt mutation-modifier 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 mutation-modifier opt get

setter-keyword-clause attributes opt mutation-modifier 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 attributes opt access-level-modifier opt typealias typealias-name generic-parameter-clause opt typealias-assignment

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-clause asyncopt throwsopt function-result opt

function-signature parameter-clause asyncopt rethrows function-result opt

function-result -> attributes opt type

function-body code-block

parameter-clause ( ) | ( parameter-list )

parameter-list parameter | parameter , parameter-list

parameter external-parameter-name opt local-parameter-name type-annotation default-argument-clause opt

parameter external-parameter-name opt local-parameter-name type-annotation

parameter external-parameter-name opt local-parameter-name type-annotation ...

external-parameter-name identifier

local-parameter-name identifier

default-argument-clause = expression

Grammar of an enumeration declaration 列挙宣言の文法

union-style-enum indirectopt enum enum-name generic-parameter-clause opt type-inheritance-clause opt generic-where-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 | compiler-control-statement

union-style-enum-case-clause attributes opt indirectopt 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 generic-where-clause opt { 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 | compiler-control-statement

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 | static-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 generic-where-clause opt struct-body

struct-name identifier

struct-body { struct-members opt }

struct-members struct-member struct-members opt

struct-member declaration | compiler-control-statement

Grammar of a class declaration クラス宣言の文法

class-members class-member class-members opt

class-member declaration | compiler-control-statement

Grammar of an actor declaration アクター宣言の文法

actor-declaration attributes opt access-level-modifier opt actor actor-name generic-parameter-clause opt type-inheritance-clause opt generic-where-clause opt actor-body

actor-name identifier

actor-body { actor-members opt }

actor-members actor-member actor-members opt

actor-member declaration | compiler-control-statement

Grammar of a protocol declaration プロトコル宣言の文法

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

protocol-name identifier

protocol-body { protocol-members 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-declaration typealias-declaration

Grammar of a protocol property declaration プロトコルプロパティ宣言の文法

Grammar of a protocol method declaration プロトコルメソッド宣言の文法

Grammar of a protocol initializer declaration プロトコル・イニシャライザ宣言の文法

protocol-initializer-declaration initializer-head generic-parameter-clause opt parameter-clause throwsopt generic-where-clause opt

protocol-initializer-declaration initializer-head generic-parameter-clause opt parameter-clause rethrows generic-where-clause opt

Grammar of a protocol subscript declaration プロトコル添え字宣言の文法

Grammar of a protocol associated type declaration プロトコル関連型宣言の文法

protocol-associated-type-declaration attributes opt access-level-modifier opt associatedtype typealias-name type-inheritance-clause opt typealias-assignment opt generic-where-clause opt

Grammar of an initializer declaration イニシャライザ宣言の文法

initializer-declaration initializer-head generic-parameter-clause opt parameter-clause throwsopt generic-where-clause opt initializer-body

initializer-declaration initializer-head generic-parameter-clause opt parameter-clause rethrows generic-where-clause opt 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 attributes opt access-level-modifier opt extension type-identifier type-inheritance-clause opt generic-where-clause opt extension-body

extension-body { extension-members opt }

extension-members extension-member extension-members opt

extension-member declaration | compiler-control-statement

Grammar of a subscript declaration 添え字宣言の文法

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-group opt

infix-operator-group : precedence-group-name

Grammar of a precedence group declaration 優先順位グループ宣言の文法

precedence-group-declaration precedencegroup precedence-group-name { precedence-group-attributes opt }

precedence-group-attributes precedence-group-attribute precedence-group-attributes opt

precedence-group-attribute precedence-group-relation

precedence-group-attribute precedence-group-assignment

precedence-group-attribute precedence-group-associativity

precedence-group-relation higherThan : precedence-group-names

precedence-group-relation lowerThan : precedence-group-names

precedence-group-assignment assignment : boolean-literal

precedence-group-associativity associativity : left

precedence-group-associativity associativity : right

precedence-group-associativity associativity : none

precedence-group-names precedence-group-name | precedence-group-name , precedence-group-names

precedence-group-name identifier

Grammar of a declaration modifier 宣言修飾子の文法

declaration-modifier class | convenience | dynamic | final | infix | lazy | optional | override | postfix | prefix | required | static | unowned | unowned ( safe ) | unowned ( unsafe ) | weak

declaration-modifier access-level-modifier

declaration-modifier mutation-modifier

declaration-modifier actor-isolation-modifier

declaration-modifiers declaration-modifier declaration-modifiers opt

access-level-modifier private | private ( set )

access-level-modifier fileprivate | fileprivate ( set )

access-level-modifier internal | internal ( set )

access-level-modifier public | public ( set )

access-level-modifier open | open ( set )

mutation-modifier mutating | nonmutating

actor-isolation-modifier nonisolated

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-tokenAny identifier, keyword, literal, or operator 任意の識別子、キーワード、リテラル、または演算子

balanced-tokenAny punctuation except (, ), [, ], {, or } 任意の句読点、しかし(, ), [, ], {, または }を除く

Patterns パターン

Grammar of a 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 | identifier : 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

Generic Parameters and Arguments 総称体パラメータと引数

Grammar of a generic parameter clause 総称体パラメータ節の文法

generic-parameter-clause < generic-parameter-list >

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

generic-where-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

Generic Parameters and Arguments 総称体パラメータと引数

Revision History 改訂履歴