================================================================================ Anonymous Function ================================================================================ () { "Hiya" } -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (value (anonymous_function (type_specification (type)) (block (statement (statement_kind (expression (value (string)))))))))))) ================================================================================ Function Assignment ================================================================================ foobar = (x , y ) { x + y } -------------------------------------------------------------------------------- (root (statement (statement_kind (assignment (identifier) (assignment_operator) (statement (statement_kind (expression (value (anonymous_function (identifier) (type_specification (type)) (identifier) (type_specification (type)) (type_specification (type)) (block (statement (statement_kind (expression (math (expression (identifier)) (math_operator) (expression (identifier)))))))))))))))) ================================================================================ Identifier Function Call ================================================================================ foobar("Hiya") -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (identifier)) (expression (value (string)))))))) ================================================================================ Index Function Call ================================================================================ foo:bar("Hiya") -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (index (index_expression (identifier)) (index_expression (identifier)))) (expression (value (string)))))))) ================================================================================ Double Function Call ================================================================================ foobar()("Hiya") -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (function_call (function_expression (identifier)))) (expression (value (string)))))))) ================================================================================ Anonymous Function Call ================================================================================ (msg ) { msg } ("Hiya"); -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (value (anonymous_function (identifier) (type_specification (type)) (type_specification (type)) (block (statement (statement_kind (expression (identifier)))))))) (expression (value (string)))))))) ================================================================================ Complex Function Call ================================================================================ foobar( "hi" 42 { x = 1 y = 2 } ) -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (identifier)) (expression (value (string))) (expression (value (integer))) (expression (value (map (identifier) (statement (statement_kind (expression (value (integer))))) (identifier) (statement (statement_kind (expression (value (integer))))))))))))) ================================================================================ Callback Function Call ================================================================================ x(() { true }) -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (identifier)) (expression (value (anonymous_function (type_specification (type)) (block (statement (statement_kind (expression (value (boolean)))))))))))))) ================================================================================ Nested Function Call ================================================================================ from_json(read('file.json')) -------------------------------------------------------------------------------- (root (statement (statement_kind (expression (function_call (function_expression (identifier)) (expression (function_call (function_expression (identifier)) (expression (value (string)))))))))) ================================================================================ Function Definition ================================================================================ fn foo (bar ) { bar } -------------------------------------------------------------------------------- (root (statement (statement_kind (type_definition (function_definition (identifier) (type_arguments (type (identifier))) (identifier) (type_specification (type (identifier))) (type_specification (type (identifier))) (block (statement (statement_kind (expression (identifier))))))))))