Add if statements to javascript grammar
This commit is contained in:
parent
aac0786449
commit
42214ba0eb
3 changed files with 1315 additions and 1130 deletions
|
|
@ -17,30 +17,31 @@ namespace tree_sitter {
|
|||
Grammar javascript() {
|
||||
return Grammar({
|
||||
{ "program", repeat(sym("statement")) },
|
||||
{ "terminator", choice({ str(";"), str("\n") }) },
|
||||
{ "terminator", choice({
|
||||
str(";"),
|
||||
str("\n") }) },
|
||||
{ "statement", choice({
|
||||
sym("if"),
|
||||
seq({ sym("expression"), _sym("terminator") }),
|
||||
seq({ sym("assignment"), _sym("terminator") }) }) },
|
||||
{ "if", seq({
|
||||
str("if"),
|
||||
sym("if_statement"),
|
||||
seq({ sym("assignment"), _sym("terminator") }),
|
||||
seq({ sym("expression"), _sym("terminator") }) }) },
|
||||
{ "if_statement", seq({
|
||||
_sym("IF"),
|
||||
str("("),
|
||||
sym("expression"),
|
||||
str(")"),
|
||||
sym("block")
|
||||
}) },
|
||||
{ "block", seq({
|
||||
sym("statement_block") }) },
|
||||
{ "statement_block", seq({
|
||||
str("{"),
|
||||
repeat(sym("statement")),
|
||||
str("}")
|
||||
}) },
|
||||
str("}") }) },
|
||||
{ "assignment", seq({
|
||||
str("var"),
|
||||
_sym("VAR"),
|
||||
sym("identifier"),
|
||||
str("="),
|
||||
sym("expression") })},
|
||||
{ "expression", choice({
|
||||
sym("literal") }) },
|
||||
sym("literal"),
|
||||
sym("identifier") }) },
|
||||
{ "literal", choice({
|
||||
sym("object"),
|
||||
sym("array"),
|
||||
|
|
@ -60,6 +61,8 @@ namespace tree_sitter {
|
|||
str("["),
|
||||
comma_sep(err(sym("expression"))),
|
||||
str("]") }) },
|
||||
{ "VAR", str("var") },
|
||||
{ "IF", str("if") },
|
||||
{ "string", pattern("\"([^\"]|\\\\\")+\"") },
|
||||
{ "identifier", pattern("[\\w_$]+") },
|
||||
{ "number", pattern("\\d+(.\\d+)?") },
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -11,12 +11,12 @@ var x = {};
|
|||
==========================================
|
||||
parses if statements
|
||||
==========================================
|
||||
if (1) {
|
||||
if (duh) {
|
||||
var x = 2;
|
||||
}
|
||||
---
|
||||
(program
|
||||
(statement (if
|
||||
(expression (literal (number)))
|
||||
(block (statement (assignment (identifier) (expression (literal (number)))))))))
|
||||
(statement (if_statement
|
||||
(expression (identifier))
|
||||
(statement_block (statement (assignment (identifier) (expression (literal (number)))))))))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue