difftastic/grammar_test/expressions.txt

249 lines
5.1 KiB
Plaintext

============================================
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
(pair (identifier) (string))))
(expression_statement (object
(pair (identifier) (string))
(pair (string) (identifier))
(pair (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;
};
function stuff() {}
---
(program
(expression_statement (function (statement_block)))
(expression_statement (function
(formal_parameters (identifier) (identifier))
(statement_block
(expression_statement (identifier)))))
(expression_statement (function
(identifier)
(statement_block))))
============================================
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))
(arguments (identifier) (string))))
(expression_statement (function_call
(expression (function (statement_block))))))
============================================
Constructor calls
============================================
new module.Klass(1, "two");
new Thing;
---
(program
(expression_statement (constructor_call
(member_access (identifier) (identifier))
(arguments (number) (string))))
(expression_statement (constructor_call
(identifier))))
============================================
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 (var_assignment
(identifier) (number)))
(expression_statement (member_assignment
(identifier) (identifier) (number)))
(expression_statement (subscript_assignment
(identifier) (string) (number))))