Include the following in each entry:
- Grammar production(s)
- C++ types representing the productions
- Testing status
- With APIs
- Make APIs
- Builder APIs (if applicable)
- SR links
- Related lib/AST changes
-
declaration-modifiers
DeclModifierListSyntax
-
declaration-modifier
DeclModifierSyntax
-
struct-declaration
StructDeclSyntax
-
typealias-assignment
typealias-declarationTypeAliasDeclSyntax
-
class-body
class-membersDeclMembersSyntax
ClassDeclSyntax
used for the{
}
braces.
-
extension-body
DeclMembersSyntax
-
protocol-body
DeclMembersSyntax
-
struct-body
struct-membersDeclMembersSyntax
StructDeclSyntax
used for the{
}
braces.
-
function-declaration
FunctionDeclSyntax
-
function-body
CodeBlockSyntax
-
function-result
TypeSyntax
-
function-signature
FunctionSignatureSyntax
-
parameter-clause
FunctionParameterClauseSyntax
-
parameter-list
FunctionParameterListSyntax
-
parameter
FunctionParameterSyntax
-
statement
StmtSyntax
(Abstract base class)
-
statements
StmtListSyntax
-
code-block
CodeBlockSyntax
-
fallthrough-statement
FallthroughStmtSyntax
-
break-statement
BreakStmtSyntax
-
continue-statement
ContinueStmtSyntax
-
return-statement
ReturnStmtSyntax
-
binary-literal
-
decimal-literal
-
hexadecimal-literal
-
integer-literal
-
octal-literal
IntegerLiteralExprSyntax
-
function-call-argument
FunctionCallArgumentSyntax
-
function-call-argument-list
FunctionCallArgumentListSyntax
-
function-call-expression
-
function-call-argument-clause
FunctionCallExprSyntax
-
type
-
type-annotation
TypeSyntax
(Abstract base class)
-
protocol-identifier
-
type-identifier
TypeIdentifierSyntax
-
optional-type
OptionalTypeSyntax
-
implicitly-unwrapped-optional-type
ImplicitlyUnwrappedOptionalTypeSyntax
-
array-type
ArrayTypeSyntax
-
dictionary-type
DictionaryTypeSyntax
-
function-type
-
function-type-argument
-
function-type-argument-clause
FunctionTypeSyntax
-
function-type-argument-list
TypeArgumentListSyntax
-
metatype-type
MetatypeTypeSyntax
-
tuple-type
TupleTypeSyntax
-
tuple-type-element
TupleTypeElementSyntax
-
tuple-type-element-list
TupleTypeElementListSyntax
-
attribute
-
attribute-argument-clause
TypeAttributeSyntax
-
attributes
TypeAttributesSyntax
-
balanced-token
BalancedTokenSyntax
-
balanced-tokens
BalancedTokensSyntax
-
generic-argument-clause
GenericArgumentClauseSyntax
-
generic-argument-list
GenericArgumentListSyntax
-
generic-parameter-clause
GenericParameterClauseSyntax
-
generic-parameter
GenericParameterSyntax
-
generic-parameter-list
GenericParameterListSyntax
-
conformance-requirement
ConformanceRequirementSyntax
-
same-type-requirement
SameTypeRequirementSyntax
-
generic-where-clause
GenericWhereClauseSyntax
-
requirement-list
GenericRequirementListSyntax
- access-level-modifier
- argument-label
- attribute-name
- boolean-literal
- class-name
- closure-parameter-name
- element-name
- enum-case-name
- enum-name
- external-parameter-name
- function-name
- identifier-pattern
- import-kind
- import-path-identifier
- label-name
- local-parameter-name
- mutation-modifier
- platform-name
- precedence-group-name
- protocol-name
- sign
- struct-name
- type-name
- typealias-name
- variable-name
- identifier
TokenSyntax
- identifier
These are categorized somewhat by difficulty and priority.
- array-literal
- array-literal-items
- as-pattern
- case-condition
- case-label
- dynamic-type-expression
- floating-point-literal
- forced-value-expression
- identifier-list
- implicit-member-expression
- import-path
- in-out-expression
- interpolated-text
- interpolated-text-item
- is-pattern
- key-path-expression
- line-control-statement
- optional-chaining-expression
- optional-pattern
- parenthesized-expression
- platform-condition
- platform-version
- postfix-operator-declaration
- precedence-group-assignment
- precedence-group-associativity
- precedence-group-names
- statement-label
- static-string-literal
- swift-version
- throw-statement
- value-binding-pattern
- where-clause
- dictionary-literal
- dictionary-literal-items
- dictionary-literal-item
- dictionary-literal-items
- capture-list
- capture-list-items
- capture-list-item
- capture-list-items
- defer-statement
- else-directive-clause
- elseif-directive-clauses
- elseif-directive-clause
- precedence-group-declaration
- precedence-group-relation
- expression-list
- availability-condition
- availability-arguments
- availability-argument
- availability-arguments
- switch-cases
- switch-case
- constant-declaration
- catch-clauses
- catch-clause
- variable-declaration
- do-statement
- for-in-statement
- guard-statement
- case-item-list
- import-declaration
- if-directive-clause
- if-statement
- else-clause
- protocol-associated-type-declaration
- repeat-while-statement
- while-statement
- tuple-expression
- tuple-element-list
- tuple-element
- tuple-element-list
- tuple-pattern
- tuple-pattern-element-list
- tuple-pattern-element
- tuple-pattern-element-list
- switch-statement
- explicit-member-expression
- optional-binding-condition
- operator-declaration
- selector-expression
- protocol-composition-type
- conditional-operator
- deinitializer-declaration
- didSet-clause
- willSet-clause
- pattern-initializer-list
- pattern-initializer
- prefix-expression
- prefix-operator-declaration
- infix-operator-declaration
- infix-operator-group
- binary-expression
- protocol-declaration
- closure-expression
- closure-signature
- closure-parameter-clause
- closure-parameter-list
- closure-parameter
- closure-parameter-list
- closure-parameter-clause
- closure-signature
- extension-declaration
- enum-declaration
- class-declaration
- getter-setter-block
- getter-setter-keyword-block
- getter-keyword-clause
- getter-clause
- setter-keyword-clause
- setter-clause
- setter-name
- setter-clause
- subscript-declaration
- enum-case-pattern
- initializer-declaration
- initializer-head
- interpolated-string-literal
- conditional-compilation-block
- binary-expressions
- binary-operator
- compilation-condition
- capture-specifier
- precedence-group-attributes
- precedence-group-attribute
- prefix-operator
- type-casting-operator
- willSet-didSet-block
- architecture
- string-literal
- argument-names
- array-literal-item
- type-casting-pattern
- assignment-operator
- expression-pattern
- binary-digit
- binary-literal-character
- binary-literal-characters
- branch-statement
- class-member
- class-requirement
- condition
- condition-list
- compiler-control-statement
- control-transfer-statement
- decimal-digit
- decimal-digits
- decimal-exponent
- decimal-fraction
- decimal-literal-character
- decimal-literal-characters
- default-argument-clause
- default-label
- dot-operator-character
- dot-operator-characters
- dot-operator-head
- else-directive
- elseif-directive
- endif-directive
- escaped-character
- expression
- extension-member
- file-name
- floating-point-e
- floating-point-p
- function-head
- hexadecimal-digit
- hexadecimal-exponent
- hexadecimal-fraction
- identifier-character
- identifier-characters
- identifier-head
- if-directive
- where-expression
- implicit-parameter-name
- initializer
- initializer-body
- initializer-expression
- labeled-statement (TODO: Put in loop-, if-, switch-, do-statement layout)
- line-number
- literal
- literal-expression
- loop-statement
- nil-literal
- numeric-literal
- octal-digit
- octal-literal-character
- octal-literal-characters
- operating-system
- operator
- operator-character
- operator-characters
- operator-head
- pattern
- postfix-expression
- postfix-operator
- postfix-self-expression
- protocol-composition-continuation
- protocol-initializer-declaration
- protocol-member
- protocol-member-declaration
- protocol-members
- extension-members
- protocol-method-declaration
- protocol-property-declaration
- protocol-subscript-declaration
- quoted-text
- quoted-text-item
- raw-value-assignment
- raw-value-literal
- raw-value-style-enum
- raw-value-style-enum-case
- raw-value-style-enum-case-clause
- raw-value-style-enum-case-list
- playground-literal
- raw-value-style-enum-member
- raw-value-style-enum-members
- requirement
- self-expression
- self-initializer-expression
- self-method-expression
- self-subscript-expression
- struct-member
- subscript-expression
- subscript-head
- subscript-result
- superclass-expression
- superclass-initializer-expression
- superclass-method-expression
- superclass-subscript-expression
- top-level-declaration
- try-operator
- type-inheritance-clause
- type-inheritance-list
- unicode-scalar-digits
- union-style-enum
- union-style-enum-case
- union-style-enum-case-clause
- union-style-enum-case-list
- union-style-enum-member
- union-style-enum-members
- variable-declaration-head
- wildcard-expression
- wildcard-pattern
- primary-expression
- generic-argument