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.
81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
from .Node import error
|
|
from .kinds import lowercase_first_word # noqa: I201
|
|
|
|
|
|
class SyntaxClassification(object):
|
|
'''
|
|
Represents a classification a token can receive for syntax highlighting.
|
|
'''
|
|
|
|
def __init__(self, name, description):
|
|
self.name = name
|
|
self.swift_name = lowercase_first_word(name)
|
|
self.description = description
|
|
|
|
|
|
SYNTAX_CLASSIFICATIONS = [
|
|
SyntaxClassification('None', description='''
|
|
The token should not receive syntax coloring.
|
|
'''),
|
|
SyntaxClassification('Keyword', description='''
|
|
A Swift keyword, including contextual keywords.
|
|
'''),
|
|
SyntaxClassification('Identifier', description='''
|
|
A generic identifier.
|
|
'''),
|
|
SyntaxClassification('TypeIdentifier', description='''
|
|
An identifier referring to a type.
|
|
'''),
|
|
SyntaxClassification('DollarIdentifier', description='''
|
|
An identifier starting with `$` like `$0`.
|
|
'''),
|
|
SyntaxClassification('IntegerLiteral', description='''
|
|
An integer literal.
|
|
'''),
|
|
SyntaxClassification('FloatingLiteral', description='''
|
|
A floating point literal.
|
|
'''),
|
|
SyntaxClassification('StringLiteral', description='''
|
|
A string literal including multiline string literals.
|
|
'''),
|
|
SyntaxClassification('StringInterpolationAnchor', description='''
|
|
The opening and closing paranthesis of string interpolation.
|
|
'''),
|
|
SyntaxClassification('PoundDirectiveKeyword', description='''
|
|
A `#` keyword like `#warning`.
|
|
'''),
|
|
SyntaxClassification('BuildConfigId', description='''
|
|
A build configuration directive like `#if`, `#elseif`, `#else`.
|
|
'''),
|
|
SyntaxClassification('Attribute', description='''
|
|
An attribute starting with an `@`.
|
|
'''),
|
|
SyntaxClassification('ObjectLiteral', description='''
|
|
An image, color, etc. literal.
|
|
'''),
|
|
SyntaxClassification('EditorPlaceholder', description='''
|
|
An editor placeholder of the form `<#content#>`
|
|
'''),
|
|
SyntaxClassification('LineComment', description='''
|
|
A line comment starting with `//`.
|
|
'''),
|
|
SyntaxClassification('DocLineComment', description='''
|
|
A doc line comment starting with `///`.
|
|
'''),
|
|
SyntaxClassification('BlockComment', description='''
|
|
A block comment starting with `/**` and ending with `*/.
|
|
'''),
|
|
SyntaxClassification('DocBlockComment', description='''
|
|
A doc block comment starting with `/**` and ending with `*/.
|
|
'''),
|
|
]
|
|
|
|
|
|
def classification_by_name(classification_name):
|
|
if classification_name is None:
|
|
return None
|
|
for classification in SYNTAX_CLASSIFICATIONS:
|
|
if classification.name == classification_name:
|
|
return classification
|
|
error("Unknown syntax classification '%s'" % classification_name)
|