========================================== parses multiple statements ========================================== var x = {}; {}; --- (program (statement (assignment (identifier) (object))) (statement (object))) ========================================== parses if statements ========================================== if (theCondition) { var x = 2; } --- (program (if_statement (identifier) (statement_block (statement (assignment (identifier) (number)))))) ========================================== parses if-else statements ========================================== if (theCondition) { var x = 2; } else { var x = 4; } --- (program (if_statement (identifier) (statement_block (statement (assignment (identifier) (number)))) (statement_block (statement (assignment (identifier) (number)))))) ============================================== parses if-else statements with many conditions ============================================== if (conditionA) { var x = 2; } else if (conditionB) var x = 4; else { var x = 8; } --- (program (if_statement (identifier) (statement_block (statement (assignment (identifier) (number)))) (if_statement (identifier) (statement (assignment (identifier) (number))) (statement_block (statement (assignment (identifier) (number))))))) ========================================== parses named functions ========================================== function doThis(argA, argB) { var x = argA; }; doThis(5, 6); --- (program (statement (function_expression (identifier) (formal_parameters (identifier) (identifier)) (statement_block (statement (assignment (identifier) (identifier)))))) (statement (function_call (identifier) (number) (number))))