From d96a5a155f6bd70b86a8b761a1806ce4ec926a99 Mon Sep 17 00:00:00 2001 From: ObserverOfTime Date: Sun, 10 Aug 2025 11:01:04 +0300 Subject: [PATCH] feat(grammar): support cst attribute --- examples/cst.test | 9 + grammar.js | 3 +- queries/test/highlights.scm | 3 +- queries/test/injections.scm | 21 + src/grammar.json | 12 +- src/node-types.json | 14 + src/parser.c | 914 +++++++++++++++++++----------------- 7 files changed, 540 insertions(+), 436 deletions(-) create mode 100644 examples/cst.test diff --git a/examples/cst.test b/examples/cst.test new file mode 100644 index 0000000..e506b3c --- /dev/null +++ b/examples/cst.test @@ -0,0 +1,9 @@ +==================== +Test with cst marker +:cst +==================== +1 +--- +0:0 - 1:0 source_file +0:0 - 0:1 expression +0:0 - 0:1 number_literal `1` diff --git a/grammar.js b/grammar.js index 2bed93c..6796cb1 100644 --- a/grammar.js +++ b/grammar.js @@ -41,11 +41,12 @@ module.exports = grammar({ ), attribute: $ => choice( - ":skip", + field("cst", ":cst"), ":error", ":fail-fast", $._language, $._platform, + ":skip", ), _language: $ => seq( diff --git a/queries/test/highlights.scm b/queries/test/highlights.scm index efcadcf..a875da2 100644 --- a/queries/test/highlights.scm +++ b/queries/test/highlights.scm @@ -1,11 +1,12 @@ (name) @markup.heading [ - ":skip" + ":cst" ":error" ":fail-fast" ":language" ":platform" + ":skip" ] @attribute (attribute diff --git a/queries/test/injections.scm b/queries/test/injections.scm index 78cb296..4fd38cc 100644 --- a/queries/test/injections.scm +++ b/queries/test/injections.scm @@ -11,9 +11,30 @@ (input) @injection.content) ((test + [ + (header + (separator) + . + (name) + . + (separator)) + (header + (attributes + . + (attribute + !cst)+ .)) + ] (output) @injection.content) (#set! injection.language "query")) +((test + (header + (attributes + (attribute + cst: _))) + (output) @injection.content) + (#set! injection.language "cst")) + ; NOTE: custom dynamic injection ((test (header diff --git a/src/grammar.json b/src/grammar.json index 175e883..7166c59 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -154,8 +154,12 @@ "type": "CHOICE", "members": [ { - "type": "STRING", - "value": ":skip" + "type": "FIELD", + "name": "cst", + "content": { + "type": "STRING", + "value": ":cst" + } }, { "type": "STRING", @@ -172,6 +176,10 @@ { "type": "SYMBOL", "name": "_platform" + }, + { + "type": "STRING", + "value": ":skip" } ] }, diff --git a/src/node-types.json b/src/node-types.json index cdad097..0549888 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -3,6 +3,16 @@ "type": "attribute", "named": true, "fields": { + "cst": { + "multiple": false, + "required": false, + "types": [ + { + "type": ":cst", + "named": false + } + ] + }, "language": { "multiple": false, "required": false, @@ -124,6 +134,10 @@ "type": ")", "named": false }, + { + "type": ":cst", + "named": false + }, { "type": ":error", "named": false diff --git a/src/parser.c b/src/parser.c index be75d18..50bc4a7 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,4 +1,4 @@ -/* Automatically @generated by tree-sitter v0.25.6 */ +/* Automatically @generated by tree-sitter v0.25.8 */ #include "tree_sitter/parser.h" @@ -7,54 +7,56 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 32 +#define STATE_COUNT 33 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 25 +#define SYMBOL_COUNT 26 #define ALIAS_COUNT 3 -#define TOKEN_COUNT 15 +#define TOKEN_COUNT 16 #define EXTERNAL_TOKEN_COUNT 3 -#define FIELD_COUNT 2 +#define FIELD_COUNT 3 #define MAX_ALIAS_SEQUENCE_LENGTH 5 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 8 +#define PRODUCTION_ID_COUNT 9 #define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { sym__line = 1, - anon_sym_COLONskip = 2, + anon_sym_COLONcst = 2, anon_sym_COLONerror = 3, anon_sym_COLONfail_DASHfast = 4, - anon_sym_COLONlanguage = 5, - anon_sym_LPAREN = 6, - anon_sym_RPAREN = 7, - anon_sym_COLONplatform = 8, - sym__lang = 9, - sym__os = 10, - sym__eol = 11, - sym__equals_begin = 12, - sym__equals_end = 13, - sym__dashes = 14, - sym_file = 15, - sym_test = 16, - aux_sym__body = 17, - sym_header = 18, - sym_attributes = 19, - sym_attribute = 20, - sym__language = 21, - sym__platform = 22, - aux_sym_file_repeat1 = 23, - aux_sym_attributes_repeat1 = 24, - alias_sym_input = 25, - alias_sym_name = 26, - alias_sym_output = 27, + anon_sym_COLONskip = 5, + anon_sym_COLONlanguage = 6, + anon_sym_LPAREN = 7, + anon_sym_RPAREN = 8, + anon_sym_COLONplatform = 9, + sym__lang = 10, + sym__os = 11, + sym__eol = 12, + sym__equals_begin = 13, + sym__equals_end = 14, + sym__dashes = 15, + sym_file = 16, + sym_test = 17, + aux_sym__body = 18, + sym_header = 19, + sym_attributes = 20, + sym_attribute = 21, + sym__language = 22, + sym__platform = 23, + aux_sym_file_repeat1 = 24, + aux_sym_attributes_repeat1 = 25, + alias_sym_input = 26, + alias_sym_name = 27, + alias_sym_output = 28, }; static const char * const ts_symbol_names[] = { [ts_builtin_sym_end] = "end", [sym__line] = "_line", - [anon_sym_COLONskip] = ":skip", + [anon_sym_COLONcst] = ":cst", [anon_sym_COLONerror] = ":error", [anon_sym_COLONfail_DASHfast] = ":fail-fast", + [anon_sym_COLONskip] = ":skip", [anon_sym_COLONlanguage] = ":language", [anon_sym_LPAREN] = "(", [anon_sym_RPAREN] = ")", @@ -83,9 +85,10 @@ static const char * const ts_symbol_names[] = { static const TSSymbol ts_symbol_map[] = { [ts_builtin_sym_end] = ts_builtin_sym_end, [sym__line] = sym__line, - [anon_sym_COLONskip] = anon_sym_COLONskip, + [anon_sym_COLONcst] = anon_sym_COLONcst, [anon_sym_COLONerror] = anon_sym_COLONerror, [anon_sym_COLONfail_DASHfast] = anon_sym_COLONfail_DASHfast, + [anon_sym_COLONskip] = anon_sym_COLONskip, [anon_sym_COLONlanguage] = anon_sym_COLONlanguage, [anon_sym_LPAREN] = anon_sym_LPAREN, [anon_sym_RPAREN] = anon_sym_RPAREN, @@ -120,7 +123,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = true, }, - [anon_sym_COLONskip] = { + [anon_sym_COLONcst] = { .visible = true, .named = false, }, @@ -132,6 +135,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_COLONskip] = { + .visible = true, + .named = false, + }, [anon_sym_COLONlanguage] = { .visible = true, .named = false, @@ -227,12 +234,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { }; enum ts_field_identifiers { - field_language = 1, - field_platform = 2, + field_cst = 1, + field_language = 2, + field_platform = 3, }; static const char * const ts_field_names[] = { [0] = NULL, + [field_cst] = "cst", [field_language] = "language", [field_platform] = "platform", }; @@ -240,18 +249,21 @@ static const char * const ts_field_names[] = { static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [3] = {.index = 0, .length = 1}, [4] = {.index = 1, .length = 1}, - [6] = {.index = 2, .length = 1}, + [5] = {.index = 2, .length = 1}, [7] = {.index = 3, .length = 1}, + [8] = {.index = 4, .length = 1}, }; static const TSFieldMapEntry ts_field_map_entries[] = { [0] = - {field_language, 0, .inherited = true}, + {field_cst, 0}, [1] = - {field_platform, 0, .inherited = true}, + {field_language, 0, .inherited = true}, [2] = - {field_language, 2}, + {field_platform, 0, .inherited = true}, [3] = + {field_language, 2}, + [4] = {field_platform, 2}, }; @@ -263,7 +275,7 @@ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE [2] = { [1] = alias_sym_name, }, - [5] = { + [6] = { [1] = alias_sym_input, [3] = alias_sym_output, }, @@ -294,11 +306,11 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [13] = 13, [14] = 14, [15] = 15, - [16] = 14, - [17] = 17, - [18] = 17, + [16] = 16, + [17] = 15, + [18] = 18, [19] = 19, - [20] = 20, + [20] = 18, [21] = 21, [22] = 22, [23] = 23, @@ -310,6 +322,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [29] = 29, [30] = 30, [31] = 31, + [32] = 32, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -317,102 +330,103 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(76); + if (eof) ADVANCE(78); ADVANCE_MAP( - '\n', 129, - '\r', 130, - '(', 82, - ')', 83, - ':', 16, - 'a', 105, - 'd', 116, - 'f', 117, - 'i', 110, - 'l', 100, - 'm', 85, - 'n', 93, - 'o', 115, - 's', 111, - 'w', 102, + '\n', 132, + '\r', 133, + '(', 85, + ')', 86, + ':', 12, + 'a', 108, + 'd', 119, + 'f', 120, + 'i', 113, + 'l', 103, + 'm', 88, + 'n', 96, + 'o', 118, + 's', 114, + 'w', 105, ); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 1: if (lookahead == '-') ADVANCE(23); END_STATE(); case 2: - if (lookahead == 'a') ADVANCE(29); + if (lookahead == 'a') ADVANCE(30); END_STATE(); case 3: if (lookahead == 'a') ADVANCE(40); END_STATE(); case 4: - if (lookahead == 'a') ADVANCE(66); + if (lookahead == 'a') ADVANCE(13); END_STATE(); case 5: - if (lookahead == 'a') ADVANCE(64); + if (lookahead == 'a') ADVANCE(68); END_STATE(); case 6: - if (lookahead == 'a') ADVANCE(12); - END_STATE(); - case 7: ADVANCE_MAP( 'a', 41, 'd', 62, 'f', 59, 'i', 47, 'l', 31, - 'm', 6, + 'm', 4, 'n', 19, 'o', 54, 's', 52, 'w', 33, ); END_STATE(); - case 8: + case 7: if (lookahead == 'a') ADVANCE(26); END_STATE(); - case 9: + case 8: if (lookahead == 'a') ADVANCE(27); END_STATE(); - case 10: + case 9: if (lookahead == 'a') ADVANCE(61); END_STATE(); + case 10: + if (lookahead == 'a') ADVANCE(65); + END_STATE(); case 11: - if (lookahead == 'b') ADVANCE(65); + if (lookahead == 'b') ADVANCE(66); END_STATE(); case 12: - if (lookahead == 'c') ADVANCE(47); + if (lookahead == 'c') ADVANCE(63); + if (lookahead == 'e') ADVANCE(58); + if (lookahead == 'f') ADVANCE(2); + if (lookahead == 'l') ADVANCE(3); + if (lookahead == 'p') ADVANCE(37); + if (lookahead == 's') ADVANCE(34); END_STATE(); case 13: - if (lookahead == 'd') ADVANCE(128); + if (lookahead == 'c') ADVANCE(47); END_STATE(); case 14: - if (lookahead == 'd') ADVANCE(46); + if (lookahead == 'd') ADVANCE(131); END_STATE(); case 15: - if (lookahead == 'd') ADVANCE(60); + if (lookahead == 'd') ADVANCE(46); END_STATE(); case 16: - if (lookahead == 'e') ADVANCE(58); - if (lookahead == 'f') ADVANCE(2); - if (lookahead == 'l') ADVANCE(3); - if (lookahead == 'p') ADVANCE(37); - if (lookahead == 's') ADVANCE(34); + if (lookahead == 'd') ADVANCE(60); END_STATE(); case 17: - if (lookahead == 'e') ADVANCE(81); + if (lookahead == 'e') ADVANCE(84); END_STATE(); case 18: if (lookahead == 'e') ADVANCE(11); END_STATE(); case 19: - if (lookahead == 'e') ADVANCE(68); + if (lookahead == 'e') ADVANCE(70); END_STATE(); case 20: if (lookahead == 'e') ADVANCE(42); @@ -424,13 +438,13 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'f') ADVANCE(36); END_STATE(); case 23: - if (lookahead == 'f') ADVANCE(5); + if (lookahead == 'f') ADVANCE(10); END_STATE(); case 24: if (lookahead == 'f') ADVANCE(49); END_STATE(); case 25: - if (lookahead == 'g') ADVANCE(70); + if (lookahead == 'g') ADVANCE(72); END_STATE(); case 26: if (lookahead == 'g') ADVANCE(17); @@ -442,16 +456,16 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'i') ADVANCE(53); END_STATE(); case 29: - if (lookahead == 'i') ADVANCE(35); + if (lookahead == 'i') ADVANCE(64); END_STATE(); case 30: - if (lookahead == 'i') ADVANCE(63); + if (lookahead == 'i') ADVANCE(35); END_STATE(); case 31: if (lookahead == 'i') ADVANCE(43); END_STATE(); case 32: - if (lookahead == 'i') ADVANCE(13); + if (lookahead == 'i') ADVANCE(14); END_STATE(); case 33: if (lookahead == 'i') ADVANCE(44); @@ -463,40 +477,40 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'l') ADVANCE(1); END_STATE(); case 36: - if (lookahead == 'l') ADVANCE(73); + if (lookahead == 'l') ADVANCE(75); END_STATE(); case 37: - if (lookahead == 'l') ADVANCE(4); + if (lookahead == 'l') ADVANCE(5); END_STATE(); case 38: - if (lookahead == 'l') ADVANCE(10); + if (lookahead == 'l') ADVANCE(9); END_STATE(); case 39: - if (lookahead == 'm') ADVANCE(84); + if (lookahead == 'm') ADVANCE(87); END_STATE(); case 40: if (lookahead == 'n') ADVANCE(25); END_STATE(); case 41: - if (lookahead == 'n') ADVANCE(15); + if (lookahead == 'n') ADVANCE(16); END_STATE(); case 42: if (lookahead == 'n') ADVANCE(11); END_STATE(); case 43: - if (lookahead == 'n') ADVANCE(69); + if (lookahead == 'n') ADVANCE(71); END_STATE(); case 44: - if (lookahead == 'n') ADVANCE(14); + if (lookahead == 'n') ADVANCE(15); END_STATE(); case 45: if (lookahead == 'n') ADVANCE(22); END_STATE(); case 46: - if (lookahead == 'o') ADVANCE(71); + if (lookahead == 'o') ADVANCE(73); END_STATE(); case 47: - if (lookahead == 'o') ADVANCE(63); + if (lookahead == 'o') ADVANCE(64); END_STATE(); case 48: if (lookahead == 'o') ADVANCE(56); @@ -514,7 +528,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'o') ADVANCE(38); END_STATE(); case 53: - if (lookahead == 'p') ADVANCE(78); + if (lookahead == 'p') ADVANCE(83); END_STATE(); case 54: if (lookahead == 'p') ADVANCE(20); @@ -523,7 +537,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'r') ADVANCE(48); END_STATE(); case 56: - if (lookahead == 'r') ADVANCE(79); + if (lookahead == 'r') ADVANCE(81); END_STATE(); case 57: if (lookahead == 'r') ADVANCE(39); @@ -538,526 +552,535 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'r') ADVANCE(50); END_STATE(); case 61: - if (lookahead == 'r') ADVANCE(30); + if (lookahead == 'r') ADVANCE(29); END_STATE(); case 62: - if (lookahead == 'r') ADVANCE(9); + if (lookahead == 'r') ADVANCE(8); END_STATE(); case 63: - if (lookahead == 's') ADVANCE(128); + if (lookahead == 's') ADVANCE(67); END_STATE(); case 64: - if (lookahead == 's') ADVANCE(67); + if (lookahead == 's') ADVANCE(131); END_STATE(); case 65: - if (lookahead == 's') ADVANCE(13); + if (lookahead == 's') ADVANCE(69); END_STATE(); case 66: - if (lookahead == 't') ADVANCE(24); + if (lookahead == 's') ADVANCE(14); END_STATE(); case 67: if (lookahead == 't') ADVANCE(80); END_STATE(); case 68: - if (lookahead == 't') ADVANCE(11); + if (lookahead == 't') ADVANCE(24); END_STATE(); case 69: - if (lookahead == 'u') ADVANCE(72); + if (lookahead == 't') ADVANCE(82); END_STATE(); case 70: - if (lookahead == 'u') ADVANCE(8); + if (lookahead == 't') ADVANCE(11); END_STATE(); case 71: - if (lookahead == 'w') ADVANCE(63); + if (lookahead == 'u') ADVANCE(74); END_STATE(); case 72: - if (lookahead == 'x') ADVANCE(128); + if (lookahead == 'u') ADVANCE(7); END_STATE(); case 73: - if (lookahead == 'y') ADVANCE(128); + if (lookahead == 'w') ADVANCE(64); END_STATE(); case 74: + if (lookahead == 'x') ADVANCE(131); + END_STATE(); + case 75: + if (lookahead == 'y') ADVANCE(131); + END_STATE(); + case 76: if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); - case 75: - if (eof) ADVANCE(76); - if (lookahead == '\n') ADVANCE(129); - if (lookahead == '\r') ADVANCE(130); - if (lookahead != 0) ADVANCE(77); + case 77: + if (eof) ADVANCE(78); + if (lookahead == '\n') ADVANCE(132); + if (lookahead == '\r') ADVANCE(133); + if (lookahead != 0) ADVANCE(79); END_STATE(); - case 76: + case 78: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 77: + case 79: ACCEPT_TOKEN(sym__line); if (lookahead != 0 && lookahead != '\n' && - lookahead != '\r') ADVANCE(77); - END_STATE(); - case 78: - ACCEPT_TOKEN(anon_sym_COLONskip); - END_STATE(); - case 79: - ACCEPT_TOKEN(anon_sym_COLONerror); + lookahead != '\r') ADVANCE(79); END_STATE(); case 80: - ACCEPT_TOKEN(anon_sym_COLONfail_DASHfast); + ACCEPT_TOKEN(anon_sym_COLONcst); END_STATE(); case 81: - ACCEPT_TOKEN(anon_sym_COLONlanguage); + ACCEPT_TOKEN(anon_sym_COLONerror); END_STATE(); case 82: - ACCEPT_TOKEN(anon_sym_LPAREN); + ACCEPT_TOKEN(anon_sym_COLONfail_DASHfast); END_STATE(); case 83: - ACCEPT_TOKEN(anon_sym_RPAREN); + ACCEPT_TOKEN(anon_sym_COLONskip); END_STATE(); case 84: - ACCEPT_TOKEN(anon_sym_COLONplatform); + ACCEPT_TOKEN(anon_sym_COLONlanguage); END_STATE(); case 85: - ACCEPT_TOKEN(sym__lang); - if (lookahead == 'a') ADVANCE(89); - if (lookahead == '-' || - lookahead == '.' || - ('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); case 86: - ACCEPT_TOKEN(sym__lang); - if (lookahead == 'a') ADVANCE(98); - if (lookahead == '-' || - lookahead == '.' || - ('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); case 87: - ACCEPT_TOKEN(sym__lang); - if (lookahead == 'a') ADVANCE(119); - if (lookahead == '-' || - lookahead == '.' || - ('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ACCEPT_TOKEN(anon_sym_COLONplatform); END_STATE(); case 88: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'b') ADVANCE(121); + if (lookahead == 'a') ADVANCE(92); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 89: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'c') ADVANCE(110); + if (lookahead == 'a') ADVANCE(101); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 90: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'd') ADVANCE(127); + if (lookahead == 'a') ADVANCE(122); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 91: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'd') ADVANCE(118); + if (lookahead == 'b') ADVANCE(124); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 92: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'd') ADVANCE(112); + if (lookahead == 'c') ADVANCE(113); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 93: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'e') ADVANCE(122); + if (lookahead == 'd') ADVANCE(130); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 94: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'e') ADVANCE(88); + if (lookahead == 'd') ADVANCE(121); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 95: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'e') ADVANCE(107); + if (lookahead == 'd') ADVANCE(115); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 96: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'e') ADVANCE(94); + if (lookahead == 'e') ADVANCE(125); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 97: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'f') ADVANCE(103); + if (lookahead == 'e') ADVANCE(91); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 98: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'g') ADVANCE(114); + if (lookahead == 'e') ADVANCE(110); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 99: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'i') ADVANCE(120); + if (lookahead == 'e') ADVANCE(97); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 100: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'i') ADVANCE(106); + if (lookahead == 'f') ADVANCE(106); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 101: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'i') ADVANCE(90); + if (lookahead == 'g') ADVANCE(117); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 102: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'i') ADVANCE(109); + if (lookahead == 'i') ADVANCE(123); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 103: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'l') ADVANCE(126); + if (lookahead == 'i') ADVANCE(109); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 104: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'l') ADVANCE(87); + if (lookahead == 'i') ADVANCE(93); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 105: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'n') ADVANCE(91); + if (lookahead == 'i') ADVANCE(112); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 106: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'n') ADVANCE(123); + if (lookahead == 'l') ADVANCE(129); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 107: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'n') ADVANCE(88); + if (lookahead == 'l') ADVANCE(90); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 108: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'n') ADVANCE(97); + if (lookahead == 'n') ADVANCE(94); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 109: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'n') ADVANCE(92); + if (lookahead == 'n') ADVANCE(126); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 110: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'o') ADVANCE(120); + if (lookahead == 'n') ADVANCE(91); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 111: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'o') ADVANCE(104); + if (lookahead == 'n') ADVANCE(100); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 112: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'o') ADVANCE(124); + if (lookahead == 'n') ADVANCE(95); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 113: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'o') ADVANCE(101); + if (lookahead == 'o') ADVANCE(123); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 114: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'o') ADVANCE(108); + if (lookahead == 'o') ADVANCE(107); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 115: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'p') ADVANCE(95); + if (lookahead == 'o') ADVANCE(127); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 116: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'r') ADVANCE(86); + if (lookahead == 'o') ADVANCE(104); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 117: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'r') ADVANCE(96); + if (lookahead == 'o') ADVANCE(111); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 118: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'r') ADVANCE(113); + if (lookahead == 'p') ADVANCE(98); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 119: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'r') ADVANCE(99); + if (lookahead == 'r') ADVANCE(89); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 120: ACCEPT_TOKEN(sym__lang); - if (lookahead == 's') ADVANCE(127); + if (lookahead == 'r') ADVANCE(99); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 121: ACCEPT_TOKEN(sym__lang); - if (lookahead == 's') ADVANCE(90); + if (lookahead == 'r') ADVANCE(116); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 122: ACCEPT_TOKEN(sym__lang); - if (lookahead == 't') ADVANCE(88); + if (lookahead == 'r') ADVANCE(102); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 123: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'u') ADVANCE(125); + if (lookahead == 's') ADVANCE(130); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 124: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'w') ADVANCE(120); + if (lookahead == 's') ADVANCE(93); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 125: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'x') ADVANCE(127); + if (lookahead == 't') ADVANCE(91); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 126: ACCEPT_TOKEN(sym__lang); - if (lookahead == 'y') ADVANCE(127); + if (lookahead == 'u') ADVANCE(128); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 127: ACCEPT_TOKEN(sym__lang); + if (lookahead == 'w') ADVANCE(123); if (lookahead == '-' || lookahead == '.' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(127); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 128: - ACCEPT_TOKEN(sym__os); + ACCEPT_TOKEN(sym__lang); + if (lookahead == 'x') ADVANCE(130); + if (lookahead == '-' || + lookahead == '.' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 129: - ACCEPT_TOKEN(sym__eol); + ACCEPT_TOKEN(sym__lang); + if (lookahead == 'y') ADVANCE(130); + if (lookahead == '-' || + lookahead == '.' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); END_STATE(); case 130: + ACCEPT_TOKEN(sym__lang); + if (lookahead == '-' || + lookahead == '.' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(130); + END_STATE(); + case 131: + ACCEPT_TOKEN(sym__os); + END_STATE(); + case 132: + ACCEPT_TOKEN(sym__eol); + END_STATE(); + case 133: ACCEPT_TOKEN(sym__eol); - if (lookahead == '\n') ADVANCE(129); + if (lookahead == '\n') ADVANCE(132); END_STATE(); default: return false; @@ -1075,36 +1098,38 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [7] = {.lex_state = 0, .external_lex_state = 3}, [8] = {.lex_state = 0, .external_lex_state = 3}, [9] = {.lex_state = 0, .external_lex_state = 3}, - [10] = {.lex_state = 0, .external_lex_state = 2}, + [10] = {.lex_state = 0, .external_lex_state = 3}, [11] = {.lex_state = 0, .external_lex_state = 2}, - [12] = {.lex_state = 75, .external_lex_state = 2}, - [13] = {.lex_state = 75, .external_lex_state = 2}, - [14] = {.lex_state = 75, .external_lex_state = 2}, - [15] = {.lex_state = 75, .external_lex_state = 4}, - [16] = {.lex_state = 75, .external_lex_state = 4}, - [17] = {.lex_state = 75, .external_lex_state = 2}, - [18] = {.lex_state = 75, .external_lex_state = 4}, - [19] = {.lex_state = 75}, - [20] = {.lex_state = 75}, - [21] = {.lex_state = 75}, - [22] = {.lex_state = 75}, + [12] = {.lex_state = 0, .external_lex_state = 2}, + [13] = {.lex_state = 77, .external_lex_state = 2}, + [14] = {.lex_state = 77, .external_lex_state = 2}, + [15] = {.lex_state = 77, .external_lex_state = 2}, + [16] = {.lex_state = 77, .external_lex_state = 4}, + [17] = {.lex_state = 77, .external_lex_state = 4}, + [18] = {.lex_state = 77, .external_lex_state = 2}, + [19] = {.lex_state = 77}, + [20] = {.lex_state = 77, .external_lex_state = 4}, + [21] = {.lex_state = 77}, + [22] = {.lex_state = 77}, [23] = {.lex_state = 0}, - [24] = {.lex_state = 0}, + [24] = {.lex_state = 6}, [25] = {.lex_state = 0}, [26] = {.lex_state = 0, .external_lex_state = 3}, - [27] = {.lex_state = 74}, - [28] = {.lex_state = 7}, + [27] = {.lex_state = 0}, + [28] = {.lex_state = 77}, [29] = {.lex_state = 0}, [30] = {.lex_state = 0}, [31] = {.lex_state = 0}, + [32] = {.lex_state = 76}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(0)] = { [ts_builtin_sym_end] = ACTIONS(1), - [anon_sym_COLONskip] = ACTIONS(1), + [anon_sym_COLONcst] = ACTIONS(1), [anon_sym_COLONerror] = ACTIONS(1), [anon_sym_COLONfail_DASHfast] = ACTIONS(1), + [anon_sym_COLONskip] = ACTIONS(1), [anon_sym_COLONlanguage] = ACTIONS(1), [anon_sym_LPAREN] = ACTIONS(1), [anon_sym_RPAREN] = ACTIONS(1), @@ -1117,7 +1142,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__dashes] = ACTIONS(1), }, [STATE(1)] = { - [sym_file] = STATE(23), + [sym_file] = STATE(29), [sym_test] = STATE(11), [sym_header] = STATE(19), [aux_sym_file_repeat1] = STATE(11), @@ -1128,268 +1153,290 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { }; static const uint16_t ts_small_parse_table[] = { - [0] = 9, - ACTIONS(11), 1, - anon_sym_COLONlanguage, + [0] = 10, + ACTIONS(9), 1, + anon_sym_COLONcst, ACTIONS(13), 1, - anon_sym_COLONplatform, + anon_sym_COLONlanguage, ACTIONS(15), 1, - sym__eol, + anon_sym_COLONplatform, ACTIONS(17), 1, + sym__eol, + ACTIONS(19), 1, sym__equals_end, STATE(7), 1, sym__platform, - STATE(8), 1, + STATE(9), 1, sym__language, STATE(26), 1, sym_attributes, STATE(3), 2, sym_attribute, aux_sym_attributes_repeat1, - ACTIONS(9), 3, - anon_sym_COLONskip, + ACTIONS(11), 3, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, - [31] = 8, - ACTIONS(11), 1, - anon_sym_COLONlanguage, + anon_sym_COLONskip, + [34] = 9, + ACTIONS(9), 1, + anon_sym_COLONcst, ACTIONS(13), 1, + anon_sym_COLONlanguage, + ACTIONS(15), 1, anon_sym_COLONplatform, - ACTIONS(19), 1, - sym__eol, ACTIONS(21), 1, + sym__eol, + ACTIONS(23), 1, sym__equals_end, STATE(7), 1, sym__platform, - STATE(8), 1, + STATE(9), 1, sym__language, STATE(4), 2, sym_attribute, aux_sym_attributes_repeat1, - ACTIONS(9), 3, - anon_sym_COLONskip, + ACTIONS(11), 3, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, - [59] = 8, - ACTIONS(26), 1, + anon_sym_COLONskip, + [65] = 9, + ACTIONS(25), 1, + anon_sym_COLONcst, + ACTIONS(31), 1, anon_sym_COLONlanguage, - ACTIONS(29), 1, + ACTIONS(34), 1, anon_sym_COLONplatform, - ACTIONS(32), 1, + ACTIONS(37), 1, sym__eol, - ACTIONS(35), 1, + ACTIONS(40), 1, sym__equals_end, STATE(7), 1, sym__platform, - STATE(8), 1, + STATE(9), 1, sym__language, STATE(4), 2, sym_attribute, aux_sym_attributes_repeat1, - ACTIONS(23), 3, - anon_sym_COLONskip, + ACTIONS(28), 3, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, - [87] = 1, - ACTIONS(37), 7, - sym__equals_end, anon_sym_COLONskip, + [96] = 1, + ACTIONS(42), 8, + sym__equals_end, + anon_sym_COLONcst, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, + anon_sym_COLONskip, anon_sym_COLONlanguage, anon_sym_COLONplatform, sym__eol, - [97] = 1, - ACTIONS(39), 7, + [107] = 1, + ACTIONS(44), 8, sym__equals_end, - anon_sym_COLONskip, + anon_sym_COLONcst, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, + anon_sym_COLONskip, anon_sym_COLONlanguage, anon_sym_COLONplatform, sym__eol, - [107] = 1, - ACTIONS(41), 7, + [118] = 1, + ACTIONS(46), 8, sym__equals_end, - anon_sym_COLONskip, + anon_sym_COLONcst, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, + anon_sym_COLONskip, anon_sym_COLONlanguage, anon_sym_COLONplatform, sym__eol, - [117] = 1, - ACTIONS(43), 7, + [129] = 1, + ACTIONS(48), 8, sym__equals_end, - anon_sym_COLONskip, + anon_sym_COLONcst, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, + anon_sym_COLONskip, anon_sym_COLONlanguage, anon_sym_COLONplatform, sym__eol, - [127] = 1, - ACTIONS(45), 7, + [140] = 1, + ACTIONS(50), 8, sym__equals_end, + anon_sym_COLONcst, + anon_sym_COLONerror, + anon_sym_COLONfail_DASHfast, anon_sym_COLONskip, + anon_sym_COLONlanguage, + anon_sym_COLONplatform, + sym__eol, + [151] = 1, + ACTIONS(52), 8, + sym__equals_end, + anon_sym_COLONcst, anon_sym_COLONerror, anon_sym_COLONfail_DASHfast, + anon_sym_COLONskip, anon_sym_COLONlanguage, anon_sym_COLONplatform, sym__eol, - [137] = 5, - ACTIONS(47), 1, + [162] = 5, + ACTIONS(7), 1, + sym__equals_begin, + ACTIONS(54), 1, ts_builtin_sym_end, - ACTIONS(49), 1, + ACTIONS(56), 1, sym__eol, - ACTIONS(52), 1, - sym__equals_begin, STATE(19), 1, sym_header, - STATE(10), 2, + STATE(12), 2, sym_test, aux_sym_file_repeat1, - [154] = 5, - ACTIONS(7), 1, - sym__equals_begin, - ACTIONS(55), 1, + [179] = 5, + ACTIONS(58), 1, ts_builtin_sym_end, - ACTIONS(57), 1, + ACTIONS(60), 1, sym__eol, + ACTIONS(63), 1, + sym__equals_begin, STATE(19), 1, sym_header, - STATE(10), 2, + STATE(12), 2, sym_test, aux_sym_file_repeat1, - [171] = 3, - STATE(13), 1, + [196] = 3, + STATE(14), 1, aux_sym__body, - ACTIONS(59), 2, + ACTIONS(66), 2, sym__equals_begin, ts_builtin_sym_end, - ACTIONS(61), 2, + ACTIONS(68), 2, sym__line, sym__eol, - [183] = 3, - STATE(14), 1, + [208] = 3, + STATE(15), 1, aux_sym__body, - ACTIONS(61), 2, + ACTIONS(68), 2, sym__line, sym__eol, - ACTIONS(63), 2, + ACTIONS(70), 2, sym__equals_begin, ts_builtin_sym_end, - [195] = 3, - STATE(14), 1, + [220] = 3, + STATE(15), 1, aux_sym__body, - ACTIONS(65), 2, + ACTIONS(72), 2, sym__equals_begin, ts_builtin_sym_end, - ACTIONS(67), 2, + ACTIONS(74), 2, sym__line, sym__eol, - [207] = 3, - ACTIONS(72), 1, + [232] = 3, + ACTIONS(79), 1, sym__dashes, - STATE(16), 1, + STATE(17), 1, aux_sym__body, - ACTIONS(70), 2, + ACTIONS(77), 2, sym__line, sym__eol, - [218] = 3, - ACTIONS(65), 1, + [243] = 3, + ACTIONS(72), 1, sym__dashes, - STATE(16), 1, + STATE(17), 1, aux_sym__body, - ACTIONS(74), 2, + ACTIONS(81), 2, sym__line, sym__eol, - [229] = 1, - ACTIONS(77), 4, + [254] = 1, + ACTIONS(84), 4, sym__equals_begin, ts_builtin_sym_end, sym__line, sym__eol, - [236] = 1, - ACTIONS(77), 3, - sym__dashes, - sym__line, - sym__eol, - [242] = 2, - STATE(15), 1, + [261] = 2, + STATE(16), 1, aux_sym__body, - ACTIONS(70), 2, + ACTIONS(77), 2, sym__line, sym__eol, - [250] = 1, - ACTIONS(79), 2, + [269] = 1, + ACTIONS(84), 3, + sym__dashes, sym__line, sym__eol, - [255] = 1, - ACTIONS(81), 2, + [275] = 1, + ACTIONS(86), 2, sym__line, sym__eol, - [260] = 1, - ACTIONS(83), 1, + [280] = 1, + ACTIONS(88), 2, sym__line, - [264] = 1, - ACTIONS(85), 1, - ts_builtin_sym_end, - [268] = 1, - ACTIONS(87), 1, sym__eol, - [272] = 1, - ACTIONS(89), 1, + [285] = 1, + ACTIONS(90), 1, + anon_sym_RPAREN, + [289] = 1, + ACTIONS(92), 1, + sym__os, + [293] = 1, + ACTIONS(94), 1, anon_sym_LPAREN, - [276] = 1, - ACTIONS(91), 1, + [297] = 1, + ACTIONS(96), 1, sym__equals_end, - [280] = 1, - ACTIONS(93), 1, - sym__lang, - [284] = 1, - ACTIONS(95), 1, - sym__os, - [288] = 1, - ACTIONS(97), 1, - anon_sym_RPAREN, - [292] = 1, - ACTIONS(99), 1, + [301] = 1, + ACTIONS(98), 1, anon_sym_RPAREN, - [296] = 1, - ACTIONS(101), 1, + [305] = 1, + ACTIONS(100), 1, + sym__line, + [309] = 1, + ACTIONS(102), 1, + ts_builtin_sym_end, + [313] = 1, + ACTIONS(104), 1, + sym__eol, + [317] = 1, + ACTIONS(106), 1, anon_sym_LPAREN, + [321] = 1, + ACTIONS(108), 1, + sym__lang, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 31, - [SMALL_STATE(4)] = 59, - [SMALL_STATE(5)] = 87, - [SMALL_STATE(6)] = 97, - [SMALL_STATE(7)] = 107, - [SMALL_STATE(8)] = 117, - [SMALL_STATE(9)] = 127, - [SMALL_STATE(10)] = 137, - [SMALL_STATE(11)] = 154, - [SMALL_STATE(12)] = 171, - [SMALL_STATE(13)] = 183, - [SMALL_STATE(14)] = 195, - [SMALL_STATE(15)] = 207, - [SMALL_STATE(16)] = 218, - [SMALL_STATE(17)] = 229, - [SMALL_STATE(18)] = 236, - [SMALL_STATE(19)] = 242, - [SMALL_STATE(20)] = 250, - [SMALL_STATE(21)] = 255, - [SMALL_STATE(22)] = 260, - [SMALL_STATE(23)] = 264, - [SMALL_STATE(24)] = 268, - [SMALL_STATE(25)] = 272, - [SMALL_STATE(26)] = 276, - [SMALL_STATE(27)] = 280, - [SMALL_STATE(28)] = 284, - [SMALL_STATE(29)] = 288, - [SMALL_STATE(30)] = 292, - [SMALL_STATE(31)] = 296, + [SMALL_STATE(3)] = 34, + [SMALL_STATE(4)] = 65, + [SMALL_STATE(5)] = 96, + [SMALL_STATE(6)] = 107, + [SMALL_STATE(7)] = 118, + [SMALL_STATE(8)] = 129, + [SMALL_STATE(9)] = 140, + [SMALL_STATE(10)] = 151, + [SMALL_STATE(11)] = 162, + [SMALL_STATE(12)] = 179, + [SMALL_STATE(13)] = 196, + [SMALL_STATE(14)] = 208, + [SMALL_STATE(15)] = 220, + [SMALL_STATE(16)] = 232, + [SMALL_STATE(17)] = 243, + [SMALL_STATE(18)] = 254, + [SMALL_STATE(19)] = 261, + [SMALL_STATE(20)] = 269, + [SMALL_STATE(21)] = 275, + [SMALL_STATE(22)] = 280, + [SMALL_STATE(23)] = 285, + [SMALL_STATE(24)] = 289, + [SMALL_STATE(25)] = 293, + [SMALL_STATE(26)] = 297, + [SMALL_STATE(27)] = 301, + [SMALL_STATE(28)] = 305, + [SMALL_STATE(29)] = 309, + [SMALL_STATE(30)] = 313, + [SMALL_STATE(31)] = 317, + [SMALL_STATE(32)] = 321, }; static const TSParseActionEntry ts_parse_actions[] = { @@ -1397,50 +1444,53 @@ static const TSParseActionEntry ts_parse_actions[] = { [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file, 0, 0, 0), [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [21] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 1, 0, 0), - [23] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(5), - [26] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(25), - [29] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(31), - [32] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(4), - [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), - [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 0), - [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__language, 4, 0, 6), - [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 4), - [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 3), - [45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__platform, 4, 0, 7), - [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_file_repeat1, 2, 0, 0), - [49] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_file_repeat1, 2, 0, 0), SHIFT_REPEAT(10), - [52] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_file_repeat1, 2, 0, 0), SHIFT_REPEAT(22), - [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file, 1, 0, 0), - [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_test, 3, 0, 1), - [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [63] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_test, 4, 0, 5), - [65] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__body, 2, 0, 0), - [67] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__body, 2, 0, 0), SHIFT_REPEAT(17), - [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [72] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [23] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 1, 0, 0), + [25] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(5), + [28] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(6), + [31] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(31), + [34] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(25), + [37] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), SHIFT_REPEAT(4), + [40] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2, 0, 0), + [42] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 3), + [44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 0), + [46] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 5), + [48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__language, 4, 0, 7), + [50] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 4), + [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__platform, 4, 0, 8), + [54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file, 1, 0, 0), + [56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_file_repeat1, 2, 0, 0), + [60] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_file_repeat1, 2, 0, 0), SHIFT_REPEAT(12), + [63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_file_repeat1, 2, 0, 0), SHIFT_REPEAT(28), + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_test, 3, 0, 1), + [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_test, 4, 0, 6), + [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__body, 2, 0, 0), [74] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__body, 2, 0, 0), SHIFT_REPEAT(18), - [77] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__body, 1, 0, 0), - [79] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_header, 4, 0, 2), - [81] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_header, 5, 0, 2), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [85] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [91] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [93] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [81] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__body, 2, 0, 0), SHIFT_REPEAT(20), + [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__body, 1, 0, 0), + [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_header, 4, 0, 2), + [88] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_header, 5, 0, 2), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [92] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [102] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), }; enum ts_external_scanner_symbol_identifiers {