mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Adjust the python imports to be python2 and python3 compatible to enable gyb to be switched over to python3.
107 lines
4.7 KiB
Python
107 lines
4.7 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.
|
|
'''),
|
|
]),
|
|
]
|