from Child import Child from Node import Node # noqa: I201 EXPR_NODES = [ # An inout expression. # &x Node('InOutExpr', kind='Expr', children=[ Child('Ampersand', kind='AmpersandToken'), Child('Identifier', kind='IdentifierToken'), ]), # A #column expression. Node('PoundColumnExpr', kind='Expr', children=[ Child('PoundColumn', kind='PoundColumnToken'), ]), Node('FunctionCallArgumentList', kind='SyntaxCollection', element='FunctionCallArgument'), # The try operator. # try foo() # try? foo() # try! foo() Node('TryOperator', kind='Syntax', children=[ Child('TryKeyword', kind='TryToken'), Child('QuestionOrExclamationMark', kind='Token', is_optional=True, token_choices=[ 'PostfixQuestionMarkToken', 'ExclamationMarkToken', ]), ]), # A #line expression. Node('PoundLineExpr', kind='Expr', children=[ Child('PoundLine', kind='PoundLineToken'), ]), # A #file expression. Node('PoundFileExpr', kind='Expr', children=[ Child('PoundFile', kind='PoundFileToken'), ]), # A #function expression. Node('PoundFunctionExpr', kind='Expr', children=[ Child('PoundFunction', kind='PoundFunctionToken'), ]), # symbolic-reference-expression -> identifier generic-argument-clause? Node('SymbolicReferenceExpr', kind='Expr', children=[ Child('Identifier', kind='IdentifierToken'), Child('GenericArgumentClause', kind='GenericArgumentClause', is_optional=True), ]), # A prefix operator expression. # -x # !true Node('PrefixOperatorExpr', kind='Expr', children=[ Child('OperatorToken', kind='PrefixOperatorToken', is_optional=True), Child('PostfixExpression', kind='Expr'), ]), # A floating-point literal # 4.0 # -3.9 # +4e20 Node('FloatLiteralExpr', kind='Expr', children=[ Child('Sign', kind='PrefixOperatorToken', is_optional=True), Child('FloatingDigits', kind='FloatingLiteralToken'), ]), Node('FunctionCallExpr', kind='Expr', children=[ Child('CalledExpression', kind='Expr'), Child('LeftParen', kind='LeftParenToken'), Child('ArgumentList', kind='FunctionCallArgumentList'), Child('RightParen', kind='RightParenToken'), ]), # function-call-argument -> label? ':'? expression ','? Node('FunctionCallArgument', kind='Syntax', children=[ Child('Label', kind='IdentifierToken', is_optional=True), Child('Colon', kind='ColonToken', is_optional=True), Child('Expression', kind='Expr'), Child('TrailingComma', kind='CommaToken', is_optional=True), ]), # An integer literal. # 3 # +3_400 # +0x4f Node('IntegerLiteralExpr', kind='Expr', children=[ Child('Sign', kind='PrefixOperatorToken', is_optional=True), Child('Digits', kind='IntegerLiteralToken'), ]), Node('StringLiteralExpr', kind='Expr', children=[ Child("StringLiteral", kind='StringLiteralToken') ]) ]