Skip to content

Commit

Permalink
update tests, rename grammar tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
wrapperup committed Mar 7, 2024
1 parent 1ba0962 commit a856bd2
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 25 deletions.
37 changes: 37 additions & 0 deletions corpus/main.txt
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,40 @@ Expressions 2
(tag
(code))
(content))

====================
Stress Keywords
====================

{{ if test }}
{{ code }}
{{ keyword code }}
{{ keyword() code }}

{{ Deno }}
{{ Deno thing }}

---

(template
(content)
(tag
(keyword)
(code))
(content)
(tag
(code))
(content)
(tag
(keyword)
(code))
(content)
(tag
(code))
(content)
(tag
(code))
(content)
(tag
(code))
(content))
4 changes: 2 additions & 2 deletions grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module.exports = grammar({

_expression: $ => choice(
// "Solo keywords" are just code blocks
alias($.keyword2, $.code),
alias($.code_snippet, $.code),
alias($.keyword, $.code),
alias($.close_keyword, $.keyword),
seq(
Expand All @@ -35,7 +35,7 @@ module.exports = grammar({
// It just tries to match the first word in a tag block,
// plus any other special characters that might be present
keyword: $ => /[a-z>][a-zA-Z]*? |if|for|include|set|import|export|layout|function/,
keyword2: $ => seq(/[a-zA-Z>\.\(\)\!_\?]/, $._code),
code_snippet: $ => seq(/[a-zA-Z>\.\(\)\!_\?]/, $._code),
close_keyword: $ => /\/([a-zA-Z]+|if|for|include|set|import|export|layout|function)/,

filter: $ => repeat1(seq(
Expand Down
4 changes: 2 additions & 2 deletions src/grammar.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "keyword2"
"name": "code_snippet"
},
"named": true,
"value": "code"
Expand Down Expand Up @@ -138,7 +138,7 @@
"type": "PATTERN",
"value": "[a-z>][a-zA-Z]*? |if|for|include|set|import|export|layout|function"
},
"keyword2": {
"code_snippet": {
"type": "SEQ",
"members": [
{
Expand Down
42 changes: 21 additions & 21 deletions src/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ enum {
anon_sym_RBRACE_RBRACE = 4,
anon_sym_DASH_RBRACE_RBRACE = 5,
sym_keyword = 6,
aux_sym_keyword2_token1 = 7,
aux_sym_code_snippet_token1 = 7,
sym_close_keyword = 8,
anon_sym_PIPE_GT = 9,
sym_comment = 10,
Expand All @@ -32,7 +32,7 @@ enum {
sym_content = 13,
sym_tag = 14,
sym__expression = 15,
sym_keyword2 = 16,
sym_code_snippet = 16,
sym_filter = 17,
aux_sym_template_repeat1 = 18,
aux_sym_filter_repeat1 = 19,
Expand All @@ -46,7 +46,7 @@ static const char * const ts_symbol_names[] = {
[anon_sym_RBRACE_RBRACE] = "}}",
[anon_sym_DASH_RBRACE_RBRACE] = "-}}",
[sym_keyword] = "keyword",
[aux_sym_keyword2_token1] = "keyword2_token1",
[aux_sym_code_snippet_token1] = "code_snippet_token1",
[sym_close_keyword] = "keyword",
[anon_sym_PIPE_GT] = "|>",
[sym_comment] = "comment",
Expand All @@ -55,7 +55,7 @@ static const char * const ts_symbol_names[] = {
[sym_content] = "content",
[sym_tag] = "tag",
[sym__expression] = "_expression",
[sym_keyword2] = "code",
[sym_code_snippet] = "code",
[sym_filter] = "filter",
[aux_sym_template_repeat1] = "template_repeat1",
[aux_sym_filter_repeat1] = "filter_repeat1",
Expand All @@ -69,7 +69,7 @@ static const TSSymbol ts_symbol_map[] = {
[anon_sym_RBRACE_RBRACE] = anon_sym_RBRACE_RBRACE,
[anon_sym_DASH_RBRACE_RBRACE] = anon_sym_DASH_RBRACE_RBRACE,
[sym_keyword] = sym_keyword,
[aux_sym_keyword2_token1] = aux_sym_keyword2_token1,
[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,
Expand All @@ -78,7 +78,7 @@ static const TSSymbol ts_symbol_map[] = {
[sym_content] = sym_content,
[sym_tag] = sym_tag,
[sym__expression] = sym__expression,
[sym_keyword2] = sym_keyword2,
[sym_code_snippet] = sym_code_snippet,
[sym_filter] = sym_filter,
[aux_sym_template_repeat1] = aux_sym_template_repeat1,
[aux_sym_filter_repeat1] = aux_sym_filter_repeat1,
Expand Down Expand Up @@ -113,7 +113,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true,
.named = true,
},
[aux_sym_keyword2_token1] = {
[aux_sym_code_snippet_token1] = {
.visible = false,
.named = false,
},
Expand Down Expand Up @@ -149,7 +149,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = false,
.named = true,
},
[sym_keyword2] = {
[sym_code_snippet] = {
.visible = true,
.named = true,
},
Expand All @@ -170,10 +170,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = {
[0] = {0},
[1] = {
[0] = sym_keyword2,
[0] = sym_code_snippet,
},
[2] = {
[1] = sym_keyword2,
[1] = sym_code_snippet,
},
};

Expand Down Expand Up @@ -443,24 +443,24 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 39:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
END_STATE();
case 40:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
if (lookahead == ' ') ADVANCE(37);
if (lookahead == 'a') ADVANCE(19);
if (('A' <= lookahead && lookahead <= 'Z') ||
('b' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 41:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
if (lookahead == ' ') ADVANCE(37);
if (lookahead == 'e') ADVANCE(15);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 42:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
if (lookahead == ' ') ADVANCE(37);
if (lookahead == 'f') ADVANCE(38);
if (lookahead == 'm') ADVANCE(12);
Expand All @@ -469,22 +469,22 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 43:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
if (lookahead == ' ') ADVANCE(37);
if (lookahead == 'o') ADVANCE(13);
if (lookahead == 'u') ADVANCE(8);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 44:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
if (lookahead == ' ') ADVANCE(37);
if (lookahead == 'x') ADVANCE(12);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
END_STATE();
case 45:
ACCEPT_TOKEN(aux_sym_keyword2_token1);
ACCEPT_TOKEN(aux_sym_code_snippet_token1);
if (lookahead == ' ') ADVANCE(37);
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(20);
Expand Down Expand Up @@ -699,7 +699,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[anon_sym_RBRACE_RBRACE] = ACTIONS(1),
[anon_sym_DASH_RBRACE_RBRACE] = ACTIONS(1),
[sym_keyword] = ACTIONS(1),
[aux_sym_keyword2_token1] = ACTIONS(1),
[aux_sym_code_snippet_token1] = ACTIONS(1),
[sym_close_keyword] = ACTIONS(1),
[anon_sym_PIPE_GT] = ACTIONS(1),
[sym_comment] = ACTIONS(1),
Expand All @@ -717,13 +717,13 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
},
[2] = {
[sym__expression] = STATE(5),
[sym_keyword2] = STATE(13),
[sym_code_snippet] = STATE(13),
[sym_filter] = STATE(17),
[aux_sym_filter_repeat1] = STATE(9),
[anon_sym_RBRACE_RBRACE] = ACTIONS(9),
[anon_sym_DASH_RBRACE_RBRACE] = ACTIONS(9),
[sym_keyword] = ACTIONS(11),
[aux_sym_keyword2_token1] = ACTIONS(13),
[aux_sym_code_snippet_token1] = ACTIONS(13),
[sym_close_keyword] = ACTIONS(15),
[anon_sym_PIPE_GT] = ACTIONS(17),
[sym_comment] = ACTIONS(15),
Expand Down Expand Up @@ -907,7 +907,7 @@ static const TSParseActionEntry ts_parse_actions[] = {
[54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tag, 4),
[56] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tag, 4),
[58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 2, .production_id = 2),
[60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword2, 2),
[60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_code_snippet, 2),
[62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_filter_repeat1, 2, .production_id = 2),
[64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
[66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
Expand Down

0 comments on commit a856bd2

Please sign in to comment.