Add finally, instance of, typeof, in to js grammar

This commit is contained in:
Max Brunsfeld 2014-06-11 11:28:49 -07:00
parent c91c5cb730
commit 4ad6278334
8 changed files with 47167 additions and 21103 deletions

View file

@ -58,7 +58,7 @@ namespace tree_sitter_examples {
// Type expressions
{ "pointer_type", seq({
str("*"),
keyword("*"),
sym("type_expression") }) },
{ "map_type", seq({
keyword("map"),

View file

@ -30,20 +30,20 @@ namespace tree_sitter_examples {
rule_ptr infix_op(std::string op, std::string rule_name, int precedence) {
return prec(precedence, seq({
sym(rule_name),
str(op),
keyword(op),
sym(rule_name) }));
}
rule_ptr prefix_op(std::string op, std::string rule_name, int precedence) {
return prec(precedence, seq({
str(op),
keyword(op),
sym(rule_name) }));
}
rule_ptr postfix_op(std::string op, std::string rule_name, int precedence) {
return prec(precedence, seq({
sym(rule_name),
str(op) }));
keyword(op) }));
}
rule_ptr delimited(std::string delimiter) {

View file

@ -45,9 +45,15 @@ namespace tree_sitter_examples {
{ "try_statement", seq({
keyword("try"),
sym("statement"),
optional(sym("catch_clause")),
optional(sym("finally_clause")) }) },
{ "catch_clause", seq({
keyword("catch"),
in_parens(err(sym("identifier"))),
sym("statement") }) },
{ "finally_clause", seq({
keyword("finally"),
sym("statement") }) },
{ "switch_statement", seq({
keyword("switch"),
in_parens(err(sym("expression"))),
@ -100,7 +106,13 @@ namespace tree_sitter_examples {
sym("false"),
sym("null"),
sym("identifier"),
sym("in_expression"),
sym("instanceof_expression"),
sym("typeof_expression"),
in_parens(sym("expression")) }) },
{ "in_expression", infix_op("in", "expression", 3) },
{ "instanceof_expression", infix_op("instanceof", "expression", 3) },
{ "typeof_expression", prefix_op("typeof", "expression", 3) },
{ "math_op", choice({
prefix_op("++", "expression", 3),
prefix_op("--", "expression", 3),

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -322,7 +322,6 @@ LEX_FN() {
ADVANCE(27);
LEX_ERROR();
case ts_lex_state_error:
START_TOKEN();
if (lookahead == '\0')
ADVANCE(25);
if (('\t' <= lookahead && lookahead <= '\n') ||