Make expression and statement rules hidden in javascript grammar
This commit is contained in:
parent
76e2067ee0
commit
acf9280eda
7 changed files with 20060 additions and 19562 deletions
|
|
@ -13,8 +13,8 @@ secondFunction(x);
|
|||
(var_assignment (identifier) (object))
|
||||
(identifier)
|
||||
(var_assignment (identifier) (number)))
|
||||
(expression_statement (function_call (identifier) (identifier)))
|
||||
(expression_statement (function_call (identifier) (identifier))))
|
||||
(expression_statement (function_call (identifier) (arguments (identifier))))
|
||||
(expression_statement (function_call (identifier) (arguments (identifier)))))
|
||||
|
||||
==========================================
|
||||
if statements
|
||||
|
|
@ -26,9 +26,9 @@ if (isReady()) {
|
|||
|
||||
---
|
||||
|
||||
(program (if_statement (function_call (identifier))
|
||||
(program (if_statement (function_call (identifier) (arguments))
|
||||
(statement_block (expression_statement
|
||||
(function_call (member_access (identifier) (identifier)) (identifier))))))
|
||||
(function_call (member_access (identifier) (identifier)) (arguments (identifier)))))))
|
||||
|
||||
==========================================
|
||||
if-else statements
|
||||
|
|
@ -44,8 +44,8 @@ if (theCondition) {
|
|||
|
||||
(program (if_statement
|
||||
(identifier)
|
||||
(statement_block (expression_statement (function_call (identifier))))
|
||||
(statement_block (expression_statement (function_call (identifier))))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))))
|
||||
|
||||
==================================================
|
||||
if-else statements with multiple conditions
|
||||
|
|
@ -62,10 +62,10 @@ else {
|
|||
---
|
||||
|
||||
(program (if_statement (identifier)
|
||||
(statement_block (expression_statement (function_call (identifier))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))
|
||||
(if_statement (identifier)
|
||||
(expression_statement (function_call (identifier)))
|
||||
(statement_block (expression_statement (function_call (identifier)))))))
|
||||
(expression_statement (function_call (identifier) (arguments)))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments)))))))
|
||||
|
||||
==========================================
|
||||
for loops
|
||||
|
|
@ -79,9 +79,9 @@ for (var i = 1; someCondition(i); i = next()) {
|
|||
|
||||
(program (for_statement
|
||||
(var_declaration (var_assignment (identifier) (number)))
|
||||
(function_call (identifier) (identifier))
|
||||
(assignment (identifier) (function_call (identifier)))
|
||||
(statement_block (expression_statement (function_call (identifier))))))
|
||||
(function_call (identifier) (arguments (identifier)))
|
||||
(assignment (identifier) (function_call (identifier) (arguments)))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))))
|
||||
|
||||
==========================================
|
||||
for-in loops
|
||||
|
|
@ -97,10 +97,10 @@ for (key in someObject)
|
|||
(program
|
||||
(for_in_statement
|
||||
(identifier) (identifier)
|
||||
(expression_statement (function_call (identifier))))
|
||||
(expression_statement (function_call (identifier) (arguments))))
|
||||
(for_in_statement
|
||||
(identifier) (identifier)
|
||||
(expression_statement (function_call (identifier)))))
|
||||
(expression_statement (function_call (identifier) (arguments)))))
|
||||
|
||||
==========================================
|
||||
while loops
|
||||
|
|
@ -113,8 +113,8 @@ while (someCondition(i)) {
|
|||
---
|
||||
|
||||
(program (while_statement
|
||||
(function_call (identifier) (identifier))
|
||||
(statement_block (expression_statement (function_call (identifier))))))
|
||||
(function_call (identifier) (arguments (identifier)))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))))
|
||||
|
||||
==========================================
|
||||
try/catch statements
|
||||
|
|
@ -136,13 +136,13 @@ try {
|
|||
|
||||
(program
|
||||
(try_statement
|
||||
(statement_block (expression_statement (function_call (identifier))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))
|
||||
(catch (identifier)
|
||||
(statement_block (expression_statement (function_call (identifier) (identifier))))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments (identifier)))))))
|
||||
(try_statement
|
||||
(statement_block (expression_statement (function_call (identifier))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments))))
|
||||
(finally
|
||||
(statement_block (expression_statement (function_call (identifier)))))))
|
||||
(statement_block (expression_statement (function_call (identifier) (arguments)))))))
|
||||
|
||||
===========================================
|
||||
throw statements
|
||||
|
|
@ -153,7 +153,7 @@ throw new Error("wtf");
|
|||
---
|
||||
|
||||
(program
|
||||
(throw_statement (constructor_call (identifier) (string))))
|
||||
(throw_statement (constructor_call (identifier) (arguments (string)))))
|
||||
|
||||
===========================================
|
||||
indented code after blocks
|
||||
|
|
@ -189,11 +189,11 @@ switch(x) {
|
|||
(program (switch_statement (identifier)
|
||||
(case
|
||||
(string)
|
||||
(expression_statement (function_call (identifier) (string)))
|
||||
(expression_statement (function_call (identifier) (arguments (string))))
|
||||
(break_statement))
|
||||
(case
|
||||
(function_call (identifier))
|
||||
(expression_statement (function_call (identifier) (string)))
|
||||
(function_call (identifier) (arguments))
|
||||
(expression_statement (function_call (identifier) (arguments (string))))
|
||||
(break_statement))
|
||||
(default
|
||||
(expression_statement (function_call (identifier) (string))))))
|
||||
(expression_statement (function_call (identifier) (arguments (string)))))))
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ stuff(|||);
|
|||
---
|
||||
|
||||
(program
|
||||
(expression_statement (function_call (identifier) (ERROR (UNEXPECTED '|')))))
|
||||
(expression_statement (function_call (identifier) (arguments (ERROR (UNEXPECTED '|'))))))
|
||||
|
||||
==========================================
|
||||
errors in if statements
|
||||
|
|
@ -22,9 +22,9 @@ moreStuff();
|
|||
---
|
||||
|
||||
(program
|
||||
(expression_statement (function_call (identifier)))
|
||||
(expression_statement (function_call (identifier) (arguments)))
|
||||
(if_statement
|
||||
(ERROR (UNEXPECTED '*') (identifier))
|
||||
(statement_block
|
||||
(expression_statement (ERROR (UNEXPECTED '*') (identifier) (identifier)))))
|
||||
(expression_statement (function_call (identifier))))
|
||||
(expression_statement (function_call (identifier) (arguments))))
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ var thing = {
|
|||
(formal_parameters (identifier) (comment))
|
||||
(statement_block
|
||||
(comment)
|
||||
(expression_statement (function_call (identifier))))))))))
|
||||
(expression_statement (function_call (identifier) (arguments))))))))))
|
||||
|
||||
==========================================
|
||||
comments within expressions
|
||||
|
|
@ -95,4 +95,4 @@ y // comment
|
|||
---
|
||||
|
||||
(program (expression_statement
|
||||
(math_op (expression (identifier) (comment)) (identifier))))
|
||||
(math_op (identifier) (comment) (identifier))))
|
||||
|
|
|
|||
|
|
@ -16,33 +16,34 @@ constructor calls
|
|||
==========================================
|
||||
|
||||
var x = new Node(5, new Node(3, null));
|
||||
new Thing;
|
||||
|
||||
---
|
||||
|
||||
(program (var_declaration (var_assignment
|
||||
(identifier)
|
||||
(constructor_call (identifier) (arguments
|
||||
(number)
|
||||
(program
|
||||
(var_declaration (var_assignment
|
||||
(identifier)
|
||||
(constructor_call (identifier) (arguments
|
||||
(number)
|
||||
(null))))))))
|
||||
(constructor_call (identifier) (arguments
|
||||
(number)
|
||||
(null)))))))
|
||||
(expression_statement (constructor_call (identifier))))
|
||||
|
||||
==========================================
|
||||
property access with dot notation
|
||||
==========================================
|
||||
|
||||
object.property = "the-value";
|
||||
print(object.property);
|
||||
object.property;
|
||||
|
||||
---
|
||||
|
||||
(program
|
||||
(expression_statement (assignment
|
||||
(member_access (identifier) (identifier))
|
||||
(string)))
|
||||
(expression_statement (function_call
|
||||
(identifier)
|
||||
(member_access (identifier) (identifier)))))
|
||||
(expression_statement
|
||||
(assignment (member_access (identifier) (identifier)) (string)))
|
||||
(expression_statement
|
||||
(member_access (identifier) (identifier))))
|
||||
|
||||
==========================================
|
||||
property access across lines
|
||||
|
|
@ -64,30 +65,28 @@ dynamic property access
|
|||
==========================================
|
||||
|
||||
object[propertName()] = propertyValue();
|
||||
print(object[propertyName()]);
|
||||
object[propertyName()];
|
||||
|
||||
---
|
||||
|
||||
(program
|
||||
(expression_statement (assignment
|
||||
(subscript_access (identifier) (function_call (identifier)))
|
||||
(function_call (identifier))))
|
||||
(expression_statement (function_call
|
||||
(identifier)
|
||||
(subscript_access (identifier) (function_call (identifier))))))
|
||||
(expression_statement
|
||||
(assignment
|
||||
(subscript_access (identifier) (function_call (identifier) (arguments)))
|
||||
(function_call (identifier) (arguments))))
|
||||
(expression_statement
|
||||
(subscript_access (identifier) (function_call (identifier) (arguments)))))
|
||||
|
||||
==========================================
|
||||
ternary expressions
|
||||
==========================================
|
||||
|
||||
print(isDone() ? stuff : otherStuff);
|
||||
isDone() ? stuff : otherStuff;
|
||||
|
||||
---
|
||||
|
||||
(program (expression_statement
|
||||
(function_call
|
||||
(identifier)
|
||||
(ternary (function_call (identifier)) (identifier) (identifier)))))
|
||||
(ternary (function_call (identifier) (arguments)) (identifier) (identifier))))
|
||||
|
||||
==========================================
|
||||
mathematical operators
|
||||
|
|
@ -118,21 +117,20 @@ boolean operators
|
|||
(bool_op
|
||||
(bool_op (identifier))
|
||||
(bool_op
|
||||
(expression (bool_op (identifier) (identifier)))))))
|
||||
(bool_op (identifier) (identifier))))))
|
||||
|
||||
===========================================
|
||||
type operators
|
||||
===========================================
|
||||
|
||||
print((x instanceof Array) || (typeof x === "string"))
|
||||
(x instanceof Array) || (typeof x === "string")
|
||||
|
||||
---
|
||||
|
||||
(program (expression_statement
|
||||
(function_call (identifier)
|
||||
(bool_op
|
||||
(expression (type_op (identifier) (identifier)))
|
||||
(expression (rel_op (type_op (identifier)) (string)))))))
|
||||
(bool_op
|
||||
(type_op (identifier) (identifier))
|
||||
(rel_op (type_op (identifier)) (string)))))
|
||||
|
||||
============================================
|
||||
the 'in' operator
|
||||
|
|
@ -145,7 +143,7 @@ print(x in y)
|
|||
(program (expression_statement
|
||||
(function_call
|
||||
(identifier)
|
||||
(type_op (identifier) (identifier)))))
|
||||
(arguments (type_op (identifier) (identifier))))))
|
||||
|
||||
============================================
|
||||
assignment operators
|
||||
|
|
@ -174,6 +172,6 @@ print(x.y.z && a.b.c)
|
|||
|
||||
(program (expression_statement
|
||||
(function_call (identifier)
|
||||
(bool_op
|
||||
(arguments (bool_op
|
||||
(member_access (member_access (identifier) (identifier)) (identifier))
|
||||
(member_access (member_access (identifier) (identifier)) (identifier))))))
|
||||
(member_access (member_access (identifier) (identifier)) (identifier)))))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue