Add for loops to javascript grammar

This commit is contained in:
Max Brunsfeld 2014-03-28 12:59:47 -07:00
parent 5deeebc38c
commit 2e11f60710
4 changed files with 3934 additions and 2734 deletions

View file

@ -24,8 +24,23 @@ namespace tree_sitter {
{ "statement", choice({
sym("statement_block"),
sym("if_statement"),
seq({ sym("assignment"), sym("_terminator") }),
seq({ sym("expression"), sym("_terminator") }) }) },
sym("for_statement"),
sym("var_declaration"),
sym("expression_statement") }) },
{ "expression_statement", seq({
sym("expression"),
sym("_terminator") }) },
{ "for_statement", seq({
sym("_for"),
str("("),
choice({
sym("var_declaration"),
sym("expression_statement"),
}),
sym("expression_statement"),
sym("expression"),
str(")"),
sym("statement") }) },
{ "if_statement", seq({
sym("_if"),
str("("),
@ -39,8 +54,13 @@ namespace tree_sitter {
str("{"),
err(repeat(sym("statement"))),
str("}") }) },
{ "assignment", seq({
{ "var_declaration", seq({
sym("_var"),
choice({
sym("assignment"),
sym("identifier") }),
sym("_terminator") }) },
{ "assignment", seq({
sym("identifier"),
str("="),
sym("expression") })},
@ -48,6 +68,7 @@ namespace tree_sitter {
sym("function_expression"),
sym("function_call"),
sym("property_access"),
sym("assignment"),
sym("literal"),
sym("identifier") }) },
{ "function_expression", seq({
@ -92,6 +113,7 @@ namespace tree_sitter {
str(";"),
str("\n") }) },
{ "_var", str("var") },
{ "_for", str("for") },
{ "_if", str("if") },
{ "_function", str("function") },
{ "_else", str("else") },

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@ if (*nonsense*) {
moreStuff();
---
(program
(statement (function_call (identifier)))
(expression_statement (function_call (identifier)))
(if_statement (ERROR)
(statement_block (ERROR)))
(statement (function_call (identifier))))
(expression_statement (function_call (identifier))))

View file

@ -6,9 +6,9 @@ firstFunction(x);
secondFunction(x);
---
(program
(statement (assignment (identifier) (object)))
(statement (function_call (identifier) (identifier)))
(statement (function_call (identifier) (identifier))))
(var_declaration (assignment (identifier) (object)))
(expression_statement (function_call (identifier) (identifier)))
(expression_statement (function_call (identifier) (identifier))))
==========================================
parses if statements
@ -19,7 +19,7 @@ if (isReady()) {
---
(program
(if_statement (function_call (identifier))
(statement_block (statement (function_call (property_access (identifier) (identifier)) (identifier))))))
(statement_block (expression_statement (function_call (property_access (identifier) (identifier)) (identifier))))))
==========================================
parses if-else statements
@ -32,8 +32,8 @@ if (theCondition) {
---
(program (if_statement
(identifier)
(statement_block (statement (function_call (identifier))))
(statement_block (statement (function_call (identifier))))))
(statement_block (expression_statement (function_call (identifier))))
(statement_block (expression_statement (function_call (identifier))))))
==================================================
parses if-else statements with multiple conditions
@ -48,10 +48,23 @@ else {
---
(program
(if_statement (identifier)
(statement_block (statement (function_call (identifier))))
(statement_block (expression_statement (function_call (identifier))))
(if_statement (identifier)
(statement (function_call (identifier)))
(statement_block (statement (function_call (identifier)))))))
(expression_statement (function_call (identifier)))
(statement_block (expression_statement (function_call (identifier)))))))
==========================================
parses for loops
==========================================
for (var i = 1; someCondition(i); i = next()) {
doSomething();
}
---
(program (for_statement
(var_declaration (assignment (identifier) (number)))
(expression_statement (function_call (identifier) (identifier)))
(assignment (identifier) (function_call (identifier)))
(statement_block (expression_statement (function_call (identifier))))))
==========================================
parses function expressions and calls
@ -65,12 +78,12 @@ var x = {
x.theMethod(5, 6);
---
(program
(statement (assignment
(var_declaration (assignment
(identifier)
(object (identifier) (function_expression
(formal_parameters (identifier) (identifier))
(statement_block (statement (assignment (identifier) (identifier))))))))
(statement (function_call
(statement_block (var_declaration (assignment (identifier) (identifier))))))))
(expression_statement (function_call
(property_access (identifier) (identifier))
(number) (number))))