diff --git a/corpus/main.txt b/corpus/main.txt
index 2cfe3ad..656a065 100644
--- a/corpus/main.txt
+++ b/corpus/main.txt
@@ -17,17 +17,13 @@ Variables
(content)
(tag
(code))
- (content)
(tag
(code))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(code))
- (content)
(tag
(keyword))
(content))
@@ -41,6 +37,9 @@ Comments
{{# This is a comment #}}
{{# a comment #}}
{{# comment #}}
+
+
Hello world!
+
{{# life is pain comment #}}
{{ This is not a comment }}
{{# I'm a multi-line comment #}}
@@ -52,19 +51,15 @@ Comments
(content)
(tag
(comment))
- (content)
(tag
(comment))
- (content)
(tag
(comment))
(content)
(tag
(comment))
- (content)
(tag
(code))
- (content)
(tag
(comment))
(content))
@@ -85,40 +80,33 @@ Filters
---
(template
- (content)
(tag
(keyword)
(code)
(filter
(code)))
- (content)
(tag
(keyword)
(code)
(filter
(code)
(code)))
- (content)
(tag
(keyword)
(code)
(filter
(code)))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(keyword)
(code)
(filter
(code)))
- (content)
(tag
(keyword)
(code)
@@ -144,34 +132,27 @@ Expressions
---
(template
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(code))
- (content)
(tag
(code))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(keyword)
(code)
(filter
(code)))
- (content)
(tag
(keyword)
(code)
(filter
(code)
(code)))
- (content)
(tag
(keyword)
(code)
@@ -179,7 +160,6 @@ Expressions
(code)
(code)
(code)))
- (content)
(tag
(keyword))
(content))
@@ -200,27 +180,20 @@ Expressions 2
---
(template
- (content)
(tag
(keyword)
(code))
- (content)
(tag)
- (content)
(tag)
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(code))
(content))
@@ -233,31 +206,44 @@ Stress Keywords
{{ code }}
{{ keyword code }}
{{ keyword() code }}
-
+Hello!
{{ Deno }}
{{ Deno thing }}
---
(template
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(code))
- (content)
(tag
(keyword)
(code))
- (content)
(tag
(code))
(content)
(tag
(code))
+ (tag
+ (code))
+ (content))
+
+====================
+Test parens
+====================
+
+Hello!
+{{ hello }}
+{{ code().doStuff!() }}
+
+---
+
+(template
(content)
+ (tag
+ (code))
(tag
(code))
(content))
diff --git a/src/grammar.json b/src/grammar.json
index e70f729..66ec52b 100644
--- a/src/grammar.json
+++ b/src/grammar.json
@@ -137,27 +137,6 @@
}
]
},
- "keyword": {
- "type": "PATTERN",
- "value": "[a-z>][a-zA-Z]*? |if|for|include|set|import|export|layout|function"
- },
- "code_snippet": {
- "type": "SEQ",
- "members": [
- {
- "type": "PATTERN",
- "value": "[a-zA-Z>\\.\\(\\)\\!_\\?]"
- },
- {
- "type": "SYMBOL",
- "name": "_code"
- }
- ]
- },
- "close_keyword": {
- "type": "PATTERN",
- "value": "\\/([a-zA-Z]+|if|for|include|set|import|export|layout|function)"
- },
"filter": {
"type": "REPEAT1",
"content": {
@@ -179,6 +158,27 @@
]
}
},
+ "keyword": {
+ "type": "PATTERN",
+ "value": "[a-z>][a-zA-Z]*? |if|for|include|set|import|export|layout|function"
+ },
+ "code_snippet": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[a-zA-Z>\\.\\(\\)\\!_\\?]"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_code"
+ }
+ ]
+ },
+ "close_keyword": {
+ "type": "PATTERN",
+ "value": "\\/([a-zA-Z]+|if|for|include|set|import|export|layout|function)"
+ },
"comment": {
"type": "PATTERN",
"value": "#[^#]+#"
@@ -201,3 +201,4 @@
"inline": [],
"supertypes": []
}
+
diff --git a/src/parser.c b/src/parser.c
index 86867d7..7877d3b 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1,4 +1,4 @@
-#include "tree_sitter/parser.h"
+#include
#if defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic push
@@ -16,24 +16,24 @@
#define MAX_ALIAS_SEQUENCE_LENGTH 4
#define PRODUCTION_ID_COUNT 3
-enum ts_symbol_identifiers {
+enum {
aux_sym_content_token1 = 1,
anon_sym_LBRACE_LBRACE = 2,
anon_sym_LBRACE_LBRACE_DASH = 3,
anon_sym_RBRACE_RBRACE = 4,
anon_sym_DASH_RBRACE_RBRACE = 5,
- sym_keyword = 6,
- aux_sym_code_snippet_token1 = 7,
- sym_close_keyword = 8,
- anon_sym_PIPE_GT = 9,
+ anon_sym_PIPE_GT = 6,
+ sym_keyword = 7,
+ aux_sym_code_snippet_token1 = 8,
+ sym_close_keyword = 9,
sym_comment = 10,
sym__code = 11,
sym_template = 12,
sym_content = 13,
sym_tag = 14,
sym__expression = 15,
- sym_code_snippet = 16,
- sym_filter = 17,
+ sym_filter = 16,
+ sym_code_snippet = 17,
aux_sym_template_repeat1 = 18,
aux_sym_content_repeat1 = 19,
aux_sym_filter_repeat1 = 20,
@@ -46,18 +46,18 @@ static const char * const ts_symbol_names[] = {
[anon_sym_LBRACE_LBRACE_DASH] = "{{-",
[anon_sym_RBRACE_RBRACE] = "}}",
[anon_sym_DASH_RBRACE_RBRACE] = "-}}",
+ [anon_sym_PIPE_GT] = "|>",
[sym_keyword] = "keyword",
[aux_sym_code_snippet_token1] = "code_snippet_token1",
[sym_close_keyword] = "keyword",
- [anon_sym_PIPE_GT] = "|>",
[sym_comment] = "comment",
[sym__code] = "_code",
[sym_template] = "template",
[sym_content] = "content",
[sym_tag] = "tag",
[sym__expression] = "_expression",
- [sym_code_snippet] = "code",
[sym_filter] = "filter",
+ [sym_code_snippet] = "code",
[aux_sym_template_repeat1] = "template_repeat1",
[aux_sym_content_repeat1] = "content_repeat1",
[aux_sym_filter_repeat1] = "filter_repeat1",
@@ -70,18 +70,18 @@ static const TSSymbol ts_symbol_map[] = {
[anon_sym_LBRACE_LBRACE_DASH] = anon_sym_LBRACE_LBRACE_DASH,
[anon_sym_RBRACE_RBRACE] = anon_sym_RBRACE_RBRACE,
[anon_sym_DASH_RBRACE_RBRACE] = anon_sym_DASH_RBRACE_RBRACE,
+ [anon_sym_PIPE_GT] = anon_sym_PIPE_GT,
[sym_keyword] = sym_keyword,
[aux_sym_code_snippet_token1] = aux_sym_code_snippet_token1,
[sym_close_keyword] = sym_keyword,
- [anon_sym_PIPE_GT] = anon_sym_PIPE_GT,
[sym_comment] = sym_comment,
[sym__code] = sym__code,
[sym_template] = sym_template,
[sym_content] = sym_content,
[sym_tag] = sym_tag,
[sym__expression] = sym__expression,
- [sym_code_snippet] = sym_code_snippet,
[sym_filter] = sym_filter,
+ [sym_code_snippet] = sym_code_snippet,
[aux_sym_template_repeat1] = aux_sym_template_repeat1,
[aux_sym_content_repeat1] = aux_sym_content_repeat1,
[aux_sym_filter_repeat1] = aux_sym_filter_repeat1,
@@ -112,6 +112,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true,
.named = false,
},
+ [anon_sym_PIPE_GT] = {
+ .visible = true,
+ .named = false,
+ },
[sym_keyword] = {
.visible = true,
.named = true,
@@ -124,10 +128,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true,
.named = true,
},
- [anon_sym_PIPE_GT] = {
- .visible = true,
- .named = false,
- },
[sym_comment] = {
.visible = true,
.named = true,
@@ -152,11 +152,11 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = false,
.named = true,
},
- [sym_code_snippet] = {
+ [sym_filter] = {
.visible = true,
.named = true,
},
- [sym_filter] = {
+ [sym_code_snippet] = {
.visible = true,
.named = true,
},
@@ -223,142 +223,144 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
if (lookahead == '#') ADVANCE(28);
if (lookahead == '-') ADVANCE(27);
if (lookahead == '/') ADVANCE(23);
- if (lookahead == 'e') ADVANCE(45);
- if (lookahead == 'f') ADVANCE(44);
- if (lookahead == 'i') ADVANCE(43);
- if (lookahead == 'l') ADVANCE(41);
- if (lookahead == 's') ADVANCE(42);
+ if (lookahead == 'e') ADVANCE(46);
+ if (lookahead == 'f') ADVANCE(45);
+ if (lookahead == 'i') ADVANCE(44);
+ if (lookahead == 'l') ADVANCE(42);
+ if (lookahead == 's') ADVANCE(43);
if (lookahead == '{') ADVANCE(24);
if (lookahead == '|') ADVANCE(22);
if (lookahead == '}') ADVANCE(25);
- if (('\t' <= lookahead && lookahead <= '\r') ||
+ if (lookahead == '\t' ||
+ lookahead == '\n' ||
+ lookahead == '\r' ||
lookahead == ' ') SKIP(0)
if (lookahead == '>' ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(46);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(47);
if (lookahead == '!' ||
lookahead == '(' ||
lookahead == ')' ||
lookahead == '.' ||
lookahead == '?' ||
('A' <= lookahead && lookahead <= 'Z') ||
- lookahead == '_') ADVANCE(40);
+ lookahead == '_') ADVANCE(41);
END_STATE();
case 1:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'c') ADVANCE(6);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 2:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'c') ADVANCE(16);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 3:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'd') ADVANCE(4);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 4:
- if (lookahead == ' ') ADVANCE(38);
- if (lookahead == 'e') ADVANCE(39);
+ if (lookahead == ' ') ADVANCE(39);
+ if (lookahead == 'e') ADVANCE(40);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 5:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'i') ADVANCE(10);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 6:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'l') ADVANCE(18);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 7:
- if (lookahead == ' ') ADVANCE(38);
- if (lookahead == 'n') ADVANCE(39);
+ if (lookahead == ' ') ADVANCE(39);
+ if (lookahead == 'n') ADVANCE(40);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 8:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'n') ADVANCE(2);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 9:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'o') ADVANCE(14);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 10:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'o') ADVANCE(7);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 11:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'o') ADVANCE(17);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 12:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'p') ADVANCE(9);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 13:
- if (lookahead == ' ') ADVANCE(38);
- if (lookahead == 'r') ADVANCE(39);
+ if (lookahead == ' ') ADVANCE(39);
+ if (lookahead == 'r') ADVANCE(40);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 14:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'r') ADVANCE(15);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 15:
- if (lookahead == ' ') ADVANCE(38);
- if (lookahead == 't') ADVANCE(39);
+ if (lookahead == ' ') ADVANCE(39);
+ if (lookahead == 't') ADVANCE(40);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 16:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 't') ADVANCE(5);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 17:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'u') ADVANCE(15);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 18:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'u') ADVANCE(3);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 19:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'y') ADVANCE(11);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 20:
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
@@ -367,16 +369,16 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
if (lookahead != 0) ADVANCE(21);
END_STATE();
case 22:
- if (lookahead == '>') ADVANCE(72);
+ if (lookahead == '>') ADVANCE(38);
END_STATE();
case 23:
- if (lookahead == 'e') ADVANCE(69);
- if (lookahead == 'f') ADVANCE(58);
- if (lookahead == 'i') ADVANCE(53);
- if (lookahead == 'l') ADVANCE(47);
- if (lookahead == 's') ADVANCE(52);
+ if (lookahead == 'e') ADVANCE(70);
+ if (lookahead == 'f') ADVANCE(59);
+ if (lookahead == 'i') ADVANCE(54);
+ if (lookahead == 'l') ADVANCE(48);
+ if (lookahead == 's') ADVANCE(53);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 24:
if (lookahead == '{') ADVANCE(34);
@@ -397,7 +399,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
case 29:
if (eof) ADVANCE(30);
if (lookahead == '{') ADVANCE(31);
- if (('\t' <= lookahead && lookahead <= '\r') ||
+ if (lookahead == '\t' ||
+ lookahead == '\n' ||
+ lookahead == '\r' ||
lookahead == ' ') ADVANCE(32);
if (lookahead != 0) ADVANCE(33);
END_STATE();
@@ -411,7 +415,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
case 32:
ACCEPT_TOKEN(aux_sym_content_token1);
if (lookahead == '{') ADVANCE(31);
- if (('\t' <= lookahead && lookahead <= '\r') ||
+ if (lookahead == '\t' ||
+ lookahead == '\n' ||
+ lookahead == '\r' ||
lookahead == ' ') ADVANCE(32);
if (lookahead != 0) ADVANCE(33);
END_STATE();
@@ -434,215 +440,215 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
ACCEPT_TOKEN(anon_sym_DASH_RBRACE_RBRACE);
END_STATE();
case 38:
- ACCEPT_TOKEN(sym_keyword);
+ ACCEPT_TOKEN(anon_sym_PIPE_GT);
END_STATE();
case 39:
ACCEPT_TOKEN(sym_keyword);
- if (lookahead == ' ') ADVANCE(38);
+ END_STATE();
+ case 40:
+ ACCEPT_TOKEN(sym_keyword);
+ if (lookahead == ' ') ADVANCE(39);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 40:
+ case 41:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
END_STATE();
- case 41:
+ case 42:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'a') ADVANCE(19);
if (('A' <= lookahead && lookahead <= 'Z') ||
('b' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 42:
+ case 43:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'e') ADVANCE(15);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 43:
+ case 44:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
- if (lookahead == ' ') ADVANCE(38);
- if (lookahead == 'f') ADVANCE(39);
+ if (lookahead == ' ') ADVANCE(39);
+ if (lookahead == 'f') ADVANCE(40);
if (lookahead == 'm') ADVANCE(12);
if (lookahead == 'n') ADVANCE(1);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 44:
+ case 45:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'o') ADVANCE(13);
if (lookahead == 'u') ADVANCE(8);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 45:
+ case 46:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (lookahead == 'x') ADVANCE(12);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 46:
+ case 47:
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
- if (lookahead == ' ') ADVANCE(38);
+ if (lookahead == ' ') ADVANCE(39);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
- case 47:
- ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'a') ADVANCE(70);
- if (('A' <= lookahead && lookahead <= 'Z') ||
- ('b' <= lookahead && lookahead <= 'z')) ADVANCE(71);
- END_STATE();
case 48:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'c') ADVANCE(55);
+ if (lookahead == 'a') ADVANCE(71);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('b' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 49:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'c') ADVANCE(66);
+ if (lookahead == 'c') ADVANCE(56);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 50:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'd') ADVANCE(51);
+ if (lookahead == 'c') ADVANCE(67);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 51:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'e') ADVANCE(71);
+ if (lookahead == 'd') ADVANCE(52);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 52:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'e') ADVANCE(65);
+ if (lookahead == 'e') ADVANCE(72);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 53:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'f') ADVANCE(71);
- if (lookahead == 'm') ADVANCE(62);
- if (lookahead == 'n') ADVANCE(48);
+ if (lookahead == 'e') ADVANCE(66);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 54:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'i') ADVANCE(60);
+ if (lookahead == 'f') ADVANCE(72);
+ if (lookahead == 'm') ADVANCE(63);
+ if (lookahead == 'n') ADVANCE(49);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 55:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'l') ADVANCE(68);
+ if (lookahead == 'i') ADVANCE(61);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 56:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'n') ADVANCE(71);
+ if (lookahead == 'l') ADVANCE(69);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 57:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'n') ADVANCE(49);
+ if (lookahead == 'n') ADVANCE(72);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 58:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'o') ADVANCE(63);
- if (lookahead == 'u') ADVANCE(57);
+ if (lookahead == 'n') ADVANCE(50);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 59:
ACCEPT_TOKEN(sym_close_keyword);
if (lookahead == 'o') ADVANCE(64);
+ if (lookahead == 'u') ADVANCE(58);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 60:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'o') ADVANCE(56);
+ if (lookahead == 'o') ADVANCE(65);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 61:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'o') ADVANCE(67);
+ if (lookahead == 'o') ADVANCE(57);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 62:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'p') ADVANCE(59);
+ if (lookahead == 'o') ADVANCE(68);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 63:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'r') ADVANCE(71);
+ if (lookahead == 'p') ADVANCE(60);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 64:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'r') ADVANCE(65);
+ if (lookahead == 'r') ADVANCE(72);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 65:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 't') ADVANCE(71);
+ if (lookahead == 'r') ADVANCE(66);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 66:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 't') ADVANCE(54);
+ if (lookahead == 't') ADVANCE(72);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 67:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'u') ADVANCE(65);
+ if (lookahead == 't') ADVANCE(55);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 68:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'u') ADVANCE(50);
+ if (lookahead == 'u') ADVANCE(66);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 69:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'x') ADVANCE(62);
+ if (lookahead == 'u') ADVANCE(51);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 70:
ACCEPT_TOKEN(sym_close_keyword);
- if (lookahead == 'y') ADVANCE(61);
+ if (lookahead == 'x') ADVANCE(63);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 71:
ACCEPT_TOKEN(sym_close_keyword);
+ if (lookahead == 'y') ADVANCE(62);
if (('A' <= lookahead && lookahead <= 'Z') ||
- ('a' <= lookahead && lookahead <= 'z')) ADVANCE(71);
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 72:
- ACCEPT_TOKEN(anon_sym_PIPE_GT);
+ ACCEPT_TOKEN(sym_close_keyword);
+ if (('A' <= lookahead && lookahead <= 'Z') ||
+ ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72);
END_STATE();
case 73:
ACCEPT_TOKEN(sym_comment);
@@ -678,6 +684,20 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[22] = {.lex_state = 0},
};
+enum {
+ ts_external_token__code = 0,
+};
+
+static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
+ [ts_external_token__code] = sym__code,
+};
+
+static const bool ts_external_scanner_states[2][EXTERNAL_TOKEN_COUNT] = {
+ [1] = {
+ [ts_external_token__code] = true,
+ },
+};
+
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[0] = {
[ts_builtin_sym_end] = ACTIONS(1),
@@ -685,10 +705,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[anon_sym_LBRACE_LBRACE_DASH] = ACTIONS(1),
[anon_sym_RBRACE_RBRACE] = ACTIONS(1),
[anon_sym_DASH_RBRACE_RBRACE] = ACTIONS(1),
+ [anon_sym_PIPE_GT] = ACTIONS(1),
[sym_keyword] = ACTIONS(1),
[aux_sym_code_snippet_token1] = ACTIONS(1),
[sym_close_keyword] = ACTIONS(1),
- [anon_sym_PIPE_GT] = ACTIONS(1),
[sym_comment] = ACTIONS(1),
[sym__code] = ACTIONS(1),
},
@@ -705,16 +725,16 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
},
[2] = {
[sym__expression] = STATE(5),
- [sym_code_snippet] = STATE(14),
[sym_filter] = STATE(18),
+ [sym_code_snippet] = STATE(14),
[aux_sym_filter_repeat1] = STATE(10),
[anon_sym_RBRACE_RBRACE] = ACTIONS(9),
[anon_sym_DASH_RBRACE_RBRACE] = ACTIONS(9),
- [sym_keyword] = ACTIONS(11),
- [aux_sym_code_snippet_token1] = ACTIONS(13),
- [sym_close_keyword] = ACTIONS(15),
- [anon_sym_PIPE_GT] = ACTIONS(17),
- [sym_comment] = ACTIONS(15),
+ [anon_sym_PIPE_GT] = ACTIONS(11),
+ [sym_keyword] = ACTIONS(13),
+ [aux_sym_code_snippet_token1] = ACTIONS(15),
+ [sym_close_keyword] = ACTIONS(17),
+ [sym_comment] = ACTIONS(17),
},
};
@@ -748,7 +768,7 @@ static const uint16_t ts_small_parse_table[] = {
sym_tag,
aux_sym_template_repeat1,
[38] = 4,
- ACTIONS(17), 1,
+ ACTIONS(11), 1,
anon_sym_PIPE_GT,
STATE(10), 1,
aux_sym_filter_repeat1,
@@ -792,7 +812,7 @@ static const uint16_t ts_small_parse_table[] = {
anon_sym_DASH_RBRACE_RBRACE,
anon_sym_PIPE_GT,
[98] = 3,
- ACTIONS(17), 1,
+ ACTIONS(11), 1,
anon_sym_PIPE_GT,
STATE(12), 1,
aux_sym_filter_repeat1,
@@ -890,10 +910,10 @@ static const TSParseActionEntry ts_parse_actions[] = {
[5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6),
[7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2),
[9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
- [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
- [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20),
- [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5),
- [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21),
+ [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
+ [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
+ [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21),
+ [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5),
[19] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_repeat1, 2),
[21] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_template_repeat1, 2), SHIFT_REPEAT(6),
[24] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_template_repeat1, 2), SHIFT_REPEAT(2),
@@ -908,37 +928,23 @@ static const TSParseActionEntry ts_parse_actions[] = {
[44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tag, 2),
[46] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tag, 2),
[48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 1, .production_id = 1),
- [50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
+ [50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
[52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_filter, 1),
[54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tag, 3),
[56] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tag, 3),
[58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_filter_repeat1, 2),
- [60] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_filter_repeat1, 2), SHIFT_REPEAT(21),
+ [60] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_filter_repeat1, 2), SHIFT_REPEAT(20),
[63] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tag, 4),
[65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tag, 4),
- [67] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 2, .production_id = 2),
- [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_code_snippet, 2),
- [71] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_filter_repeat1, 2, .production_id = 2),
+ [67] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_filter_repeat1, 2, .production_id = 2),
+ [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 2, .production_id = 2),
+ [71] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_code_snippet, 2),
[73] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
- [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
+ [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
[77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
[79] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
};
-enum ts_external_scanner_symbol_identifiers {
- ts_external_token__code = 0,
-};
-
-static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
- [ts_external_token__code] = sym__code,
-};
-
-static const bool ts_external_scanner_states[2][EXTERNAL_TOKEN_COUNT] = {
- [1] = {
- [ts_external_token__code] = true,
- },
-};
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h
index 17b4fde..2b14ac1 100644
--- a/src/tree_sitter/parser.h
+++ b/src/tree_sitter/parser.h
@@ -13,8 +13,9 @@ extern "C" {
#define ts_builtin_sym_end 0
#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
-#ifndef TREE_SITTER_API_H_
typedef uint16_t TSStateId;
+
+#ifndef TREE_SITTER_API_H_
typedef uint16_t TSSymbol;
typedef uint16_t TSFieldId;
typedef struct TSLanguage TSLanguage;
@@ -129,16 +130,9 @@ struct TSLanguage {
* Lexer Macros
*/
-#ifdef _MSC_VER
-#define UNUSED __pragma(warning(suppress : 4101))
-#else
-#define UNUSED __attribute__((unused))
-#endif
-
#define START_LEXER() \
bool result = false; \
bool skip = false; \
- UNUSED \
bool eof = false; \
int32_t lookahead; \
goto start; \
@@ -172,7 +166,7 @@ struct TSLanguage {
* Parse Table Macros
*/
-#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT)
+#define SMALL_STATE(id) id - LARGE_STATE_COUNT
#define STATE(id) id
@@ -182,7 +176,7 @@ struct TSLanguage {
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
- .state = (state_value) \
+ .state = state_value \
} \
}}
@@ -190,7 +184,7 @@ struct TSLanguage {
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
- .state = (state_value), \
+ .state = state_value, \
.repetition = true \
} \
}}