========================================== 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 ========================================== var x = { theMethod: function(argA, argB) { var x = argA; } }; x.theMethod(5, 6); --- (program (statement (assignment (identifier) (object (identifier) (function_expression (formal_parameters (identifier) (identifier)) (statement_block (statement (assignment (identifier) (identifier)))))))) (statement (function_call (property_access (identifier) (identifier)) (number) (number))))