================== Simple Statements ================== 1 "one" x --- (root (block (statement (expression (value (integer)))) (statement (expression (value (string)))) (statement (expression (identifier))))) ================== Simple Assignment ================== x = 1 y = "one" --- (root (block (statement (assignment (identifier) (assignment_operator) (statement (expression (value (integer)))))) (statement (assignment (identifier) (assignment_operator) (statement (expression (value (string)))))))) ================== Complex Assignment ================== x = if 1 + 1 == 2 { 'yo' } else { 'no' } --- (root (block (statement (assignment (identifier) (assignment_operator) (statement (if_else (if (expression (logic (expression (math (expression (value (integer))) (math_operator) (expression (value (integer))))) (logic_operator) (expression (value (integer))))) (block (statement (expression (value (string)))))) (else (block (statement (expression (value (string)))))))))))) ================== Expression Precedence ================== x = 3 == 1 + 2 + 2 --- (root (block (statement (assignment (identifier) (assignment_operator) (statement (expression (logic (expression (value (integer))) (logic_operator) (expression (math (expression (math (expression (value (integer))) (math_operator) (expression (value (integer))))) (math_operator) (expression (value (integer))))))))))))