tree-sitters/python/test/corpus/expressions.txt

1109 lines
25 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

================================================================================
Identifiers with Greek letters
================================================================================
ψ1 = β_γ + Ψ_5
--------------------------------------------------------------------------------
(module
(expression_statement
(assignment
left: (identifier)
right: (binary_operator
left: (identifier)
right: (identifier)))))
================================================================================
Subscript expressions
================================================================================
a[1]
b[2, 3]
c[4, 5,]
--------------------------------------------------------------------------------
(module
(expression_statement
(subscript
(identifier)
(integer)))
(expression_statement
(subscript
(identifier)
(integer)
(integer)))
(expression_statement
(subscript
(identifier)
(integer)
(integer))))
================================================================================
Subscript slice expressions
================================================================================
a[:]
b[5:]
b[5:6, ...]
c[::]
--------------------------------------------------------------------------------
(module
(expression_statement
(subscript
(identifier)
(slice)))
(expression_statement
(subscript
(identifier)
(slice
(integer))))
(expression_statement
(subscript
(identifier)
(slice
(integer)
(integer))
(ellipsis)))
(expression_statement
(subscript
(identifier)
(slice))))
================================================================================
Attribute references
================================================================================
a.b.c
--------------------------------------------------------------------------------
(module
(expression_statement
(attribute
(attribute
(identifier)
(identifier))
(identifier))))
================================================================================
Await expressions
================================================================================
await i(j, 5)
return await i(j, 5)
async def region_exists(region: str) -> bool:
return region in await all_regions()
assert await a(b) == c
--------------------------------------------------------------------------------
(module
(expression_statement
(await
(call
(identifier)
(argument_list
(identifier)
(integer)))))
(return_statement
(await
(call
(identifier)
(argument_list
(identifier)
(integer)))))
(function_definition
(identifier)
(parameters
(typed_parameter
(identifier)
(type
(identifier))))
(type
(identifier))
(block
(return_statement
(comparison_operator
(identifier)
(await
(call
(identifier)
(argument_list)))))))
(assert_statement
(comparison_operator
(await
(call
(identifier)
(argument_list
(identifier))))
(identifier))))
================================================================================
Call expressions
================================================================================
__a__()
b(1)
c(e, f=g)
i(j, 5,)
--------------------------------------------------------------------------------
(module
(expression_statement
(call
(identifier)
(argument_list)))
(expression_statement
(call
(identifier)
(argument_list
(integer))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)
(keyword_argument
(identifier)
(identifier)))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)
(integer)))))
================================================================================
Print used as an identifier
================================================================================
print()
print(a)
print(a, b=c)
print(d, e)
print(d, *e)
print(*f, **g,)
a(print)
--------------------------------------------------------------------------------
(module
(expression_statement
(call
(identifier)
(argument_list)))
(expression_statement
(call
(identifier)
(argument_list
(identifier))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)
(keyword_argument
(identifier)
(identifier)))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)
(identifier))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)
(list_splat
(identifier)))))
(expression_statement
(call
(identifier)
(argument_list
(list_splat
(identifier))
(dictionary_splat
(identifier)))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)))))
================================================================================
Print used as a parameter
================================================================================
def a(print):
b
def a(printer=print):
c
def a(*print):
b
def a(**print):
b
def print():
a
--------------------------------------------------------------------------------
(module
(function_definition
(identifier)
(parameters
(identifier))
(block
(expression_statement
(identifier))))
(function_definition
(identifier)
(parameters
(default_parameter
(identifier)
(identifier)))
(block
(expression_statement
(identifier))))
(function_definition
(identifier)
(parameters
(list_splat_pattern
(identifier)))
(block
(expression_statement
(identifier))))
(function_definition
(identifier)
(parameters
(dictionary_splat_pattern
(identifier)))
(block
(expression_statement
(identifier))))
(function_definition
(identifier)
(parameters)
(block
(expression_statement
(identifier)))))
================================================================================
Exec used as an identifier
================================================================================
exec("print \"'%s' has %i characters\" % (public_function(), len(public_function()))", {"__builtins__" : None}, safe_dict)
exec("""exec _code_ in _globs_, _locs_""")
--------------------------------------------------------------------------------
(module
(expression_statement
(call
(identifier)
(argument_list
(string
(string_start)
(string_content
(escape_sequence)
(escape_sequence))
(string_end))
(dictionary
(pair
(string
(string_start)
(string_content)
(string_end))
(none)))
(identifier))))
(expression_statement
(call
(identifier)
(argument_list
(string
(string_start)
(string_content)
(string_end))))))
================================================================================
Async / await used as identifiers
================================================================================
async = 4
await = 5
print async, await
--------------------------------------------------------------------------------
(module
(expression_statement
(assignment
(identifier)
(integer)))
(expression_statement
(assignment
(identifier)
(integer)))
(print_statement
(identifier)
(identifier)))
================================================================================
Calls with splats
================================================================================
a(*())
a(**{})
a(*b)
c(d, *e, **g)
--------------------------------------------------------------------------------
(module
(expression_statement
(call
(identifier)
(argument_list
(list_splat
(tuple)))))
(expression_statement
(call
(identifier)
(argument_list
(dictionary_splat
(dictionary)))))
(expression_statement
(call
(identifier)
(argument_list
(list_splat
(identifier)))))
(expression_statement
(call
(identifier)
(argument_list
(identifier)
(list_splat
(identifier))
(dictionary_splat
(identifier))))))
================================================================================
Math operators
================================================================================
a + b * c ** d - e / 5
-5
+x
~x
--------------------------------------------------------------------------------
(module
(expression_statement
(binary_operator
(binary_operator
(identifier)
(binary_operator
(identifier)
(binary_operator
(identifier)
(identifier))))
(binary_operator
(identifier)
(integer))))
(expression_statement
(unary_operator
(integer)))
(expression_statement
(unary_operator
(identifier)))
(expression_statement
(unary_operator
(identifier))))
================================================================================
Binary Addition / Subtraction With Floats
================================================================================
.1-.0
.1+.0
.1-0
.1+0
1-.0
1+.0
--------------------------------------------------------------------------------
(module
(expression_statement
(binary_operator
(float)
(float)))
(expression_statement
(binary_operator
(float)
(float)))
(expression_statement
(binary_operator
(float)
(integer)))
(expression_statement
(binary_operator
(float)
(integer)))
(expression_statement
(binary_operator
(integer)
(float)))
(expression_statement
(binary_operator
(integer)
(float))))
================================================================================
Power Operator Precedence
================================================================================
2**2**3
-2**2
--------------------------------------------------------------------------------
(module
(expression_statement
(binary_operator
(integer)
(binary_operator
(integer)
(integer))))
(expression_statement
(unary_operator
(binary_operator
(integer)
(integer)))))
================================================================================
Operator precedence
================================================================================
a() + b[c] * c.d.e
--------------------------------------------------------------------------------
(module
(expression_statement
(binary_operator
left: (call
function: (identifier)
arguments: (argument_list))
right: (binary_operator
left: (subscript
value: (identifier)
subscript: (identifier))
right: (attribute
object: (attribute
object: (identifier)
attribute: (identifier))
attribute: (identifier))))))
================================================================================
Bitwise operators
================================================================================
a << b | c >> d & e
--------------------------------------------------------------------------------
(module
(expression_statement
(binary_operator
(binary_operator
(identifier)
(identifier))
(binary_operator
(binary_operator
(identifier)
(identifier))
(identifier)))))
================================================================================
Boolean operators
================================================================================
a or b and c
not d
not a and b or c
a and not b and c
--------------------------------------------------------------------------------
(module
(expression_statement
(boolean_operator
(identifier)
(boolean_operator
(identifier)
(identifier))))
(expression_statement
(not_operator
(identifier)))
(expression_statement
(boolean_operator
(boolean_operator
(not_operator
(identifier))
(identifier))
(identifier)))
(expression_statement
(boolean_operator
(boolean_operator
(identifier)
(not_operator
(identifier)))
(identifier))))
================================================================================
Comparison operators
================================================================================
a < b <= c == d >= e > f
not a == b or c == d
a not in b
a is not b
--------------------------------------------------------------------------------
(module
(expression_statement
(comparison_operator
(identifier)
(identifier)
(identifier)
(identifier)
(identifier)
(identifier)))
(expression_statement
(boolean_operator
(not_operator
(comparison_operator
(identifier)
(identifier)))
(comparison_operator
(identifier)
(identifier))))
(expression_statement
(comparison_operator
(identifier)
(identifier)))
(expression_statement
(comparison_operator
(identifier)
(identifier))))
================================================================================
Assignments
================================================================================
a = 1
a, b = 1, 2
a, *c = 1, 2, 3
a, = 1, 2
a[b] = c = d
a, *b.c = d
--------------------------------------------------------------------------------
(module
(expression_statement
(assignment
(identifier)
(integer)))
(expression_statement
(assignment
(pattern_list
(identifier)
(identifier))
(expression_list
(integer)
(integer))))
(expression_statement
(assignment
(pattern_list
(identifier)
(list_splat_pattern
(identifier)))
(expression_list
(integer)
(integer)
(integer))))
(expression_statement
(assignment
(pattern_list
(identifier))
(expression_list
(integer)
(integer))))
(expression_statement
(assignment
(subscript
(identifier)
(identifier))
(assignment
(identifier)
(identifier))))
(expression_statement
(assignment
(pattern_list
(identifier)
(list_splat_pattern
(attribute
(identifier)
(identifier))))
(identifier))))
================================================================================
Assignments with type annotations
================================================================================
tail_leaves: List[Leaf] = []
--------------------------------------------------------------------------------
(module
(expression_statement
(assignment
(identifier)
(type
(generic_type
(identifier)
(type_parameter
(type
(identifier)))))
(list))))
================================================================================
Augmented assignments
================================================================================
a += 1
b >>= 2
c //= 1
--------------------------------------------------------------------------------
(module
(expression_statement
(augmented_assignment
(identifier)
(integer)))
(expression_statement
(augmented_assignment
(identifier)
(integer)))
(expression_statement
(augmented_assignment
(identifier)
(integer))))
================================================================================
Named expressions
================================================================================
a := x
(y := f(x))
foo(x=(y := f(x)))
y0 = (y1 := f(x))
def foo(answer=(p := 42)):
return answer;
def foo(answer: (p := 42) = 5):
return answer;
foo(x := 3, cat='vector')
(z := (y := (x := 0)))
--------------------------------------------------------------------------------
(module
(expression_statement
(named_expression
(identifier)
(identifier)))
(expression_statement
(parenthesized_expression
(named_expression
(identifier)
(call
(identifier)
(argument_list
(identifier))))))
(expression_statement
(call
(identifier)
(argument_list
(keyword_argument
(identifier)
(parenthesized_expression
(named_expression
(identifier)
(call
(identifier)
(argument_list
(identifier)))))))))
(expression_statement
(assignment
(identifier)
(parenthesized_expression
(named_expression
(identifier)
(call
(identifier)
(argument_list
(identifier)))))))
(function_definition
(identifier)
(parameters
(default_parameter
(identifier)
(parenthesized_expression
(named_expression
(identifier)
(integer)))))
(block
(return_statement
(identifier))))
(function_definition
(identifier)
(parameters
(typed_default_parameter
(identifier)
(type
(parenthesized_expression
(named_expression
(identifier)
(integer))))
(integer)))
(block
(return_statement
(identifier))))
(expression_statement
(call
(identifier)
(argument_list
(named_expression
(identifier)
(integer))
(keyword_argument
(identifier)
(string
(string_start)
(string_content)
(string_end))))))
(expression_statement
(parenthesized_expression
(named_expression
(identifier)
(parenthesized_expression
(named_expression
(identifier)
(parenthesized_expression
(named_expression
(identifier)
(integer)))))))))
================================================================================
Yield expressions
================================================================================
def example():
yield
yield 1
x = yield 2
yield from a
yield from (yield from (x for x in range(1, 10)))
--------------------------------------------------------------------------------
(module
(function_definition
(identifier)
(parameters)
(block
(expression_statement
(yield))
(expression_statement
(yield
(integer)))
(expression_statement
(assignment
(identifier)
(yield
(integer))))
(expression_statement
(yield
(identifier)))
(expression_statement
(yield
(parenthesized_expression
(yield
(generator_expression
(identifier)
(for_in_clause
(identifier)
(call
(identifier)
(argument_list
(integer)
(integer))))))))))))
================================================================================
lambdas
================================================================================
lambda b, c: d("e" % f)
lambda: True
lambda a, b = c, *d, **e: a
lambda (a, b): (a, b)
--------------------------------------------------------------------------------
(module
(expression_statement
(lambda
(lambda_parameters
(identifier)
(identifier))
(call
(identifier)
(argument_list
(binary_operator
(string
(string_start)
(string_content)
(string_end))
(identifier))))))
(expression_statement
(lambda
(true)))
(expression_statement
(lambda
(lambda_parameters
(identifier)
(default_parameter
(identifier)
(identifier))
(list_splat_pattern
(identifier))
(dictionary_splat_pattern
(identifier)))
(identifier)))
(expression_statement
(lambda
(lambda_parameters
(tuple_pattern
(identifier)
(identifier)))
(tuple
(identifier)
(identifier)))))
================================================================================
Tuples with splats
================================================================================
(foo, *bar, *baz)
--------------------------------------------------------------------------------
(module
(expression_statement
(tuple
(identifier)
(list_splat
(identifier))
(list_splat
(identifier)))))
================================================================================
Tuples with yield
================================================================================
(a, yield a, b, c)
--------------------------------------------------------------------------------
(module
(expression_statement
(tuple
(identifier)
(yield
(expression_list
(identifier)
(identifier)
(identifier))))))
================================================================================
Default Tuple Arguments
================================================================================
def comp_args((a, b)=(3, 4)):
return a, b
--------------------------------------------------------------------------------
(module
(function_definition
(identifier)
(parameters
(default_parameter
(tuple_pattern
(identifier)
(identifier))
(tuple
(integer)
(integer))))
(block
(return_statement
(expression_list
(identifier)
(identifier))))))
================================================================================
Conditional if expressions
================================================================================
a = b if c else d
something() if a else d
slice(1,1,1) if a else d
--------------------------------------------------------------------------------
(module
(expression_statement
(assignment
(identifier)
(conditional_expression
(identifier)
(identifier)
(identifier))))
(expression_statement
(conditional_expression
(call
(identifier)
(argument_list))
(identifier)
(identifier)))
(expression_statement
(conditional_expression
(call
(identifier)
(argument_list
(integer)
(integer)
(integer)))
(identifier)
(identifier))))
================================================================================
Async context managers and iterators
================================================================================
async with a as b:
async for c in d:
[e async for f in g]
--------------------------------------------------------------------------------
(module
(with_statement
(with_clause
(with_item
value: (as_pattern
(identifier)
alias: (as_pattern_target
(identifier)))))
body: (block
(for_statement
left: (identifier)
right: (identifier)
body: (block
(expression_statement
(list_comprehension
body: (identifier)
(for_in_clause
left: (identifier)
right: (identifier)))))))))
================================================================================
Arbitrary indentation between brackets
================================================================================
def a():
b(
1,
2
)
c = [
3
]
--------------------------------------------------------------------------------
(module
(function_definition
(identifier)
(parameters)
(block
(expression_statement
(call
(identifier)
(argument_list
(integer)
(integer))))
(expression_statement
(assignment
(identifier)
(list
(integer)))))))
================================================================================
Splat Inside of Expression List
================================================================================
a,c = [1,2],3
w, x, y, z = 0, *a, c
--------------------------------------------------------------------------------
(module
(expression_statement
(assignment
(pattern_list
(identifier)
(identifier))
(expression_list
(list
(integer)
(integer))
(integer))))
(expression_statement
(assignment
(pattern_list
(identifier)
(identifier)
(identifier)
(identifier))
(expression_list
(integer)
(list_splat
(identifier))
(identifier)))))