Add returns, deletes and bool operators to js grammar

This commit is contained in:
Max Brunsfeld 2014-04-25 22:08:11 -07:00
parent 61692c8bb1
commit 801f4bd0a8
4 changed files with 16460 additions and 10321 deletions

View file

@ -69,3 +69,58 @@ stuff(); // this is a comment
(comment)
(expression_statement (function_call (identifier)))
(comment))
======================================
parses real code
=====================================
_.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return obj;
if (obj.length === obj.length) {
for (var i = 0; i < length; i = i + 1) {
if (iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
var keys = _.keys(obj);
for (var i = 0; i < length; i = i + 1) {
if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
}
}
return obj;
};
---
(program (expression_statement
(assignment
(property_access (identifier) (identifier))
(assignment (property_access (identifier) (identifier))
(function_expression
(formal_parameters (identifier) (identifier) (identifier))
(statement_block
(if_statement (bool_op (identifier) (null)) (return_statement (identifier)))
(if_statement
(property_access (bool_op (property_access (identifier) (identifier)) (identifier)) (identifier))
(statement_block
(for_statement
(var_declaration (assignment (identifier) (number)))
(expression_statement (bool_op (identifier) (identifier)))
(assignment (identifier) (math_op (identifier) (number)))
(statement_block
(if_statement
(bool_op (function_call (property_access (identifier) (identifier)) (identifier) (property_access (identifier) (identifier)) (identifier) (identifier)) (identifier))
(return_statement)))))
(statement_block
(var_declaration (assignment (identifier) (function_call (property_access (identifier) (identifier)) (identifier))))
(for_statement
(var_declaration (assignment (identifier) (number)))
(expression_statement (bool_op (identifier) (identifier)))
(assignment (identifier) (math_op (identifier) (number)))
(statement_block
(if_statement
(bool_op (function_call
(property_access (identifier) (identifier))
(identifier)
(property_access (identifier) (property_access (identifier) (identifier)))
(property_access (identifier) (identifier)) (identifier)) (identifier))
(return_statement))))))
(return_statement (identifier))))))))

View file

@ -19,3 +19,14 @@ a + b * c - d / e
(math_op
(math_op (identifier) (identifier))
(math_op (identifier) (identifier))))))
==========================================
parses boolean operators
=========================================
!a || !(b && c)
---
(program (expression_statement
(bool_op
(bool_op (identifier))
(bool_op
(expression (bool_op (identifier) (identifier)))))))