========================================== parses regexes ========================================== theFunction(/regex1/, /regex2/g); --- (program (expression_statement (function_call (identifier) (regex) (regex)))) ========================================== parses numbers ========================================== theFunction(100.0, 200); --- (program (expression_statement (function_call (identifier) (number) (number)))) ========================================== parses strings ========================================== theFunction('', "", 'single-quoted-string', "double-quoted-string"); --- (program (expression_statement (function_call (identifier) (string) (string) (string) (string)))) ========================================== parses multiple statements ========================================== var x = {}, z, i = 0; firstFunction(x) secondFunction(x); --- (program (var_declaration (assignment (identifier) (object)) (identifier) (assignment (identifier) (number))) (expression_statement (function_call (identifier) (identifier))) (expression_statement (function_call (identifier) (identifier)))) ========================================== parses function expressions ========================================== var x = { theMethod: function(argA, argB) { var x = argA; } }; --- (program (var_declaration (assignment (identifier) (object (identifier) (function_expression (formal_parameters (identifier) (identifier)) (statement_block (var_declaration (assignment (identifier) (identifier))))))))) ========================================== parses comments ========================================== // this is the beginning of the script. // here we go. var thing = { // this is a property. // its value is a function. key: function(x /* this is a parameter */) { // this is a statement doStuff(); } }; --- (program (comment) (comment) (var_declaration (assignment (identifier) (object (comment) (comment) (identifier) (function_expression (formal_parameters (identifier) (comment)) (statement_block (comment) (expression_statement (function_call (identifier))))))))) ========================================== parses comments within expressions ========================================== y // comment * z; --- (program (expression_statement (math_op (expression (identifier) (comment)) (identifier))))