mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
107 lines
4.8 KiB
Python
107 lines
4.8 KiB
Python
from Child import Child
|
|
from Node import Node # noqa: I201
|
|
|
|
AVAILABILITY_NODES = [
|
|
# availability-spec-list -> availability-entry availability-spec-list?
|
|
Node('AvailabilitySpecList', kind='SyntaxCollection',
|
|
element='AvailabilityArgument'),
|
|
|
|
# Wrapper for all the different entries that may occur inside @available
|
|
# availability-entry -> '*' ','?
|
|
# | identifier ','?
|
|
# | availability-version-restriction ','?
|
|
# | availability-versioned-argument ','?
|
|
Node('AvailabilityArgument', kind='Syntax',
|
|
description='''
|
|
A single argument to an `@available` argument like `*`, `iOS 10.1`, \
|
|
or `message: "This has been deprecated"`.
|
|
''',
|
|
children=[
|
|
Child('Entry', kind='Syntax',
|
|
description='The actual argument',
|
|
node_choices=[
|
|
Child('Star', kind='SpacedBinaryOperatorToken',
|
|
text_choices=['*']),
|
|
Child('IdentifierRestriction',
|
|
kind='IdentifierToken'),
|
|
Child('AvailabilityVersionRestriction',
|
|
kind='AvailabilityVersionRestriction'),
|
|
Child('AvailabilityLabeledArgument',
|
|
kind='AvailabilityLabeledArgument'),
|
|
]),
|
|
Child('TrailingComma', kind='CommaToken', is_optional=True,
|
|
description='''
|
|
A trailing comma if the argument is followed by another \
|
|
argument
|
|
'''),
|
|
]),
|
|
|
|
# Representation of 'deprecated: 2.3', 'message: "Hello world"' etc.
|
|
# availability-versioned-argument -> identifier ':' version-tuple
|
|
Node('AvailabilityLabeledArgument', kind='Syntax',
|
|
description='''
|
|
A argument to an `@available` attribute that consists of a label and \
|
|
a value, e.g. `message: "This has been deprecated"`.
|
|
''',
|
|
children=[
|
|
Child('Label', kind='IdentifierToken',
|
|
description='The label of the argument'),
|
|
Child('Colon', kind='ColonToken',
|
|
description='The colon separating label and value'),
|
|
Child('Value', kind='Syntax',
|
|
node_choices=[
|
|
Child('String', 'StringLiteralToken'),
|
|
Child('Version', 'VersionTuple'),
|
|
], description='The value of this labeled argument',),
|
|
]),
|
|
|
|
# Representation for 'iOS 10', 'swift 3.4' etc.
|
|
# availability-version-restriction -> identifier version-tuple
|
|
Node('AvailabilityVersionRestriction', kind='Syntax',
|
|
description='''
|
|
An argument to `@available` that restricts the availability on a \
|
|
certain platform to a version, e.g. `iOS 10` or `swift 3.4`.
|
|
''',
|
|
children=[
|
|
Child('Platform', kind='IdentifierToken',
|
|
classification='Keyword',
|
|
description='''
|
|
The name of the OS on which the availability should be \
|
|
restricted or 'swift' if the availability should be \
|
|
restricted based on a Swift version.
|
|
'''),
|
|
Child('Version', kind='VersionTuple'),
|
|
]),
|
|
|
|
# version-tuple -> integer-literal
|
|
# | float-literal
|
|
# | float-literal '.' integer-literal
|
|
Node('VersionTuple', kind='Syntax',
|
|
description='''
|
|
A version number of the form major.minor.patch in which the minor \
|
|
and patch part may be ommited.
|
|
''',
|
|
children=[
|
|
Child('MajorMinor', kind='Syntax',
|
|
node_choices=[
|
|
Child('Major', kind='IntegerLiteralToken'),
|
|
Child('MajorMinor', kind='FloatingLiteralToken')
|
|
], description='''
|
|
In case the version consists only of the major version, an \
|
|
integer literal that specifies the major version. In case \
|
|
the version consists of major and minor version number, a \
|
|
floating literal in which the decimal part is interpreted \
|
|
as the minor version.
|
|
'''),
|
|
Child('PatchPeriod', kind='PeriodToken', is_optional=True,
|
|
description='''
|
|
If the version contains a patch number, the period \
|
|
separating the minor from the patch number.
|
|
'''),
|
|
Child('PatchVersion', kind='IntegerLiteralToken',
|
|
is_optional=True, description='''
|
|
The patch version if specified.
|
|
'''),
|
|
]),
|
|
]
|