============================================ Strings ============================================ "A string with \"double\" and 'single' quotes"; 'A string with "double" and \'single\' quotes'; ---- (program (expression_statement (string)) (expression_statement (string))) ============================================ Numbers ============================================ 101; 3.14; --- (program (expression_statement (number)) (expression_statement (number))) ============================================ Variables ============================================ theVar; theVar2; --- (program (expression_statement (identifier)) (expression_statement (identifier))) ============================================ Booleans ============================================ null; undefined; true; false; --- (program (expression_statement (null)) (expression_statement (undefined)) (expression_statement (true)) (expression_statement (false))) ============================================ Regexps ============================================ /one/; /one/g; /one/i; /one/gi; --- (program (expression_statement (regex)) (expression_statement (regex)) (expression_statement (regex)) (expression_statement (regex))) ============================================ Objects ============================================ {}; { key1: "value1" }; { key1: "value1", "key2": value2, key3: 3.0 }; --- (program (expression_statement (object)) (expression_statement (object (identifier) (string))) (expression_statement (object (identifier) (string) (string) (identifier) (identifier) (number)))) ============================================ Arrays ============================================ []; [ "item1" ]; [ "item1", item2 ]; --- (program (expression_statement (array)) (expression_statement (array (string))) (expression_statement (array (string) (identifier)))) ============================================ Functions ============================================ function() {}; function(arg1, arg2) { arg2; }; --- (program (expression_statement (function (formal_parameters) (statement_block))) (expression_statement (function (formal_parameters (identifier) (identifier)) (statement_block (expression_statement (identifier)))))) ============================================ Property access ============================================ x.someProperty; x[someVariable]; x["some-string"]; --- (program (expression_statement (member_access (identifier) (identifier))) (expression_statement (subscript_access (identifier) (identifier))) (expression_statement (subscript_access (identifier) (string)))) ============================================ Function calls ============================================ x.someMethod(arg1, "arg2"); (function() {})(); --- (program (expression_statement (function_call (member_access (identifier) (identifier)) (identifier) (string))) (expression_statement (function_call (expression (function (formal_parameters) (statement_block)))))) ============================================ Math operators ============================================ i++; i--; i + j; i - j; --- (program (expression_statement (math_op (identifier))) (expression_statement (math_op (identifier))) (expression_statement (math_op (identifier) (identifier))) (expression_statement (math_op (identifier) (identifier)))) ============================================ Boolean operators ============================================ i || j; i && j; --- (program (expression_statement (bool_op (identifier) (identifier))) (expression_statement (bool_op (identifier) (identifier)))) ============================================ Relational operators ============================================ x < y; x <= y; x == y; x === y; x != y; x !== y; x >= y; x > y; --- (program (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier))) (expression_statement (rel_op (identifier) (identifier)))) ============================================== Assignments ============================================== x = 0; x.y = 0; x["y"] = 0; --- (program (expression_statement (assignment (identifier) (number))) (expression_statement (assignment (member_access (identifier) (identifier)) (number))) (expression_statement (assignment (subscript_access (identifier) (string)) (number))))