#include "tree_sitter/parser.h" #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif #define LANGUAGE_VERSION 14 #define STATE_COUNT 76 #define LARGE_STATE_COUNT 2 #define SYMBOL_COUNT 25 #define ALIAS_COUNT 0 #define TOKEN_COUNT 15 #define EXTERNAL_TOKEN_COUNT 0 #define FIELD_COUNT 0 #define MAX_ALIAS_SEQUENCE_LENGTH 6 #define PRODUCTION_ID_COUNT 1 enum ts_symbol_identifiers { anon_sym_SLASH = 1, anon_sym_LBRACE = 2, anon_sym_RBRACE = 3, anon_sym_GT = 4, anon_sym_DASH = 5, anon_sym_EQ = 6, sym_node_name = 7, anon_sym_AT = 8, sym_literal_text = 9, sym_class_shorthand = 10, sym_id_shorthand = 11, sym_attribute_name = 12, sym_attribute_value = 13, sym__S = 14, sym_source_file = 15, sym_comment = 16, sym_node = 17, sym_node_body = 18, sym_text = 19, sym_attribute_list = 20, sym_attribute = 21, aux_sym_source_file_repeat1 = 22, aux_sym_text_repeat1 = 23, aux_sym_attribute_list_repeat1 = 24, }; static const char * const ts_symbol_names[] = { [ts_builtin_sym_end] = "end", [anon_sym_SLASH] = "/", [anon_sym_LBRACE] = "{", [anon_sym_RBRACE] = "}", [anon_sym_GT] = ">", [anon_sym_DASH] = "-", [anon_sym_EQ] = "=", [sym_node_name] = "node_name", [anon_sym_AT] = "@", [sym_literal_text] = "literal_text", [sym_class_shorthand] = "class_shorthand", [sym_id_shorthand] = "id_shorthand", [sym_attribute_name] = "attribute_name", [sym_attribute_value] = "attribute_value", [sym__S] = "_S", [sym_source_file] = "source_file", [sym_comment] = "comment", [sym_node] = "node", [sym_node_body] = "node_body", [sym_text] = "text", [sym_attribute_list] = "attribute_list", [sym_attribute] = "attribute", [aux_sym_source_file_repeat1] = "source_file_repeat1", [aux_sym_text_repeat1] = "text_repeat1", [aux_sym_attribute_list_repeat1] = "attribute_list_repeat1", }; static const TSSymbol ts_symbol_map[] = { [ts_builtin_sym_end] = ts_builtin_sym_end, [anon_sym_SLASH] = anon_sym_SLASH, [anon_sym_LBRACE] = anon_sym_LBRACE, [anon_sym_RBRACE] = anon_sym_RBRACE, [anon_sym_GT] = anon_sym_GT, [anon_sym_DASH] = anon_sym_DASH, [anon_sym_EQ] = anon_sym_EQ, [sym_node_name] = sym_node_name, [anon_sym_AT] = anon_sym_AT, [sym_literal_text] = sym_literal_text, [sym_class_shorthand] = sym_class_shorthand, [sym_id_shorthand] = sym_id_shorthand, [sym_attribute_name] = sym_attribute_name, [sym_attribute_value] = sym_attribute_value, [sym__S] = sym__S, [sym_source_file] = sym_source_file, [sym_comment] = sym_comment, [sym_node] = sym_node, [sym_node_body] = sym_node_body, [sym_text] = sym_text, [sym_attribute_list] = sym_attribute_list, [sym_attribute] = sym_attribute, [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, [aux_sym_text_repeat1] = aux_sym_text_repeat1, [aux_sym_attribute_list_repeat1] = aux_sym_attribute_list_repeat1, }; static const TSSymbolMetadata ts_symbol_metadata[] = { [ts_builtin_sym_end] = { .visible = false, .named = true, }, [anon_sym_SLASH] = { .visible = true, .named = false, }, [anon_sym_LBRACE] = { .visible = true, .named = false, }, [anon_sym_RBRACE] = { .visible = true, .named = false, }, [anon_sym_GT] = { .visible = true, .named = false, }, [anon_sym_DASH] = { .visible = true, .named = false, }, [anon_sym_EQ] = { .visible = true, .named = false, }, [sym_node_name] = { .visible = true, .named = true, }, [anon_sym_AT] = { .visible = true, .named = false, }, [sym_literal_text] = { .visible = true, .named = true, }, [sym_class_shorthand] = { .visible = true, .named = true, }, [sym_id_shorthand] = { .visible = true, .named = true, }, [sym_attribute_name] = { .visible = true, .named = true, }, [sym_attribute_value] = { .visible = true, .named = true, }, [sym__S] = { .visible = false, .named = true, }, [sym_source_file] = { .visible = true, .named = true, }, [sym_comment] = { .visible = true, .named = true, }, [sym_node] = { .visible = true, .named = true, }, [sym_node_body] = { .visible = true, .named = true, }, [sym_text] = { .visible = true, .named = true, }, [sym_attribute_list] = { .visible = true, .named = true, }, [sym_attribute] = { .visible = true, .named = true, }, [aux_sym_source_file_repeat1] = { .visible = false, .named = false, }, [aux_sym_text_repeat1] = { .visible = false, .named = false, }, [aux_sym_attribute_list_repeat1] = { .visible = false, .named = false, }, }; static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { [0] = {0}, }; static const uint16_t ts_non_terminal_alias_map[] = { 0, }; static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 2, [5] = 5, [6] = 6, [7] = 5, [8] = 8, [9] = 9, [10] = 3, [11] = 9, [12] = 8, [13] = 6, [14] = 14, [15] = 14, [16] = 16, [17] = 17, [18] = 18, [19] = 18, [20] = 20, [21] = 21, [22] = 22, [23] = 22, [24] = 21, [25] = 25, [26] = 26, [27] = 27, [28] = 28, [29] = 29, [30] = 30, [31] = 31, [32] = 32, [33] = 33, [34] = 34, [35] = 35, [36] = 36, [37] = 37, [38] = 38, [39] = 39, [40] = 40, [41] = 41, [42] = 35, [43] = 37, [44] = 44, [45] = 36, [46] = 28, [47] = 32, [48] = 34, [49] = 31, [50] = 33, [51] = 51, [52] = 52, [53] = 53, [54] = 54, [55] = 55, [56] = 56, [57] = 51, [58] = 58, [59] = 59, [60] = 60, [61] = 61, [62] = 62, [63] = 62, [64] = 60, [65] = 53, [66] = 54, [67] = 67, [68] = 61, [69] = 69, [70] = 67, [71] = 71, [72] = 52, [73] = 58, [74] = 55, [75] = 59, }; static TSCharacterRange sym_node_name_character_set_1[] = { {':', ':'}, {'A', 'Z'}, {'_', '_'}, {'a', 'z'}, {0xc0, 0xd6}, {0xd8, 0xf6}, {0xf8, 0x2ff}, {0x370, 0x37d}, {0x37f, 0x1fff}, {0x200c, 0x200d}, {0x2070, 0x218f}, {0x2c00, 0x2fef}, {0x3001, 0xd7ff}, {0xf900, 0xfdcf}, {0xfdf0, 0xfffd}, {0x10000, 0xeffff}, }; static TSCharacterRange sym_node_name_character_set_2[] = { {'-', '.'}, {'0', ':'}, {'A', 'Z'}, {'_', '_'}, {'a', 'z'}, {0xb7, 0xb7}, {0xc0, 0xd6}, {0xd8, 0xf6}, {0xf8, 0x37d}, {0x37f, 0x1fff}, {0x200c, 0x200d}, {0x203f, 0x2040}, {0x2070, 0x218f}, {0x2c00, 0x2fef}, {0x3001, 0xd7ff}, {0xf900, 0xfdcf}, {0xfdf0, 0xfffd}, {0x10000, 0xeffff}, }; static TSCharacterRange sym_class_shorthand_character_set_1[] = { {0, 0x08}, {0x0e, 0x1f}, {'!', 0x84}, {0x86, 0x9f}, {0xa1, 0x167f}, {0x1681, 0x1fff}, {0x200b, 0x2027}, {0x202a, 0x202e}, {0x2030, 0x205e}, {0x2060, 0x2fff}, {0x3001, 0x10ffff}, }; static TSCharacterRange sym__S_character_set_1[] = { {'\t', '\r'}, {' ', ' '}, {0x85, 0x85}, {0xa0, 0xa0}, {0x1680, 0x1680}, {0x2000, 0x200a}, {0x2028, 0x2029}, {0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000}, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { START_LEXER(); eof = lexer->eof(lexer); switch (state) { case 0: if (eof) ADVANCE(9); ADVANCE_MAP( '"', 1, '#', 5, '-', 14, '.', 6, '/', 10, '=', 15, '>', 13, '@', 19, '{', 11, '}', 12, 0x1680, 16, ); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(26); if (set_contains(sym_node_name_character_set_1, 16, lookahead)) ADVANCE(18); END_STATE(); case 1: if (lookahead == '"') ADVANCE(25); if (lookahead == '\\') ADVANCE(7); if (lookahead != 0) ADVANCE(1); END_STATE(); case 2: if (lookahead == '#') ADVANCE(5); if (lookahead == '.') ADVANCE(6); if (lookahead == '{') ADVANCE(11); if (lookahead == 0x1680) ADVANCE(16); if (lookahead == '-' || ('0' <= lookahead && lookahead <= '9')) ADVANCE(24); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(26); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(17); if (set_contains(sym_node_name_character_set_1, 16, lookahead)) ADVANCE(18); END_STATE(); case 3: if (lookahead == '@') ADVANCE(19); if (lookahead == '\\') ADVANCE(4); if (lookahead == '}') ADVANCE(12); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(20); if (lookahead != 0) ADVANCE(21); END_STATE(); case 4: if (lookahead == '@' || lookahead == '\\' || lookahead == '}') ADVANCE(21); END_STATE(); case 5: if ((!eof && set_contains(sym_class_shorthand_character_set_1, 11, lookahead))) ADVANCE(23); END_STATE(); case 6: if ((!eof && set_contains(sym_class_shorthand_character_set_1, 11, lookahead))) ADVANCE(22); END_STATE(); case 7: if (lookahead != 0 && lookahead != '\n') ADVANCE(1); END_STATE(); case 8: if (eof) ADVANCE(9); if (lookahead == '"') ADVANCE(1); if (lookahead == '#') ADVANCE(5); if (lookahead == '.') ADVANCE(6); if (lookahead == '=') ADVANCE(15); if (lookahead == '{') ADVANCE(11); if (lookahead == '}') ADVANCE(12); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(26); if (lookahead == '-' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(24); END_STATE(); case 9: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); case 10: ACCEPT_TOKEN(anon_sym_SLASH); END_STATE(); case 11: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); case 12: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); case 13: ACCEPT_TOKEN(anon_sym_GT); END_STATE(); case 14: ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); case 15: ACCEPT_TOKEN(anon_sym_EQ); END_STATE(); case 16: ACCEPT_TOKEN(sym_node_name); if (lookahead == 0x1680) ADVANCE(16); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(26); if (set_contains(sym_node_name_character_set_2, 18, lookahead)) ADVANCE(18); END_STATE(); case 17: ACCEPT_TOKEN(sym_node_name); if (lookahead == '-' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(17); if (set_contains(sym_node_name_character_set_2, 18, lookahead)) ADVANCE(18); END_STATE(); case 18: ACCEPT_TOKEN(sym_node_name); if (set_contains(sym_node_name_character_set_2, 18, lookahead)) ADVANCE(18); END_STATE(); case 19: ACCEPT_TOKEN(anon_sym_AT); END_STATE(); case 20: ACCEPT_TOKEN(sym_literal_text); if (lookahead == '\\') ADVANCE(4); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(20); if (lookahead != 0 && lookahead != '@' && lookahead != '}') ADVANCE(21); END_STATE(); case 21: ACCEPT_TOKEN(sym_literal_text); if (lookahead == '\\') ADVANCE(4); if (lookahead != 0 && lookahead != '@' && lookahead != '}') ADVANCE(21); END_STATE(); case 22: ACCEPT_TOKEN(sym_class_shorthand); if ((!eof && set_contains(sym_class_shorthand_character_set_1, 11, lookahead))) ADVANCE(22); END_STATE(); case 23: ACCEPT_TOKEN(sym_id_shorthand); if ((!eof && set_contains(sym_class_shorthand_character_set_1, 11, lookahead))) ADVANCE(23); END_STATE(); case 24: ACCEPT_TOKEN(sym_attribute_name); if (lookahead == '-' || ('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(24); END_STATE(); case 25: ACCEPT_TOKEN(sym_attribute_value); END_STATE(); case 26: ACCEPT_TOKEN(sym__S); if (set_contains(sym__S_character_set_1, 10, lookahead)) ADVANCE(26); END_STATE(); default: return false; } } static const TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, [1] = {.lex_state = 0}, [2] = {.lex_state = 0}, [3] = {.lex_state = 0}, [4] = {.lex_state = 0}, [5] = {.lex_state = 0}, [6] = {.lex_state = 0}, [7] = {.lex_state = 0}, [8] = {.lex_state = 0}, [9] = {.lex_state = 0}, [10] = {.lex_state = 0}, [11] = {.lex_state = 0}, [12] = {.lex_state = 0}, [13] = {.lex_state = 0}, [14] = {.lex_state = 2}, [15] = {.lex_state = 2}, [16] = {.lex_state = 0}, [17] = {.lex_state = 0}, [18] = {.lex_state = 8}, [19] = {.lex_state = 8}, [20] = {.lex_state = 0}, [21] = {.lex_state = 8}, [22] = {.lex_state = 8}, [23] = {.lex_state = 8}, [24] = {.lex_state = 8}, [25] = {.lex_state = 8}, [26] = {.lex_state = 8}, [27] = {.lex_state = 3}, [28] = {.lex_state = 0}, [29] = {.lex_state = 0}, [30] = {.lex_state = 8}, [31] = {.lex_state = 0}, [32] = {.lex_state = 0}, [33] = {.lex_state = 0}, [34] = {.lex_state = 0}, [35] = {.lex_state = 0}, [36] = {.lex_state = 0}, [37] = {.lex_state = 0}, [38] = {.lex_state = 8}, [39] = {.lex_state = 3}, [40] = {.lex_state = 8}, [41] = {.lex_state = 3}, [42] = {.lex_state = 3}, [43] = {.lex_state = 3}, [44] = {.lex_state = 3}, [45] = {.lex_state = 3}, [46] = {.lex_state = 3}, [47] = {.lex_state = 3}, [48] = {.lex_state = 3}, [49] = {.lex_state = 3}, [50] = {.lex_state = 3}, [51] = {.lex_state = 8}, [52] = {.lex_state = 8}, [53] = {.lex_state = 8}, [54] = {.lex_state = 8}, [55] = {.lex_state = 8}, [56] = {.lex_state = 8}, [57] = {.lex_state = 8}, [58] = {.lex_state = 8}, [59] = {.lex_state = 0}, [60] = {.lex_state = 8}, [61] = {.lex_state = 8}, [62] = {.lex_state = 8}, [63] = {.lex_state = 8}, [64] = {.lex_state = 8}, [65] = {.lex_state = 8}, [66] = {.lex_state = 8}, [67] = {.lex_state = 8}, [68] = {.lex_state = 8}, [69] = {.lex_state = 8}, [70] = {.lex_state = 8}, [71] = {.lex_state = 8}, [72] = {.lex_state = 8}, [73] = {.lex_state = 8}, [74] = {.lex_state = 8}, [75] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [0] = { [ts_builtin_sym_end] = ACTIONS(1), [anon_sym_SLASH] = ACTIONS(1), [anon_sym_LBRACE] = ACTIONS(1), [anon_sym_RBRACE] = ACTIONS(1), [anon_sym_GT] = ACTIONS(1), [anon_sym_DASH] = ACTIONS(1), [anon_sym_EQ] = ACTIONS(1), [sym_node_name] = ACTIONS(1), [anon_sym_AT] = ACTIONS(1), [sym_class_shorthand] = ACTIONS(1), [sym_id_shorthand] = ACTIONS(1), [sym_attribute_value] = ACTIONS(1), [sym__S] = ACTIONS(3), }, [1] = { [sym_source_file] = STATE(71), [sym_comment] = STATE(17), [sym_node] = STATE(17), [aux_sym_source_file_repeat1] = STATE(17), [ts_builtin_sym_end] = ACTIONS(5), [anon_sym_SLASH] = ACTIONS(7), [anon_sym_GT] = ACTIONS(9), [sym_node_name] = ACTIONS(11), [sym__S] = ACTIONS(3), }, }; static const uint16_t ts_small_parse_table[] = { [0] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(13), 1, anon_sym_RBRACE, STATE(63), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [28] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(17), 1, anon_sym_RBRACE, STATE(54), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [56] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(19), 1, anon_sym_RBRACE, STATE(62), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [84] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(21), 1, anon_sym_RBRACE, STATE(57), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [112] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(23), 1, anon_sym_RBRACE, STATE(53), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [140] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(25), 1, anon_sym_RBRACE, STATE(51), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [168] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(27), 1, anon_sym_RBRACE, STATE(60), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [196] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(29), 1, anon_sym_RBRACE, STATE(68), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [224] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(31), 1, anon_sym_RBRACE, STATE(66), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [252] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(33), 1, anon_sym_RBRACE, STATE(61), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [280] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(35), 1, anon_sym_RBRACE, STATE(64), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [308] = 8, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(37), 1, anon_sym_RBRACE, STATE(65), 1, sym_node_body, ACTIONS(15), 2, anon_sym_DASH, anon_sym_EQ, STATE(20), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [336] = 7, ACTIONS(3), 1, sym__S, ACTIONS(39), 1, anon_sym_LBRACE, ACTIONS(41), 1, sym_node_name, ACTIONS(45), 1, sym_attribute_name, STATE(67), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [360] = 7, ACTIONS(3), 1, sym__S, ACTIONS(45), 1, sym_attribute_name, ACTIONS(47), 1, anon_sym_LBRACE, ACTIONS(49), 1, sym_node_name, STATE(70), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [384] = 6, ACTIONS(3), 1, sym__S, ACTIONS(53), 1, anon_sym_SLASH, ACTIONS(56), 1, anon_sym_GT, ACTIONS(59), 1, sym_node_name, ACTIONS(51), 2, ts_builtin_sym_end, anon_sym_RBRACE, STATE(16), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [406] = 6, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(62), 1, ts_builtin_sym_end, STATE(16), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [427] = 6, ACTIONS(64), 1, anon_sym_LBRACE, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, STATE(74), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [448] = 6, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, ACTIONS(70), 1, anon_sym_LBRACE, STATE(55), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [469] = 6, ACTIONS(3), 1, sym__S, ACTIONS(7), 1, anon_sym_SLASH, ACTIONS(9), 1, anon_sym_GT, ACTIONS(11), 1, sym_node_name, ACTIONS(72), 1, anon_sym_RBRACE, STATE(16), 3, sym_comment, sym_node, aux_sym_source_file_repeat1, [490] = 6, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, ACTIONS(74), 1, anon_sym_LBRACE, STATE(72), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [511] = 6, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, ACTIONS(76), 1, anon_sym_LBRACE, STATE(58), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [532] = 6, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, ACTIONS(78), 1, anon_sym_LBRACE, STATE(73), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [553] = 6, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, ACTIONS(80), 1, anon_sym_LBRACE, STATE(52), 1, sym_attribute_list, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(25), 2, sym_attribute, aux_sym_attribute_list_repeat1, [574] = 5, ACTIONS(66), 1, sym_attribute_name, ACTIONS(68), 1, sym__S, ACTIONS(82), 1, anon_sym_LBRACE, ACTIONS(43), 2, sym_class_shorthand, sym_id_shorthand, STATE(26), 2, sym_attribute, aux_sym_attribute_list_repeat1, [592] = 5, ACTIONS(68), 1, sym__S, ACTIONS(84), 1, anon_sym_LBRACE, ACTIONS(89), 1, sym_attribute_name, ACTIONS(86), 2, sym_class_shorthand, sym_id_shorthand, STATE(26), 2, sym_attribute, aux_sym_attribute_list_repeat1, [610] = 6, ACTIONS(3), 1, sym__S, ACTIONS(72), 1, anon_sym_RBRACE, ACTIONS(92), 1, anon_sym_AT, ACTIONS(94), 1, sym_literal_text, STATE(39), 1, aux_sym_text_repeat1, STATE(69), 1, sym_text, [629] = 3, ACTIONS(3), 1, sym__S, ACTIONS(98), 1, sym_node_name, ACTIONS(96), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [642] = 5, ACTIONS(3), 1, sym__S, ACTIONS(100), 1, anon_sym_SLASH, ACTIONS(102), 1, anon_sym_GT, ACTIONS(104), 1, sym_node_name, STATE(44), 2, sym_comment, sym_node, [659] = 3, ACTIONS(68), 1, sym__S, ACTIONS(108), 1, anon_sym_EQ, ACTIONS(106), 4, anon_sym_LBRACE, sym_class_shorthand, sym_id_shorthand, sym_attribute_name, [672] = 3, ACTIONS(3), 1, sym__S, ACTIONS(112), 1, sym_node_name, ACTIONS(110), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [685] = 3, ACTIONS(3), 1, sym__S, ACTIONS(116), 1, sym_node_name, ACTIONS(114), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [698] = 3, ACTIONS(3), 1, sym__S, ACTIONS(120), 1, sym_node_name, ACTIONS(118), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [711] = 3, ACTIONS(3), 1, sym__S, ACTIONS(124), 1, sym_node_name, ACTIONS(122), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [724] = 3, ACTIONS(3), 1, sym__S, ACTIONS(128), 1, sym_node_name, ACTIONS(126), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [737] = 3, ACTIONS(3), 1, sym__S, ACTIONS(132), 1, sym_node_name, ACTIONS(130), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [750] = 3, ACTIONS(3), 1, sym__S, ACTIONS(136), 1, sym_node_name, ACTIONS(134), 4, ts_builtin_sym_end, anon_sym_SLASH, anon_sym_RBRACE, anon_sym_GT, [763] = 2, ACTIONS(68), 1, sym__S, ACTIONS(106), 4, anon_sym_LBRACE, sym_class_shorthand, sym_id_shorthand, sym_attribute_name, [773] = 5, ACTIONS(3), 1, sym__S, ACTIONS(92), 1, anon_sym_AT, ACTIONS(138), 1, anon_sym_RBRACE, ACTIONS(140), 1, sym_literal_text, STATE(41), 1, aux_sym_text_repeat1, [789] = 2, ACTIONS(68), 1, sym__S, ACTIONS(142), 4, anon_sym_LBRACE, sym_class_shorthand, sym_id_shorthand, sym_attribute_name, [799] = 5, ACTIONS(3), 1, sym__S, ACTIONS(144), 1, anon_sym_RBRACE, ACTIONS(146), 1, anon_sym_AT, ACTIONS(149), 1, sym_literal_text, STATE(41), 1, aux_sym_text_repeat1, [815] = 2, ACTIONS(3), 1, sym__S, ACTIONS(126), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [824] = 2, ACTIONS(3), 1, sym__S, ACTIONS(134), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [833] = 2, ACTIONS(3), 1, sym__S, ACTIONS(144), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [842] = 2, ACTIONS(3), 1, sym__S, ACTIONS(130), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [851] = 2, ACTIONS(3), 1, sym__S, ACTIONS(96), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [860] = 2, ACTIONS(3), 1, sym__S, ACTIONS(114), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [869] = 2, ACTIONS(3), 1, sym__S, ACTIONS(122), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [878] = 2, ACTIONS(3), 1, sym__S, ACTIONS(110), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [887] = 2, ACTIONS(3), 1, sym__S, ACTIONS(118), 3, anon_sym_RBRACE, anon_sym_AT, sym_literal_text, [896] = 2, ACTIONS(29), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [903] = 2, ACTIONS(68), 1, sym__S, ACTIONS(70), 1, anon_sym_LBRACE, [910] = 2, ACTIONS(68), 1, sym__S, ACTIONS(152), 1, anon_sym_RBRACE, [917] = 2, ACTIONS(68), 1, sym__S, ACTIONS(154), 1, anon_sym_RBRACE, [924] = 2, ACTIONS(68), 1, sym__S, ACTIONS(156), 1, anon_sym_LBRACE, [931] = 2, ACTIONS(68), 1, sym__S, ACTIONS(158), 1, sym_attribute_value, [938] = 2, ACTIONS(33), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [945] = 2, ACTIONS(68), 1, sym__S, ACTIONS(160), 1, anon_sym_LBRACE, [952] = 2, ACTIONS(3), 1, sym__S, ACTIONS(162), 1, sym_node_name, [959] = 2, ACTIONS(13), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [966] = 2, ACTIONS(37), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [973] = 2, ACTIONS(17), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [980] = 2, ACTIONS(31), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [987] = 2, ACTIONS(19), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [994] = 2, ACTIONS(68), 1, sym__S, ACTIONS(164), 1, anon_sym_RBRACE, [1001] = 2, ACTIONS(68), 1, sym__S, ACTIONS(166), 1, anon_sym_RBRACE, [1008] = 2, ACTIONS(68), 1, sym__S, ACTIONS(76), 1, anon_sym_LBRACE, [1015] = 2, ACTIONS(23), 1, anon_sym_RBRACE, ACTIONS(68), 1, sym__S, [1022] = 2, ACTIONS(68), 1, sym__S, ACTIONS(168), 1, anon_sym_RBRACE, [1029] = 2, ACTIONS(68), 1, sym__S, ACTIONS(78), 1, anon_sym_LBRACE, [1036] = 2, ACTIONS(68), 1, sym__S, ACTIONS(170), 1, ts_builtin_sym_end, [1043] = 2, ACTIONS(64), 1, anon_sym_LBRACE, ACTIONS(68), 1, sym__S, [1050] = 2, ACTIONS(68), 1, sym__S, ACTIONS(172), 1, anon_sym_LBRACE, [1057] = 2, ACTIONS(68), 1, sym__S, ACTIONS(174), 1, anon_sym_LBRACE, [1064] = 2, ACTIONS(3), 1, sym__S, ACTIONS(176), 1, sym_node_name, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, [SMALL_STATE(3)] = 28, [SMALL_STATE(4)] = 56, [SMALL_STATE(5)] = 84, [SMALL_STATE(6)] = 112, [SMALL_STATE(7)] = 140, [SMALL_STATE(8)] = 168, [SMALL_STATE(9)] = 196, [SMALL_STATE(10)] = 224, [SMALL_STATE(11)] = 252, [SMALL_STATE(12)] = 280, [SMALL_STATE(13)] = 308, [SMALL_STATE(14)] = 336, [SMALL_STATE(15)] = 360, [SMALL_STATE(16)] = 384, [SMALL_STATE(17)] = 406, [SMALL_STATE(18)] = 427, [SMALL_STATE(19)] = 448, [SMALL_STATE(20)] = 469, [SMALL_STATE(21)] = 490, [SMALL_STATE(22)] = 511, [SMALL_STATE(23)] = 532, [SMALL_STATE(24)] = 553, [SMALL_STATE(25)] = 574, [SMALL_STATE(26)] = 592, [SMALL_STATE(27)] = 610, [SMALL_STATE(28)] = 629, [SMALL_STATE(29)] = 642, [SMALL_STATE(30)] = 659, [SMALL_STATE(31)] = 672, [SMALL_STATE(32)] = 685, [SMALL_STATE(33)] = 698, [SMALL_STATE(34)] = 711, [SMALL_STATE(35)] = 724, [SMALL_STATE(36)] = 737, [SMALL_STATE(37)] = 750, [SMALL_STATE(38)] = 763, [SMALL_STATE(39)] = 773, [SMALL_STATE(40)] = 789, [SMALL_STATE(41)] = 799, [SMALL_STATE(42)] = 815, [SMALL_STATE(43)] = 824, [SMALL_STATE(44)] = 833, [SMALL_STATE(45)] = 842, [SMALL_STATE(46)] = 851, [SMALL_STATE(47)] = 860, [SMALL_STATE(48)] = 869, [SMALL_STATE(49)] = 878, [SMALL_STATE(50)] = 887, [SMALL_STATE(51)] = 896, [SMALL_STATE(52)] = 903, [SMALL_STATE(53)] = 910, [SMALL_STATE(54)] = 917, [SMALL_STATE(55)] = 924, [SMALL_STATE(56)] = 931, [SMALL_STATE(57)] = 938, [SMALL_STATE(58)] = 945, [SMALL_STATE(59)] = 952, [SMALL_STATE(60)] = 959, [SMALL_STATE(61)] = 966, [SMALL_STATE(62)] = 973, [SMALL_STATE(63)] = 980, [SMALL_STATE(64)] = 987, [SMALL_STATE(65)] = 994, [SMALL_STATE(66)] = 1001, [SMALL_STATE(67)] = 1008, [SMALL_STATE(68)] = 1015, [SMALL_STATE(69)] = 1022, [SMALL_STATE(70)] = 1029, [SMALL_STATE(71)] = 1036, [SMALL_STATE(72)] = 1043, [SMALL_STATE(73)] = 1050, [SMALL_STATE(74)] = 1057, [SMALL_STATE(75)] = 1064, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0, 0, 0), [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30), [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), [53] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(14), [56] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(59), [59] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(24), [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), [64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), [66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 1, 0, 0), [74] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), [76] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), [78] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute_list, 1, 0, 0), [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2, 0, 0), [86] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2, 0, 0), SHIFT_REPEAT(38), [89] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2, 0, 0), SHIFT_REPEAT(30), [92] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 6, 0, 0), [98] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 6, 0, 0), [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), [104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1, 0, 0), [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 4, 0, 0), [112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 4, 0, 0), [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 0), [116] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 3, 0, 0), [118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 4, 0, 0), [120] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 4, 0, 0), [122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 3, 0, 0), [124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 3, 0, 0), [126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 5, 0, 0), [128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 5, 0, 0), [130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 6, 0, 0), [132] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 6, 0, 0), [134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 5, 0, 0), [136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 5, 0, 0), [138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_text, 1, 0, 0), [140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 0), [144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0), [146] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0), SHIFT_REPEAT(29), [149] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0), SHIFT_REPEAT(41), [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), [154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), [156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), [158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), [160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), [162] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), [166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 2, 0, 0), [170] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), [172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), [174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), [176] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), }; #ifdef __cplusplus extern "C" { #endif #ifdef TREE_SITTER_HIDE_SYMBOLS #define TS_PUBLIC #elif defined(_WIN32) #define TS_PUBLIC __declspec(dllexport) #else #define TS_PUBLIC __attribute__((visibility("default"))) #endif TS_PUBLIC const TSLanguage *tree_sitter_gsp(void) { static const TSLanguage language = { .version = LANGUAGE_VERSION, .symbol_count = SYMBOL_COUNT, .alias_count = ALIAS_COUNT, .token_count = TOKEN_COUNT, .external_token_count = EXTERNAL_TOKEN_COUNT, .state_count = STATE_COUNT, .large_state_count = LARGE_STATE_COUNT, .production_id_count = PRODUCTION_ID_COUNT, .field_count = FIELD_COUNT, .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, .parse_table = &ts_parse_table[0][0], .small_parse_table = ts_small_parse_table, .small_parse_table_map = ts_small_parse_table_map, .parse_actions = ts_parse_actions, .symbol_names = ts_symbol_names, .symbol_metadata = ts_symbol_metadata, .public_symbol_map = ts_symbol_map, .alias_map = ts_non_terminal_alias_map, .alias_sequences = &ts_alias_sequences[0][0], .lex_modes = ts_lex_modes, .lex_fn = ts_lex, .primary_state_ids = ts_primary_state_ids, }; return &language; } #ifdef __cplusplus } #endif