plum
git clone https://git.pyrossh.dev/plum
A statically typed, imperative programming language inspired by rust, python
plum-tooling/tree-sitter-plum/test/corpus/assign.txt
================================================================================
assign
================================================================================
fun main() =
sum = 1 + {{2 * 3} / 4}
enabled = !False
open = {count > 10} && {enabled == True} || {debug == False}
countries_list = listOf("US", "INDIA", "CANADA")
list_ints = listOf(1, 2, 3)
nested_list_ints = listOf(listOf(1), listOf(2), listOf(3))
country_codes = mapOf(
"in" => "INDIA",
"us" => "United States",
"ca" => "Canada"
)
map_ints = mapOf("a" => 1, "b" => 2)
nested_map_ints = mapOf("a" => 1, "b" => mapOf("c" => 3, "d" => 4))
--------------------------------------------------------------------------------
(source
(fn
(fn_identifier)
(body
(assign
(var_identifier)
(expression
(primary_expression
(binary_operator
(primary_expression
(integer))
(primary_expression
(parenthesized_expression
(expression
(primary_expression
(binary_operator
(primary_expression
(parenthesized_expression
(expression
(primary_expression
(binary_operator
(primary_expression
(integer))
(primary_expression
(integer)))))))
(primary_expression
(integer)))))))))))
(assign
(var_identifier)
(expression
(not_operator
(expression
(primary_expression
(type_identifier))))))
(assign
(var_identifier)
(expression
(boolean_operator
(expression
(boolean_operator
(expression
(primary_expression
(parenthesized_expression
(expression
(comparison_operator
(primary_expression
(var_identifier))
(primary_expression
(integer)))))))
(expression
(primary_expression
(parenthesized_expression
(expression
(comparison_operator
(primary_expression
(var_identifier))
(primary_expression
(type_identifier)))))))))
(expression
(primary_expression
(parenthesized_expression
(expression
(comparison_operator
(primary_expression
(var_identifier))
(primary_expression
(type_identifier))))))))))
(assign
(var_identifier)
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(expression
(primary_expression
(string
(string_start)
(string_content)
(string_end))))
(expression
(primary_expression
(string
(string_start)
(string_content)
(string_end))))
(expression
(primary_expression
(string
(string_start)
(string_content)
(string_end)))))))))
(assign
(var_identifier)
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(expression
(primary_expression
(integer)))
(expression
(primary_expression
(integer)))
(expression
(primary_expression
(integer))))))))
(assign
(var_identifier)
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(expression
(primary_expression
(integer)))))))
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(expression
(primary_expression
(integer)))))))
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(expression
(primary_expression
(integer))))))))))))
(assign
(var_identifier)
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(string
(string_start)
(string_content)
(string_end)))))
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(string
(string_start)
(string_content)
(string_end)))))
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(string
(string_start)
(string_content)
(string_end))))))))))
(assign
(var_identifier)
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(integer))))
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(integer)))))))))
(assign
(var_identifier)
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(integer))))
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(fn_call
(var_identifier)
(fn_argument_list
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(integer))))
(pair_argument
(string
(string_start)
(string_content)
(string_end))
(expression
(primary_expression
(integer)))))))))))))))))
================================================================================
field assignment target
================================================================================
fun main() =
self.head = value
self.head.value = x
a, self.field = 1, 2
--------------------------------------------------------------------------------
(source
(fn
(fn_identifier)
(body
(assign
(field_target
(primary_expression
(self))
(fn_identifier))
(expression
(primary_expression
(var_identifier))))
(assign
(field_target
(primary_expression
(attribute
(primary_expression
(self))
(fn_identifier)))
(fn_identifier))
(expression
(primary_expression
(var_identifier))))
(assign
(var_identifier)
(field_target
(primary_expression
(self))
(fn_identifier))
(expression
(primary_expression
(integer)))
(expression
(primary_expression
(integer)))))))