============================================ parses return statements ============================================ package main func main() { return } func helper() { return 1, two, "three" } --- (program (package_directive (package_name)) (func_declaration (var_name) (block_statement (return_statement))) (func_declaration (var_name) (block_statement (return_statement (number) (var_name) (string))))) ============================================ parses variable declaration statements ============================================ package main func main() { x, y := stuff() var z = 10 println(x, y, z) } --- (program (package_directive (package_name)) (func_declaration (var_name) (block_statement (declaration_statement (var_name) (var_name) (call_expression (var_name))) (var_declaration (var_name) (number)) (expression_statement (call_expression (var_name) (var_name) (var_name) (var_name)))))) ============================================ parses if statements ============================================ package main func main() { if condition1() { } if condition2() { } else { } if condition3() { } else if condition4() { } } --- (program (package_directive (package_name)) (func_declaration (var_name) (block_statement (if_statement (call_expression (var_name)) (block_statement)) (if_statement (call_expression (var_name)) (block_statement) (block_statement)) (if_statement (call_expression (var_name)) (block_statement) (if_statement (call_expression (var_name)) (block_statement)))))) ============================================= parses range statements ============================================= package main func main() { for k := range theMap() { println(k) } for k, v := range theMap() { println(k, v) } } --- (program (package_directive (package_name)) (func_declaration (var_name) (block_statement (range_statement (var_name) (call_expression (var_name)) (block_statement (expression_statement (call_expression (var_name) (var_name))))) (range_statement (var_name) (var_name) (call_expression (var_name)) (block_statement (expression_statement (call_expression (var_name) (var_name) (var_name))))))))