1109 lines
25 KiB
Plaintext
1109 lines
25 KiB
Plaintext
================================================================================
|
||
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)))))
|