Skip to content

Commit 1de3ea0

Browse files
committed
fix(word): add immediate word
1 parent 6ccd157 commit 1de3ea0

File tree

4 files changed

+138
-92
lines changed

4 files changed

+138
-92
lines changed

grammar.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module.exports = grammar({
55

66
externals: ($) => [
77
$.word,
8+
$._imm_word,
89
$.column_name,
910
$.uppercase_name,
1011
$.code_block
@@ -53,5 +54,5 @@ module.exports = grammar({
5354
});
5455

5556
function wrapped_word($, char, fname) {
56-
return seq(char, field(fname, $.word), token.immediate(char));
57+
return seq(char, field(fname, alias($._imm_word, $.word)), token.immediate(char));
5758
}

src/grammar.json

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,13 @@
226226
"type": "FIELD",
227227
"name": "name",
228228
"content": {
229-
"type": "SYMBOL",
230-
"name": "word"
229+
"type": "ALIAS",
230+
"content": {
231+
"type": "SYMBOL",
232+
"name": "_imm_word"
233+
},
234+
"named": true,
235+
"value": "word"
231236
}
232237
},
233238
{
@@ -250,8 +255,13 @@
250255
"type": "FIELD",
251256
"name": "destination",
252257
"content": {
253-
"type": "SYMBOL",
254-
"name": "word"
258+
"type": "ALIAS",
259+
"content": {
260+
"type": "SYMBOL",
261+
"name": "_imm_word"
262+
},
263+
"named": true,
264+
"value": "word"
255265
}
256266
},
257267
{
@@ -274,8 +284,13 @@
274284
"type": "FIELD",
275285
"name": "content",
276286
"content": {
277-
"type": "SYMBOL",
278-
"name": "word"
287+
"type": "ALIAS",
288+
"content": {
289+
"type": "SYMBOL",
290+
"name": "_imm_word"
291+
},
292+
"named": true,
293+
"value": "word"
279294
}
280295
},
281296
{
@@ -325,6 +340,10 @@
325340
"type": "SYMBOL",
326341
"name": "word"
327342
},
343+
{
344+
"type": "SYMBOL",
345+
"name": "_imm_word"
346+
},
328347
{
329348
"type": "SYMBOL",
330349
"name": "column_name"

src/parser.c

Lines changed: 78 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
#define LANGUAGE_VERSION 13
99
#define STATE_COUNT 51
1010
#define LARGE_STATE_COUNT 6
11-
#define SYMBOL_COUNT 31
11+
#define SYMBOL_COUNT 32
1212
#define ALIAS_COUNT 0
13-
#define TOKEN_COUNT 18
14-
#define EXTERNAL_TOKEN_COUNT 4
13+
#define TOKEN_COUNT 19
14+
#define EXTERNAL_TOKEN_COUNT 5
1515
#define FIELD_COUNT 4
1616
#define MAX_ALIAS_SEQUENCE_LENGTH 5
1717
#define PRODUCTION_ID_COUNT 6
@@ -31,22 +31,23 @@ enum {
3131
anon_sym_LBRACE = 12,
3232
anon_sym_RBRACE = 13,
3333
sym_word = 14,
34-
sym_column_name = 15,
35-
sym_uppercase_name = 16,
36-
sym_code_block = 17,
37-
sym_help_file = 18,
38-
sym_headline = 19,
39-
sym_line = 20,
40-
sym__atom = 21,
41-
sym_column_heading = 22,
42-
sym_tag = 23,
43-
sym_option = 24,
44-
sym_hotlink = 25,
45-
sym_backtick = 26,
46-
sym_argument = 27,
47-
aux_sym_help_file_repeat1 = 28,
48-
aux_sym_headline_repeat1 = 29,
49-
aux_sym_line_repeat1 = 30,
34+
sym__imm_word = 15,
35+
sym_column_name = 16,
36+
sym_uppercase_name = 17,
37+
sym_code_block = 18,
38+
sym_help_file = 19,
39+
sym_headline = 20,
40+
sym_line = 21,
41+
sym__atom = 22,
42+
sym_column_heading = 23,
43+
sym_tag = 24,
44+
sym_option = 25,
45+
sym_hotlink = 26,
46+
sym_backtick = 27,
47+
sym_argument = 28,
48+
aux_sym_help_file_repeat1 = 29,
49+
aux_sym_headline_repeat1 = 30,
50+
aux_sym_line_repeat1 = 31,
5051
};
5152

5253
static const char * const ts_symbol_names[] = {
@@ -65,6 +66,7 @@ static const char * const ts_symbol_names[] = {
6566
[anon_sym_LBRACE] = "{",
6667
[anon_sym_RBRACE] = "}",
6768
[sym_word] = "word",
69+
[sym__imm_word] = "word",
6870
[sym_column_name] = "column_name",
6971
[sym_uppercase_name] = "uppercase_name",
7072
[sym_code_block] = "code_block",
@@ -99,6 +101,7 @@ static const TSSymbol ts_symbol_map[] = {
99101
[anon_sym_LBRACE] = anon_sym_LBRACE,
100102
[anon_sym_RBRACE] = anon_sym_RBRACE,
101103
[sym_word] = sym_word,
104+
[sym__imm_word] = sym_word,
102105
[sym_column_name] = sym_column_name,
103106
[sym_uppercase_name] = sym_uppercase_name,
104107
[sym_code_block] = sym_code_block,
@@ -178,6 +181,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
178181
.visible = true,
179182
.named = true,
180183
},
184+
[sym__imm_word] = {
185+
.visible = true,
186+
.named = true,
187+
},
181188
[sym_column_name] = {
182189
.visible = true,
183190
.named = true,
@@ -484,42 +491,42 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
484491

485492
static const TSLexMode ts_lex_modes[STATE_COUNT] = {
486493
[0] = {.lex_state = 0, .external_lex_state = 1},
487-
[1] = {.lex_state = 13, .external_lex_state = 1},
488-
[2] = {.lex_state = 13, .external_lex_state = 1},
489-
[3] = {.lex_state = 13, .external_lex_state = 1},
490-
[4] = {.lex_state = 13, .external_lex_state = 1},
491-
[5] = {.lex_state = 13, .external_lex_state = 1},
492-
[6] = {.lex_state = 13, .external_lex_state = 1},
493-
[7] = {.lex_state = 13, .external_lex_state = 1},
494-
[8] = {.lex_state = 13, .external_lex_state = 1},
495-
[9] = {.lex_state = 13, .external_lex_state = 1},
496-
[10] = {.lex_state = 13, .external_lex_state = 1},
497-
[11] = {.lex_state = 13, .external_lex_state = 1},
498-
[12] = {.lex_state = 13, .external_lex_state = 1},
499-
[13] = {.lex_state = 13, .external_lex_state = 1},
500-
[14] = {.lex_state = 13, .external_lex_state = 1},
501-
[15] = {.lex_state = 13, .external_lex_state = 1},
502-
[16] = {.lex_state = 13, .external_lex_state = 1},
503-
[17] = {.lex_state = 13, .external_lex_state = 2},
504-
[18] = {.lex_state = 13, .external_lex_state = 2},
505-
[19] = {.lex_state = 13, .external_lex_state = 2},
494+
[1] = {.lex_state = 13, .external_lex_state = 2},
495+
[2] = {.lex_state = 13, .external_lex_state = 2},
496+
[3] = {.lex_state = 13, .external_lex_state = 2},
497+
[4] = {.lex_state = 13, .external_lex_state = 2},
498+
[5] = {.lex_state = 13, .external_lex_state = 2},
499+
[6] = {.lex_state = 13, .external_lex_state = 2},
500+
[7] = {.lex_state = 13, .external_lex_state = 2},
501+
[8] = {.lex_state = 13, .external_lex_state = 2},
502+
[9] = {.lex_state = 13, .external_lex_state = 2},
503+
[10] = {.lex_state = 13, .external_lex_state = 2},
504+
[11] = {.lex_state = 13, .external_lex_state = 2},
505+
[12] = {.lex_state = 13, .external_lex_state = 2},
506+
[13] = {.lex_state = 13, .external_lex_state = 2},
507+
[14] = {.lex_state = 13, .external_lex_state = 2},
508+
[15] = {.lex_state = 13, .external_lex_state = 2},
509+
[16] = {.lex_state = 13, .external_lex_state = 2},
510+
[17] = {.lex_state = 13, .external_lex_state = 3},
511+
[18] = {.lex_state = 13, .external_lex_state = 3},
512+
[19] = {.lex_state = 13, .external_lex_state = 3},
506513
[20] = {.lex_state = 13},
507-
[21] = {.lex_state = 13, .external_lex_state = 2},
514+
[21] = {.lex_state = 13, .external_lex_state = 3},
508515
[22] = {.lex_state = 1},
509-
[23] = {.lex_state = 0, .external_lex_state = 2},
516+
[23] = {.lex_state = 0, .external_lex_state = 3},
510517
[24] = {.lex_state = 1},
511518
[25] = {.lex_state = 1},
512519
[26] = {.lex_state = 0},
513-
[27] = {.lex_state = 0, .external_lex_state = 2},
520+
[27] = {.lex_state = 0, .external_lex_state = 4},
514521
[28] = {.lex_state = 0},
515522
[29] = {.lex_state = 1},
516523
[30] = {.lex_state = 1},
517524
[31] = {.lex_state = 1},
518525
[32] = {.lex_state = 0},
519526
[33] = {.lex_state = 0},
520527
[34] = {.lex_state = 0},
521-
[35] = {.lex_state = 0, .external_lex_state = 2},
522-
[36] = {.lex_state = 0, .external_lex_state = 2},
528+
[35] = {.lex_state = 0, .external_lex_state = 3},
529+
[36] = {.lex_state = 0, .external_lex_state = 4},
523530
[37] = {.lex_state = 0},
524531
[38] = {.lex_state = 1},
525532
[39] = {.lex_state = 1},
@@ -529,36 +536,48 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
529536
[43] = {.lex_state = 1},
530537
[44] = {.lex_state = 1},
531538
[45] = {.lex_state = 0},
532-
[46] = {.lex_state = 0, .external_lex_state = 2},
533-
[47] = {.lex_state = 0, .external_lex_state = 2},
534-
[48] = {.lex_state = 0, .external_lex_state = 2},
535-
[49] = {.lex_state = 0, .external_lex_state = 2},
536-
[50] = {.lex_state = 0, .external_lex_state = 2},
539+
[46] = {.lex_state = 0, .external_lex_state = 4},
540+
[47] = {.lex_state = 0, .external_lex_state = 4},
541+
[48] = {.lex_state = 0, .external_lex_state = 4},
542+
[49] = {.lex_state = 0, .external_lex_state = 4},
543+
[50] = {.lex_state = 0, .external_lex_state = 3},
537544
};
538545

539546
enum {
540547
ts_external_token_word = 0,
541-
ts_external_token_column_name = 1,
542-
ts_external_token_uppercase_name = 2,
543-
ts_external_token_code_block = 3,
548+
ts_external_token__imm_word = 1,
549+
ts_external_token_column_name = 2,
550+
ts_external_token_uppercase_name = 3,
551+
ts_external_token_code_block = 4,
544552
};
545553

546554
static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
547555
[ts_external_token_word] = sym_word,
556+
[ts_external_token__imm_word] = sym__imm_word,
548557
[ts_external_token_column_name] = sym_column_name,
549558
[ts_external_token_uppercase_name] = sym_uppercase_name,
550559
[ts_external_token_code_block] = sym_code_block,
551560
};
552561

553-
static const bool ts_external_scanner_states[3][EXTERNAL_TOKEN_COUNT] = {
562+
static const bool ts_external_scanner_states[5][EXTERNAL_TOKEN_COUNT] = {
554563
[1] = {
555564
[ts_external_token_word] = true,
565+
[ts_external_token__imm_word] = true,
556566
[ts_external_token_column_name] = true,
557567
[ts_external_token_uppercase_name] = true,
558568
[ts_external_token_code_block] = true,
559569
},
560570
[2] = {
561571
[ts_external_token_word] = true,
572+
[ts_external_token_column_name] = true,
573+
[ts_external_token_uppercase_name] = true,
574+
[ts_external_token_code_block] = true,
575+
},
576+
[3] = {
577+
[ts_external_token_word] = true,
578+
},
579+
[4] = {
580+
[ts_external_token__imm_word] = true,
562581
},
563582
};
564583

@@ -579,6 +598,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
579598
[anon_sym_LBRACE] = ACTIONS(1),
580599
[anon_sym_RBRACE] = ACTIONS(1),
581600
[sym_word] = ACTIONS(1),
601+
[sym__imm_word] = ACTIONS(1),
582602
[sym_column_name] = ACTIONS(1),
583603
[sym_uppercase_name] = ACTIONS(1),
584604
[sym_code_block] = ACTIONS(1),
@@ -957,7 +977,7 @@ static const uint16_t ts_small_parse_table[] = {
957977
anon_sym_LF,
958978
[289] = 1,
959979
ACTIONS(138), 1,
960-
sym_word,
980+
sym__imm_word,
961981
[293] = 1,
962982
ACTIONS(140), 1,
963983
anon_sym_RBRACE,
@@ -984,7 +1004,7 @@ static const uint16_t ts_small_parse_table[] = {
9841004
sym_word,
9851005
[325] = 1,
9861006
ACTIONS(156), 1,
987-
sym_word,
1007+
sym__imm_word,
9881008
[329] = 1,
9891009
ACTIONS(125), 1,
9901010
anon_sym_LF,
@@ -1014,16 +1034,16 @@ static const uint16_t ts_small_parse_table[] = {
10141034
anon_sym_RBRACE,
10151035
[365] = 1,
10161036
ACTIONS(168), 1,
1017-
sym_word,
1037+
sym__imm_word,
10181038
[369] = 1,
10191039
ACTIONS(170), 1,
1020-
sym_word,
1040+
sym__imm_word,
10211041
[373] = 1,
10221042
ACTIONS(172), 1,
1023-
sym_word,
1043+
sym__imm_word,
10241044
[377] = 1,
10251045
ACTIONS(174), 1,
1026-
sym_word,
1046+
sym__imm_word,
10271047
[381] = 1,
10281048
ACTIONS(176), 1,
10291049
sym_word,

0 commit comments

Comments
 (0)