diff options
| -rw-r--r-- | grammar.js | 8 | ||||
| -rw-r--r-- | src/grammar.json | 12 | ||||
| -rw-r--r-- | src/parser.c | 1381 | 
3 files changed, 911 insertions, 490 deletions
@@ -1,6 +1,6 @@  module.exports = grammar({  	name: 'gsp', - +	extras: $ => [$._S],  	rules: {  		source_file: $ => repeat($.node), @@ -43,10 +43,12 @@ module.exports = grammar({  			),  		), -		class_shorthand: $ => /\.[^\s]+/, -		id_shorthand: $ => /#[^\s]+/, +		class_shorthand: $ => /\.[^\p{White_Space}]+/u, +		id_shorthand: $ => /#[^\p{White_Space}]+/u,  		attribute_name: $ => /[a-zA-Z0-9_-]+/,  		attribute_value: $ => /"(\\.|[^"\\])*"/, + +		_S: $ => /\p{White_Space}*/u,  	},  }) diff --git a/src/grammar.json b/src/grammar.json index 150b1a5..ae2f4ab 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -180,11 +180,11 @@      },      "class_shorthand": {        "type": "PATTERN", -      "value": "\\.[^\\s]+" +      "value": "\\.[^\\p{White_Space}]+"      },      "id_shorthand": {        "type": "PATTERN", -      "value": "#[^\\s]+" +      "value": "#[^\\p{White_Space}]+"      },      "attribute_name": {        "type": "PATTERN", @@ -193,12 +193,16 @@      "attribute_value": {        "type": "PATTERN",        "value": "\"(\\\\.|[^\"\\\\])*\"" +    }, +    "_S": { +      "type": "PATTERN", +      "value": "\\p{White_Space}*"      }    },    "extras": [      { -      "type": "PATTERN", -      "value": "\\s" +      "type": "SYMBOL", +      "name": "_S"      }    ],    "conflicts": [], diff --git a/src/parser.c b/src/parser.c index 97761e6..f644014 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,11 +6,11 @@  #endif  #define LANGUAGE_VERSION 14 -#define STATE_COUNT 48 +#define STATE_COUNT 64  #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 22 +#define SYMBOL_COUNT 23  #define ALIAS_COUNT 0 -#define TOKEN_COUNT 13 +#define TOKEN_COUNT 14  #define EXTERNAL_TOKEN_COUNT 0  #define FIELD_COUNT 0  #define MAX_ALIAS_SEQUENCE_LENGTH 6 @@ -29,15 +29,16 @@ enum {    sym_id_shorthand = 10,    sym_attribute_name = 11,    sym_attribute_value = 12, -  sym_source_file = 13, -  sym_node = 14, -  sym_node_body = 15, -  sym_text_node = 16, -  sym_attribute_list = 17, -  sym_attribute = 18, -  aux_sym_source_file_repeat1 = 19, -  aux_sym_text_node_repeat1 = 20, -  aux_sym_attribute_list_repeat1 = 21, +  sym__S = 13, +  sym_source_file = 14, +  sym_node = 15, +  sym_node_body = 16, +  sym_text_node = 17, +  sym_attribute_list = 18, +  sym_attribute = 19, +  aux_sym_source_file_repeat1 = 20, +  aux_sym_text_node_repeat1 = 21, +  aux_sym_attribute_list_repeat1 = 22,  };  static const char * const ts_symbol_names[] = { @@ -54,6 +55,7 @@ static const char * const ts_symbol_names[] = {    [sym_id_shorthand] = "id_shorthand",    [sym_attribute_name] = "attribute_name",    [sym_attribute_value] = "attribute_value", +  [sym__S] = "_S",    [sym_source_file] = "source_file",    [sym_node] = "node",    [sym_node_body] = "node_body", @@ -79,6 +81,7 @@ static const TSSymbol ts_symbol_map[] = {    [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_node] = sym_node,    [sym_node_body] = sym_node_body, @@ -143,6 +146,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {      .visible = true,      .named = true,    }, +  [sym__S] = { +    .visible = false, +    .named = true, +  },    [sym_source_file] = {      .visible = true,      .named = true, @@ -194,50 +201,66 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {    [1] = 1,    [2] = 2,    [3] = 3, -  [4] = 4, -  [5] = 3, -  [6] = 2, -  [7] = 4, -  [8] = 8, -  [9] = 9, -  [10] = 9, -  [11] = 8, -  [12] = 12, +  [4] = 2, +  [5] = 5, +  [6] = 5, +  [7] = 3, +  [8] = 3, +  [9] = 2, +  [10] = 5, +  [11] = 11, +  [12] = 11,    [13] = 13, -  [14] = 14, -  [15] = 15, -  [16] = 16, +  [14] = 11, +  [15] = 13, +  [16] = 13,    [17] = 17,    [18] = 18,    [19] = 19,    [20] = 20,    [21] = 21,    [22] = 22, -  [23] = 23, +  [23] = 19,    [24] = 24,    [25] = 25,    [26] = 26, -  [27] = 18, -  [28] = 26, -  [29] = 24, -  [30] = 21, +  [27] = 27, +  [28] = 28, +  [29] = 29, +  [30] = 30,    [31] = 31,    [32] = 32,    [33] = 33, -  [34] = 34, +  [34] = 29,    [35] = 35, -  [36] = 36, -  [37] = 37, -  [38] = 38, -  [39] = 39, -  [40] = 36, -  [41] = 41, -  [42] = 33, -  [43] = 39, +  [36] = 33, +  [37] = 32, +  [38] = 29, +  [39] = 35, +  [40] = 33, +  [41] = 32, +  [42] = 35, +  [43] = 43,    [44] = 44, -  [45] = 37, -  [46] = 34, -  [47] = 35, +  [45] = 45, +  [46] = 46, +  [47] = 47, +  [48] = 44, +  [49] = 49, +  [50] = 44, +  [51] = 45, +  [52] = 45, +  [53] = 47, +  [54] = 54, +  [55] = 55, +  [56] = 55, +  [57] = 54, +  [58] = 47, +  [59] = 59, +  [60] = 55, +  [61] = 54, +  [62] = 49, +  [63] = 49,  };  static inline bool sym_node_name_character_set_1(int32_t c) { @@ -284,150 +307,248 @@ static inline bool sym_node_name_character_set_2(int32_t c) {          : (c <= 65533 || (c >= 65536 && c <= 983039)))))));  } +static inline bool sym_literal_text_character_set_1(int32_t c) { +  return (c < 8192 +    ? (c < 133 +      ? (c < ' ' +        ? (c >= '\t' && c <= '\r') +        : c <= ' ') +      : (c <= 133 || (c < 5760 +        ? c == 160 +        : c <= 5760))) +    : (c <= 8202 || (c < 8287 +      ? (c < 8239 +        ? (c >= 8232 && c <= 8233) +        : c <= 8239) +      : (c <= 8287 || c == 12288)))); +} + +static inline bool sym_id_shorthand_character_set_1(int32_t c) { +  return (c < 5760 +    ? (c < ' ' +      ? (c < '\t' +        ? c == 0 +        : c <= '\r') +      : (c <= ' ' || (c < 160 +        ? c == 133 +        : c <= 160))) +    : (c <= 5760 || (c < 8239 +      ? (c < 8232 +        ? (c >= 8192 && c <= 8202) +        : c <= 8233) +      : (c <= 8239 || (c < 12288 +        ? c == 8287 +        : c <= 12288))))); +} + +static inline bool sym__S_character_set_1(int32_t c) { +  return (c < 8192 +    ? (c < 133 +      ? (c < ' ' +        ? (c >= '\t' && c <= '\r') +        : c <= ' ') +      : (c <= 133 || c == 160)) +    : (c <= 8202 || (c < 8287 +      ? (c < 8239 +        ? (c >= 8232 && c <= 8233) +        : c <= 8239) +      : (c <= 8287 || c == 12288)))); +} +  static bool ts_lex(TSLexer *lexer, TSStateId state) {    START_LEXER();    eof = lexer->eof(lexer);    switch (state) {      case 0: -      if (eof) ADVANCE(7); +      ACCEPT_TOKEN(sym__S); +      if (eof) ADVANCE(5);        if (lookahead == '"') ADVANCE(1); -      if (lookahead == '#') ADVANCE(4); -      if (lookahead == '-') ADVANCE(12); -      if (lookahead == '.') ADVANCE(5); -      if (lookahead == '=') ADVANCE(13); -      if (lookahead == '>') ADVANCE(8); -      if (lookahead == '@') ADVANCE(14); -      if (lookahead == '{') ADVANCE(9); -      if (lookahead == '}') ADVANCE(10); -      if (lookahead == '\t' || -          lookahead == '\n' || -          lookahead == '\r' || -          lookahead == ' ') SKIP(0) -      if (sym_node_name_character_set_1(lookahead)) ADVANCE(11); +      if (lookahead == '#') ADVANCE(2); +      if (lookahead == '-') ADVANCE(11); +      if (lookahead == '.') ADVANCE(3); +      if (lookahead == '=') ADVANCE(12); +      if (lookahead == '>') ADVANCE(6); +      if (lookahead == '@') ADVANCE(13); +      if (lookahead == '{') ADVANCE(7); +      if (lookahead == '}') ADVANCE(8); +      if (lookahead == 5760) ADVANCE(9); +      if (sym__S_character_set_1(lookahead)) ADVANCE(30); +      if (sym_node_name_character_set_1(lookahead)) ADVANCE(10);        END_STATE();      case 1: -      if (lookahead == '"') ADVANCE(21); -      if (lookahead == '\\') ADVANCE(6); +      if (lookahead == '"') ADVANCE(20); +      if (lookahead == '\\') ADVANCE(4);        if (lookahead != 0) ADVANCE(1);        END_STATE();      case 2: -      if (lookahead == '#') ADVANCE(4); -      if (lookahead == '.') ADVANCE(5); -      if (lookahead == '=') ADVANCE(13); -      if (lookahead == '{') ADVANCE(9); -      if (lookahead == '\t' || -          lookahead == '\n' || -          lookahead == '\r' || -          lookahead == ' ') SKIP(2) -      if (lookahead == '-' || -          ('0' <= lookahead && lookahead <= '9') || -          ('A' <= lookahead && lookahead <= 'Z') || -          lookahead == '_' || -          ('a' <= lookahead && lookahead <= 'z')) ADVANCE(20); +      if (!sym_id_shorthand_character_set_1(lookahead)) ADVANCE(18);        END_STATE();      case 3: -      if (lookahead == '@') ADVANCE(14); -      if (lookahead == '\\') ADVANCE(17); -      if (lookahead == '}') ADVANCE(10); -      if (lookahead == '\t' || -          lookahead == '\n' || -          lookahead == '\r' || -          lookahead == ' ') ADVANCE(15); -      if (lookahead != 0) ADVANCE(16); +      if (!sym_id_shorthand_character_set_1(lookahead)) ADVANCE(17);        END_STATE();      case 4:        if (lookahead != 0 && -          lookahead != '\t' && -          lookahead != '\n' && -          lookahead != '\r' && -          lookahead != ' ') ADVANCE(19); +          lookahead != '\n') ADVANCE(1);        END_STATE();      case 5: -      if (lookahead != 0 && -          lookahead != '\t' && -          lookahead != '\n' && -          lookahead != '\r' && -          lookahead != ' ') ADVANCE(18); +      ACCEPT_TOKEN(ts_builtin_sym_end);        END_STATE();      case 6: -      if (lookahead != 0 && -          lookahead != '\n') ADVANCE(1); +      ACCEPT_TOKEN(anon_sym_GT);        END_STATE();      case 7: -      ACCEPT_TOKEN(ts_builtin_sym_end); +      ACCEPT_TOKEN(anon_sym_LBRACE);        END_STATE();      case 8: -      ACCEPT_TOKEN(anon_sym_GT); +      ACCEPT_TOKEN(anon_sym_RBRACE);        END_STATE();      case 9: -      ACCEPT_TOKEN(anon_sym_LBRACE); +      ACCEPT_TOKEN(sym_node_name); +      if (lookahead == 5760) ADVANCE(9); +      if (sym__S_character_set_1(lookahead)) ADVANCE(30); +      if (sym_node_name_character_set_2(lookahead)) ADVANCE(10);        END_STATE();      case 10: -      ACCEPT_TOKEN(anon_sym_RBRACE); -      END_STATE(); -    case 11:        ACCEPT_TOKEN(sym_node_name); -      if (sym_node_name_character_set_2(lookahead)) ADVANCE(11); +      if (sym_node_name_character_set_2(lookahead)) ADVANCE(10);        END_STATE(); -    case 12: +    case 11:        ACCEPT_TOKEN(anon_sym_DASH);        END_STATE(); -    case 13: +    case 12:        ACCEPT_TOKEN(anon_sym_EQ);        END_STATE(); -    case 14: +    case 13:        ACCEPT_TOKEN(anon_sym_AT);        END_STATE(); -    case 15: +    case 14:        ACCEPT_TOKEN(sym_literal_text); -      if (lookahead == '\\') ADVANCE(17); -      if (lookahead == '\t' || -          lookahead == '\n' || -          lookahead == '\r' || -          lookahead == ' ') ADVANCE(15); +      if (lookahead == '\\') ADVANCE(16); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(14);        if (lookahead != 0 &&            lookahead != '@' && -          lookahead != '}') ADVANCE(16); +          lookahead != '}') ADVANCE(15);        END_STATE(); -    case 16: +    case 15:        ACCEPT_TOKEN(sym_literal_text); -      if (lookahead == '\\') ADVANCE(17); +      if (lookahead == '\\') ADVANCE(16);        if (lookahead != 0 &&            lookahead != '@' && -          lookahead != '}') ADVANCE(16); +          lookahead != '}') ADVANCE(15);        END_STATE(); -    case 17: +    case 16:        ACCEPT_TOKEN(sym_literal_text); -      if (lookahead == '\\') ADVANCE(17); -      if (lookahead != 0) ADVANCE(16); +      if (lookahead == '\\') ADVANCE(16); +      if (lookahead != 0) ADVANCE(15);        END_STATE(); -    case 18: +    case 17:        ACCEPT_TOKEN(sym_class_shorthand); -      if (lookahead != 0 && -          lookahead != '\t' && -          lookahead != '\n' && -          lookahead != '\r' && -          lookahead != ' ') ADVANCE(18); +      if (!sym_id_shorthand_character_set_1(lookahead)) ADVANCE(17);        END_STATE(); -    case 19: +    case 18:        ACCEPT_TOKEN(sym_id_shorthand); -      if (lookahead != 0 && -          lookahead != '\t' && -          lookahead != '\n' && -          lookahead != '\r' && -          lookahead != ' ') ADVANCE(19); +      if (!sym_id_shorthand_character_set_1(lookahead)) ADVANCE(18);        END_STATE(); -    case 20: +    case 19:        ACCEPT_TOKEN(sym_attribute_name);        if (lookahead == '-' ||            ('0' <= lookahead && lookahead <= '9') ||            ('A' <= lookahead && lookahead <= 'Z') ||            lookahead == '_' || -          ('a' <= lookahead && lookahead <= 'z')) ADVANCE(20); +          ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19);        END_STATE(); -    case 21: +    case 20:        ACCEPT_TOKEN(sym_attribute_value);        END_STATE(); +    case 21: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '"') ADVANCE(1); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      END_STATE(); +    case 22: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '#') ADVANCE(2); +      if (lookahead == '.') ADVANCE(3); +      if (lookahead == '=') ADVANCE(12); +      if (lookahead == '{') ADVANCE(7); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      if (lookahead == '-' || +          ('0' <= lookahead && lookahead <= '9') || +          ('A' <= lookahead && lookahead <= 'Z') || +          lookahead == '_' || +          ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); +      END_STATE(); +    case 23: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '#') ADVANCE(2); +      if (lookahead == '.') ADVANCE(3); +      if (lookahead == '{') ADVANCE(7); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      if (lookahead == '-' || +          ('0' <= lookahead && lookahead <= '9') || +          ('A' <= lookahead && lookahead <= 'Z') || +          lookahead == '_' || +          ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); +      END_STATE(); +    case 24: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '-') ADVANCE(11); +      if (lookahead == '=') ADVANCE(12); +      if (lookahead == '>') ADVANCE(6); +      if (lookahead == '}') ADVANCE(8); +      if (lookahead == 5760) ADVANCE(9); +      if (sym__S_character_set_1(lookahead)) ADVANCE(30); +      if (sym_node_name_character_set_1(lookahead)) ADVANCE(10); +      END_STATE(); +    case 25: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '>') ADVANCE(6); +      if (lookahead == '}') ADVANCE(8); +      if (lookahead == 5760) ADVANCE(9); +      if (sym__S_character_set_1(lookahead)) ADVANCE(30); +      if (sym_node_name_character_set_1(lookahead)) ADVANCE(10); +      END_STATE(); +    case 26: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '@') ADVANCE(13); +      if (lookahead == '\\') ADVANCE(16); +      if (lookahead == '}') ADVANCE(8); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(14); +      if (lookahead != 0) ADVANCE(15); +      END_STATE(); +    case 27: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '{') ADVANCE(7); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      END_STATE(); +    case 28: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == '}') ADVANCE(8); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      END_STATE(); +    case 29: +      ACCEPT_TOKEN(sym__S); +      if (lookahead == 5760) ADVANCE(9); +      if (sym__S_character_set_1(lookahead)) ADVANCE(30); +      if (sym_node_name_character_set_1(lookahead)) ADVANCE(10); +      END_STATE(); +    case 30: +      ACCEPT_TOKEN(sym__S); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      END_STATE(); +    case 31: +      ACCEPT_TOKEN(sym__S); +      if (eof) ADVANCE(5); +      if (lookahead == '>') ADVANCE(6); +      if (lookahead == 5760) ADVANCE(9); +      if (sym__S_character_set_1(lookahead)) ADVANCE(30); +      if (sym_node_name_character_set_1(lookahead)) ADVANCE(10); +      END_STATE(); +    case 32: +      ACCEPT_TOKEN(sym__S); +      if (eof) ADVANCE(5); +      if (sym_literal_text_character_set_1(lookahead)) ADVANCE(30); +      END_STATE();      default:        return false;    } @@ -435,53 +556,69 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {  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 = 2}, -  [9] = {.lex_state = 2}, -  [10] = {.lex_state = 2}, -  [11] = {.lex_state = 2}, -  [12] = {.lex_state = 0}, -  [13] = {.lex_state = 2}, -  [14] = {.lex_state = 2}, -  [15] = {.lex_state = 0}, -  [16] = {.lex_state = 2}, -  [17] = {.lex_state = 0}, -  [18] = {.lex_state = 0}, -  [19] = {.lex_state = 3}, -  [20] = {.lex_state = 2}, -  [21] = {.lex_state = 0}, -  [22] = {.lex_state = 3}, -  [23] = {.lex_state = 2}, -  [24] = {.lex_state = 0}, -  [25] = {.lex_state = 3}, -  [26] = {.lex_state = 0}, -  [27] = {.lex_state = 3}, -  [28] = {.lex_state = 3}, -  [29] = {.lex_state = 3}, -  [30] = {.lex_state = 3}, -  [31] = {.lex_state = 0}, -  [32] = {.lex_state = 3}, -  [33] = {.lex_state = 0}, -  [34] = {.lex_state = 0}, -  [35] = {.lex_state = 0}, -  [36] = {.lex_state = 0}, -  [37] = {.lex_state = 0}, -  [38] = {.lex_state = 0}, -  [39] = {.lex_state = 0}, -  [40] = {.lex_state = 0}, -  [41] = {.lex_state = 0}, -  [42] = {.lex_state = 0}, -  [43] = {.lex_state = 0}, -  [44] = {.lex_state = 0}, -  [45] = {.lex_state = 0}, -  [46] = {.lex_state = 0}, -  [47] = {.lex_state = 0}, +  [1] = {.lex_state = 31}, +  [2] = {.lex_state = 24}, +  [3] = {.lex_state = 24}, +  [4] = {.lex_state = 24}, +  [5] = {.lex_state = 24}, +  [6] = {.lex_state = 24}, +  [7] = {.lex_state = 24}, +  [8] = {.lex_state = 24}, +  [9] = {.lex_state = 24}, +  [10] = {.lex_state = 24}, +  [11] = {.lex_state = 23}, +  [12] = {.lex_state = 23}, +  [13] = {.lex_state = 23}, +  [14] = {.lex_state = 23}, +  [15] = {.lex_state = 23}, +  [16] = {.lex_state = 23}, +  [17] = {.lex_state = 23}, +  [18] = {.lex_state = 23}, +  [19] = {.lex_state = 31}, +  [20] = {.lex_state = 22}, +  [21] = {.lex_state = 31}, +  [22] = {.lex_state = 25}, +  [23] = {.lex_state = 25}, +  [24] = {.lex_state = 26}, +  [25] = {.lex_state = 26}, +  [26] = {.lex_state = 26}, +  [27] = {.lex_state = 23}, +  [28] = {.lex_state = 23}, +  [29] = {.lex_state = 31}, +  [30] = {.lex_state = 26}, +  [31] = {.lex_state = 31}, +  [32] = {.lex_state = 31}, +  [33] = {.lex_state = 31}, +  [34] = {.lex_state = 25}, +  [35] = {.lex_state = 25}, +  [36] = {.lex_state = 25}, +  [37] = {.lex_state = 25}, +  [38] = {.lex_state = 26}, +  [39] = {.lex_state = 26}, +  [40] = {.lex_state = 26}, +  [41] = {.lex_state = 26}, +  [42] = {.lex_state = 31}, +  [43] = {.lex_state = 28}, +  [44] = {.lex_state = 28}, +  [45] = {.lex_state = 28}, +  [46] = {.lex_state = 21}, +  [47] = {.lex_state = 28}, +  [48] = {.lex_state = 28}, +  [49] = {.lex_state = 29}, +  [50] = {.lex_state = 28}, +  [51] = {.lex_state = 28}, +  [52] = {.lex_state = 28}, +  [53] = {.lex_state = 28}, +  [54] = {.lex_state = 27}, +  [55] = {.lex_state = 27}, +  [56] = {.lex_state = 27}, +  [57] = {.lex_state = 27}, +  [58] = {.lex_state = 28}, +  [59] = {.lex_state = 32}, +  [60] = {.lex_state = 27}, +  [61] = {.lex_state = 27}, +  [62] = {.lex_state = 29}, +  [63] = {.lex_state = 29},  };  static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -497,487 +634,765 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {      [sym_class_shorthand] = ACTIONS(1),      [sym_id_shorthand] = ACTIONS(1),      [sym_attribute_value] = ACTIONS(1), +    [sym__S] = ACTIONS(3),    },    [1] = { -    [sym_source_file] = STATE(44), -    [sym_node] = STATE(15), -    [aux_sym_source_file_repeat1] = STATE(15), -    [ts_builtin_sym_end] = ACTIONS(3), -    [anon_sym_GT] = ACTIONS(5), -    [sym_node_name] = ACTIONS(7), +    [sym_source_file] = STATE(59), +    [sym_node] = STATE(21), +    [aux_sym_source_file_repeat1] = STATE(21), +    [ts_builtin_sym_end] = ACTIONS(5), +    [anon_sym_GT] = ACTIONS(7), +    [sym_node_name] = ACTIONS(9), +    [sym__S] = ACTIONS(3),    },  };  static const uint16_t ts_small_parse_table[] = { -  [0] = 7, -    ACTIONS(5), 1, +  [0] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, -    ACTIONS(7), 1, -      sym_node_name, -    ACTIONS(9), 1, +    ACTIONS(13), 1,        anon_sym_RBRACE, -    STATE(41), 1, +    ACTIONS(15), 1, +      sym_node_name, +    STATE(43), 1,        sym_text_node, -    STATE(42), 1, +    STATE(52), 1,        sym_node_body, -    ACTIONS(11), 2, +    ACTIONS(17), 2,        anon_sym_DASH,        anon_sym_EQ, -    STATE(17), 2, +    STATE(22), 2,        sym_node,        aux_sym_source_file_repeat1, -  [24] = 7, -    ACTIONS(5), 1, +  [27] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, -    ACTIONS(7), 1, +    ACTIONS(15), 1,        sym_node_name, -    ACTIONS(13), 1, +    ACTIONS(19), 1,        anon_sym_RBRACE, -    STATE(41), 1, -      sym_text_node,      STATE(43), 1, +      sym_text_node, +    STATE(44), 1,        sym_node_body, -    ACTIONS(11), 2, +    ACTIONS(17), 2,        anon_sym_DASH,        anon_sym_EQ, -    STATE(17), 2, +    STATE(22), 2,        sym_node,        aux_sym_source_file_repeat1, -  [48] = 7, -    ACTIONS(5), 1, +  [54] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, -    ACTIONS(7), 1, -      sym_node_name,      ACTIONS(15), 1, +      sym_node_name, +    ACTIONS(21), 1,        anon_sym_RBRACE, -    STATE(40), 1, -      sym_node_body, -    STATE(41), 1, +    STATE(43), 1,        sym_text_node, -    ACTIONS(11), 2, +    STATE(45), 1, +      sym_node_body, +    ACTIONS(17), 2,        anon_sym_DASH,        anon_sym_EQ, -    STATE(17), 2, +    STATE(22), 2,        sym_node,        aux_sym_source_file_repeat1, -  [72] = 7, -    ACTIONS(5), 1, +  [81] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, -    ACTIONS(7), 1, +    ACTIONS(15), 1,        sym_node_name, -    ACTIONS(17), 1, +    ACTIONS(23), 1,        anon_sym_RBRACE, -    STATE(39), 1, +    STATE(43), 1, +      sym_text_node, +    STATE(47), 1,        sym_node_body, -    STATE(41), 1, +    ACTIONS(17), 2, +      anon_sym_DASH, +      anon_sym_EQ, +    STATE(22), 2, +      sym_node, +      aux_sym_source_file_repeat1, +  [108] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1, +      anon_sym_GT, +    ACTIONS(15), 1, +      sym_node_name, +    ACTIONS(25), 1, +      anon_sym_RBRACE, +    STATE(43), 1,        sym_text_node, -    ACTIONS(11), 2, +    STATE(58), 1, +      sym_node_body, +    ACTIONS(17), 2,        anon_sym_DASH,        anon_sym_EQ, -    STATE(17), 2, +    STATE(22), 2,        sym_node,        aux_sym_source_file_repeat1, -  [96] = 7, -    ACTIONS(5), 1, +  [135] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, -    ACTIONS(7), 1, +    ACTIONS(15), 1,        sym_node_name, -    ACTIONS(19), 1, +    ACTIONS(27), 1,        anon_sym_RBRACE, -    STATE(33), 1, +    STATE(43), 1, +      sym_text_node, +    STATE(48), 1,        sym_node_body, -    STATE(41), 1, +    ACTIONS(17), 2, +      anon_sym_DASH, +      anon_sym_EQ, +    STATE(22), 2, +      sym_node, +      aux_sym_source_file_repeat1, +  [162] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1, +      anon_sym_GT, +    ACTIONS(15), 1, +      sym_node_name, +    ACTIONS(29), 1, +      anon_sym_RBRACE, +    STATE(43), 1,        sym_text_node, -    ACTIONS(11), 2, +    STATE(50), 1, +      sym_node_body, +    ACTIONS(17), 2,        anon_sym_DASH,        anon_sym_EQ, -    STATE(17), 2, +    STATE(22), 2,        sym_node,        aux_sym_source_file_repeat1, -  [120] = 7, -    ACTIONS(5), 1, +  [189] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, -    ACTIONS(7), 1, +    ACTIONS(15), 1,        sym_node_name, -    ACTIONS(21), 1, +    ACTIONS(31), 1,        anon_sym_RBRACE, -    STATE(36), 1, +    STATE(43), 1, +      sym_text_node, +    STATE(51), 1,        sym_node_body, -    STATE(41), 1, +    ACTIONS(17), 2, +      anon_sym_DASH, +      anon_sym_EQ, +    STATE(22), 2, +      sym_node, +      aux_sym_source_file_repeat1, +  [216] = 8, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1, +      anon_sym_GT, +    ACTIONS(15), 1, +      sym_node_name, +    ACTIONS(33), 1, +      anon_sym_RBRACE, +    STATE(43), 1,        sym_text_node, -    ACTIONS(11), 2, +    STATE(53), 1, +      sym_node_body, +    ACTIONS(17), 2,        anon_sym_DASH,        anon_sym_EQ, -    STATE(17), 2, +    STATE(22), 2,        sym_node,        aux_sym_source_file_repeat1, -  [144] = 5, -    ACTIONS(23), 1, +  [243] = 6, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(35), 1,        anon_sym_LBRACE, -    ACTIONS(27), 1, +    ACTIONS(39), 1,        sym_attribute_name, -    STATE(46), 1, +    STATE(54), 1,        sym_attribute_list, -    ACTIONS(25), 2, +    ACTIONS(37), 2,        sym_class_shorthand,        sym_id_shorthand, -    STATE(14), 2, +    STATE(17), 2,        sym_attribute,        aux_sym_attribute_list_repeat1, -  [162] = 5, -    ACTIONS(27), 1, +  [264] = 6, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(39), 1,        sym_attribute_name, -    ACTIONS(29), 1, +    ACTIONS(41), 1,        anon_sym_LBRACE, -    STATE(37), 1, +    STATE(61), 1,        sym_attribute_list, -    ACTIONS(25), 2, +    ACTIONS(37), 2,        sym_class_shorthand,        sym_id_shorthand, -    STATE(14), 2, +    STATE(17), 2,        sym_attribute,        aux_sym_attribute_list_repeat1, -  [180] = 5, -    ACTIONS(27), 1, +  [285] = 6, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(39), 1,        sym_attribute_name, -    ACTIONS(31), 1, +    ACTIONS(43), 1,        anon_sym_LBRACE, -    STATE(45), 1, +    STATE(56), 1,        sym_attribute_list, -    ACTIONS(25), 2, +    ACTIONS(37), 2,        sym_class_shorthand,        sym_id_shorthand, -    STATE(14), 2, +    STATE(17), 2,        sym_attribute,        aux_sym_attribute_list_repeat1, -  [198] = 5, -    ACTIONS(27), 1, +  [306] = 6, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(39), 1,        sym_attribute_name, -    ACTIONS(33), 1, +    ACTIONS(45), 1,        anon_sym_LBRACE, -    STATE(34), 1, +    STATE(57), 1,        sym_attribute_list, -    ACTIONS(25), 2, +    ACTIONS(37), 2,        sym_class_shorthand,        sym_id_shorthand, -    STATE(14), 2, +    STATE(17), 2,        sym_attribute,        aux_sym_attribute_list_repeat1, -  [216] = 4, -    ACTIONS(37), 1, -      anon_sym_GT, -    ACTIONS(40), 1, -      sym_node_name, -    ACTIONS(35), 2, -      ts_builtin_sym_end, -      anon_sym_RBRACE, -    STATE(12), 2, -      sym_node, -      aux_sym_source_file_repeat1, -  [231] = 4, -    ACTIONS(43), 1, +  [327] = 6, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(39), 1, +      sym_attribute_name, +    ACTIONS(47), 1,        anon_sym_LBRACE, -    ACTIONS(48), 1, +    STATE(60), 1, +      sym_attribute_list, +    ACTIONS(37), 2, +      sym_class_shorthand, +      sym_id_shorthand, +    STATE(17), 2, +      sym_attribute, +      aux_sym_attribute_list_repeat1, +  [348] = 6, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(39), 1,        sym_attribute_name, -    ACTIONS(45), 2, +    ACTIONS(49), 1, +      anon_sym_LBRACE, +    STATE(55), 1, +      sym_attribute_list, +    ACTIONS(37), 2,        sym_class_shorthand,        sym_id_shorthand, -    STATE(13), 2, +    STATE(17), 2,        sym_attribute,        aux_sym_attribute_list_repeat1, -  [246] = 4, -    ACTIONS(27), 1, +  [369] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(39), 1,        sym_attribute_name,      ACTIONS(51), 1,        anon_sym_LBRACE, -    ACTIONS(25), 2, +    ACTIONS(37), 2,        sym_class_shorthand,        sym_id_shorthand, -    STATE(13), 2, +    STATE(18), 2,        sym_attribute,        aux_sym_attribute_list_repeat1, -  [261] = 4, -    ACTIONS(5), 1, -      anon_sym_GT, -    ACTIONS(7), 1, -      sym_node_name, +  [387] = 5, +    ACTIONS(3), 1, +      sym__S,      ACTIONS(53), 1, +      anon_sym_LBRACE, +    ACTIONS(58), 1, +      sym_attribute_name, +    ACTIONS(55), 2, +      sym_class_shorthand, +      sym_id_shorthand, +    STATE(18), 2, +      sym_attribute, +      aux_sym_attribute_list_repeat1, +  [405] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(61), 1,        ts_builtin_sym_end, -    STATE(12), 2, +    ACTIONS(63), 1, +      anon_sym_GT, +    ACTIONS(66), 1, +      sym_node_name, +    STATE(19), 2,        sym_node,        aux_sym_source_file_repeat1, -  [275] = 2, -    ACTIONS(57), 1, +  [422] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(71), 1,        anon_sym_EQ, -    ACTIONS(55), 4, +    ACTIONS(69), 4,        anon_sym_LBRACE,        sym_class_shorthand,        sym_id_shorthand,        sym_attribute_name, -  [285] = 4, -    ACTIONS(5), 1, -      anon_sym_GT, +  [435] = 5, +    ACTIONS(3), 1, +      sym__S,      ACTIONS(7), 1, +      anon_sym_GT, +    ACTIONS(9), 1,        sym_node_name, -    ACTIONS(59), 1, -      anon_sym_RBRACE, -    STATE(12), 2, +    ACTIONS(73), 1, +      ts_builtin_sym_end, +    STATE(19), 2,        sym_node,        aux_sym_source_file_repeat1, -  [299] = 1, -    ACTIONS(61), 4, -      ts_builtin_sym_end, +  [452] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(11), 1,        anon_sym_GT, +    ACTIONS(15), 1, +      sym_node_name, +    ACTIONS(75), 1, +      anon_sym_RBRACE, +    STATE(23), 2, +      sym_node, +      aux_sym_source_file_repeat1, +  [469] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(61), 1,        anon_sym_RBRACE, +    ACTIONS(77), 1, +      anon_sym_GT, +    ACTIONS(80), 1,        sym_node_name, -  [306] = 4, -    ACTIONS(63), 1, +    STATE(23), 2, +      sym_node, +      aux_sym_source_file_repeat1, +  [486] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(83), 1,        anon_sym_RBRACE, -    ACTIONS(65), 1, +    ACTIONS(85), 1,        anon_sym_AT, -    ACTIONS(67), 1, +    ACTIONS(88), 1,        sym_literal_text, -    STATE(22), 1, +    STATE(24), 1,        aux_sym_text_node_repeat1, -  [319] = 1, -    ACTIONS(55), 4, -      anon_sym_LBRACE, -      sym_class_shorthand, -      sym_id_shorthand, -      sym_attribute_name, -  [326] = 1, -    ACTIONS(69), 4, -      ts_builtin_sym_end, -      anon_sym_GT, +  [502] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(91), 1,        anon_sym_RBRACE, -      sym_node_name, -  [333] = 4, -    ACTIONS(65), 1, +    ACTIONS(93), 1,        anon_sym_AT, -    ACTIONS(71), 1, +    ACTIONS(95), 1, +      sym_literal_text, +    STATE(26), 1, +      aux_sym_text_node_repeat1, +  [518] = 5, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(93), 1, +      anon_sym_AT, +    ACTIONS(97), 1,        anon_sym_RBRACE, -    ACTIONS(73), 1, +    ACTIONS(99), 1,        sym_literal_text, -    STATE(25), 1, +    STATE(24), 1,        aux_sym_text_node_repeat1, -  [346] = 1, -    ACTIONS(75), 4, +  [534] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(101), 4, +      anon_sym_LBRACE, +      sym_class_shorthand, +      sym_id_shorthand, +      sym_attribute_name, +  [544] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(69), 4,        anon_sym_LBRACE,        sym_class_shorthand,        sym_id_shorthand,        sym_attribute_name, -  [353] = 1, -    ACTIONS(77), 4, +  [554] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(105), 1, +      sym_node_name, +    ACTIONS(103), 2,        ts_builtin_sym_end,        anon_sym_GT, +  [565] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(83), 3,        anon_sym_RBRACE, -      sym_node_name, -  [360] = 4, -    ACTIONS(79), 1, -      anon_sym_RBRACE, -    ACTIONS(81), 1,        anon_sym_AT, -    ACTIONS(84), 1,        sym_literal_text, -    STATE(25), 1, -      aux_sym_text_node_repeat1, -  [373] = 1, -    ACTIONS(87), 4, +  [574] = 4, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(107), 1, +      anon_sym_GT, +    ACTIONS(109), 1, +      sym_node_name, +    STATE(30), 1, +      sym_node, +  [587] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(113), 1, +      sym_node_name, +    ACTIONS(111), 2,        ts_builtin_sym_end,        anon_sym_GT, +  [598] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(117), 1, +      sym_node_name, +    ACTIONS(115), 2, +      ts_builtin_sym_end, +      anon_sym_GT, +  [609] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(105), 1, +      sym_node_name, +    ACTIONS(103), 2, +      anon_sym_GT,        anon_sym_RBRACE, +  [620] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(121), 1,        sym_node_name, -  [380] = 2, -    ACTIONS(61), 1, -      sym_literal_text, -    ACTIONS(89), 2, +    ACTIONS(119), 2, +      anon_sym_GT, +      anon_sym_RBRACE, +  [631] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(117), 1, +      sym_node_name, +    ACTIONS(115), 2, +      anon_sym_GT, +      anon_sym_RBRACE, +  [642] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(113), 1, +      sym_node_name, +    ACTIONS(111), 2, +      anon_sym_GT, +      anon_sym_RBRACE, +  [653] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(103), 3,        anon_sym_RBRACE,        anon_sym_AT, -  [388] = 2, -    ACTIONS(87), 1,        sym_literal_text, -    ACTIONS(91), 2, +  [662] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(119), 3,        anon_sym_RBRACE,        anon_sym_AT, -  [396] = 2, -    ACTIONS(77), 1,        sym_literal_text, -    ACTIONS(93), 2, +  [671] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(115), 3,        anon_sym_RBRACE,        anon_sym_AT, -  [404] = 2, -    ACTIONS(69), 1,        sym_literal_text, -    ACTIONS(95), 2, +  [680] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(111), 3,        anon_sym_RBRACE,        anon_sym_AT, -  [412] = 3, -    ACTIONS(97), 1, -      anon_sym_GT, -    ACTIONS(99), 1, -      sym_node_name, -    STATE(32), 1, -      sym_node, -  [422] = 2, -    ACTIONS(101), 1,        sym_literal_text, -    ACTIONS(79), 2, +  [689] = 3, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(121), 1, +      sym_node_name, +    ACTIONS(119), 2, +      ts_builtin_sym_end, +      anon_sym_GT, +  [700] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(75), 1,        anon_sym_RBRACE, -      anon_sym_AT, -  [430] = 1, -    ACTIONS(103), 1, +  [707] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(21), 1,        anon_sym_RBRACE, -  [434] = 1, -    ACTIONS(105), 1, -      anon_sym_LBRACE, -  [438] = 1, -    ACTIONS(107), 1, -      sym_node_name, -  [442] = 1, -    ACTIONS(19), 1, +  [714] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(23), 1,        anon_sym_RBRACE, -  [446] = 1, -    ACTIONS(33), 1, -      anon_sym_LBRACE, -  [450] = 1, -    ACTIONS(109), 1, +  [721] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(123), 1,        sym_attribute_value, -  [454] = 1, -    ACTIONS(15), 1, +  [728] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(125), 1,        anon_sym_RBRACE, -  [458] = 1, -    ACTIONS(9), 1, +  [735] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(13), 1,        anon_sym_RBRACE, -  [462] = 1, -    ACTIONS(59), 1, +  [742] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(127), 1, +      sym_node_name, +  [749] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(31), 1,        anon_sym_RBRACE, -  [466] = 1, -    ACTIONS(111), 1, +  [756] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(33), 1,        anon_sym_RBRACE, -  [470] = 1, -    ACTIONS(21), 1, +  [763] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(25), 1,        anon_sym_RBRACE, -  [474] = 1, -    ACTIONS(113), 1, +  [770] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(129), 1, +      anon_sym_RBRACE, +  [777] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(131), 1, +      anon_sym_LBRACE, +  [784] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(35), 1, +      anon_sym_LBRACE, +  [791] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(45), 1, +      anon_sym_LBRACE, +  [798] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(133), 1, +      anon_sym_LBRACE, +  [805] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(135), 1, +      anon_sym_RBRACE, +  [812] = 2, +    ACTIONS(137), 1,        ts_builtin_sym_end, -  [478] = 1, -    ACTIONS(23), 1, +    ACTIONS(139), 1, +      sym__S, +  [819] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(41), 1,        anon_sym_LBRACE, -  [482] = 1, -    ACTIONS(115), 1, +  [826] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(141), 1,        anon_sym_LBRACE, -  [486] = 1, -    ACTIONS(117), 1, +  [833] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(143), 1, +      sym_node_name, +  [840] = 2, +    ACTIONS(3), 1, +      sym__S, +    ACTIONS(145), 1,        sym_node_name,  };  static const uint32_t ts_small_parse_table_map[] = {    [SMALL_STATE(2)] = 0, -  [SMALL_STATE(3)] = 24, -  [SMALL_STATE(4)] = 48, -  [SMALL_STATE(5)] = 72, -  [SMALL_STATE(6)] = 96, -  [SMALL_STATE(7)] = 120, -  [SMALL_STATE(8)] = 144, -  [SMALL_STATE(9)] = 162, -  [SMALL_STATE(10)] = 180, -  [SMALL_STATE(11)] = 198, -  [SMALL_STATE(12)] = 216, -  [SMALL_STATE(13)] = 231, -  [SMALL_STATE(14)] = 246, -  [SMALL_STATE(15)] = 261, -  [SMALL_STATE(16)] = 275, -  [SMALL_STATE(17)] = 285, -  [SMALL_STATE(18)] = 299, -  [SMALL_STATE(19)] = 306, -  [SMALL_STATE(20)] = 319, -  [SMALL_STATE(21)] = 326, -  [SMALL_STATE(22)] = 333, -  [SMALL_STATE(23)] = 346, -  [SMALL_STATE(24)] = 353, -  [SMALL_STATE(25)] = 360, -  [SMALL_STATE(26)] = 373, -  [SMALL_STATE(27)] = 380, -  [SMALL_STATE(28)] = 388, -  [SMALL_STATE(29)] = 396, -  [SMALL_STATE(30)] = 404, -  [SMALL_STATE(31)] = 412, -  [SMALL_STATE(32)] = 422, -  [SMALL_STATE(33)] = 430, -  [SMALL_STATE(34)] = 434, -  [SMALL_STATE(35)] = 438, -  [SMALL_STATE(36)] = 442, -  [SMALL_STATE(37)] = 446, -  [SMALL_STATE(38)] = 450, -  [SMALL_STATE(39)] = 454, -  [SMALL_STATE(40)] = 458, -  [SMALL_STATE(41)] = 462, -  [SMALL_STATE(42)] = 466, -  [SMALL_STATE(43)] = 470, -  [SMALL_STATE(44)] = 474, -  [SMALL_STATE(45)] = 478, -  [SMALL_STATE(46)] = 482, -  [SMALL_STATE(47)] = 486, +  [SMALL_STATE(3)] = 27, +  [SMALL_STATE(4)] = 54, +  [SMALL_STATE(5)] = 81, +  [SMALL_STATE(6)] = 108, +  [SMALL_STATE(7)] = 135, +  [SMALL_STATE(8)] = 162, +  [SMALL_STATE(9)] = 189, +  [SMALL_STATE(10)] = 216, +  [SMALL_STATE(11)] = 243, +  [SMALL_STATE(12)] = 264, +  [SMALL_STATE(13)] = 285, +  [SMALL_STATE(14)] = 306, +  [SMALL_STATE(15)] = 327, +  [SMALL_STATE(16)] = 348, +  [SMALL_STATE(17)] = 369, +  [SMALL_STATE(18)] = 387, +  [SMALL_STATE(19)] = 405, +  [SMALL_STATE(20)] = 422, +  [SMALL_STATE(21)] = 435, +  [SMALL_STATE(22)] = 452, +  [SMALL_STATE(23)] = 469, +  [SMALL_STATE(24)] = 486, +  [SMALL_STATE(25)] = 502, +  [SMALL_STATE(26)] = 518, +  [SMALL_STATE(27)] = 534, +  [SMALL_STATE(28)] = 544, +  [SMALL_STATE(29)] = 554, +  [SMALL_STATE(30)] = 565, +  [SMALL_STATE(31)] = 574, +  [SMALL_STATE(32)] = 587, +  [SMALL_STATE(33)] = 598, +  [SMALL_STATE(34)] = 609, +  [SMALL_STATE(35)] = 620, +  [SMALL_STATE(36)] = 631, +  [SMALL_STATE(37)] = 642, +  [SMALL_STATE(38)] = 653, +  [SMALL_STATE(39)] = 662, +  [SMALL_STATE(40)] = 671, +  [SMALL_STATE(41)] = 680, +  [SMALL_STATE(42)] = 689, +  [SMALL_STATE(43)] = 700, +  [SMALL_STATE(44)] = 707, +  [SMALL_STATE(45)] = 714, +  [SMALL_STATE(46)] = 721, +  [SMALL_STATE(47)] = 728, +  [SMALL_STATE(48)] = 735, +  [SMALL_STATE(49)] = 742, +  [SMALL_STATE(50)] = 749, +  [SMALL_STATE(51)] = 756, +  [SMALL_STATE(52)] = 763, +  [SMALL_STATE(53)] = 770, +  [SMALL_STATE(54)] = 777, +  [SMALL_STATE(55)] = 784, +  [SMALL_STATE(56)] = 791, +  [SMALL_STATE(57)] = 798, +  [SMALL_STATE(58)] = 805, +  [SMALL_STATE(59)] = 812, +  [SMALL_STATE(60)] = 819, +  [SMALL_STATE(61)] = 826, +  [SMALL_STATE(62)] = 833, +  [SMALL_STATE(63)] = 840,  };  static const TSParseActionEntry ts_parse_actions[] = {    [0] = {.entry = {.count = 0, .reusable = false}},    [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), -  [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), -  [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), -  [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), -  [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), -  [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), -  [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), -  [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), -  [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), -  [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), -  [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), -  [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), -  [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), -  [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), -  [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), -  [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), -  [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), -  [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), -  [37] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(35), -  [40] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(9), -  [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2), -  [45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2), SHIFT_REPEAT(20), -  [48] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2), SHIFT_REPEAT(16), +  [3] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), +  [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), +  [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), +  [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), +  [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), +  [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), +  [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), +  [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), +  [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), +  [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), +  [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), +  [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), +  [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), +  [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), +  [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), +  [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), +  [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), +  [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), +  [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), +  [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), +  [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), +  [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), +  [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), +  [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),    [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute_list, 1), -  [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), -  [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1), -  [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), -  [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 1), -  [61] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 3), -  [63] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_text_node, 1), -  [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31), -  [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), -  [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 4), -  [71] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_text_node, 2), -  [73] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), -  [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), -  [77] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 5), -  [79] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_text_node_repeat1, 2), -  [81] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_text_node_repeat1, 2), SHIFT_REPEAT(31), -  [84] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_text_node_repeat1, 2), SHIFT_REPEAT(25), -  [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 6), -  [89] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 3), -  [91] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 6), -  [93] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 5), -  [95] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 4), -  [97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), -  [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), -  [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_text_node_repeat1, 2), -  [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), -  [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), -  [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), -  [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), -  [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), -  [113] = {.entry = {.count = 1, .reusable = true}},  ACCEPT_INPUT(), -  [115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), -  [117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), +  [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2), +  [55] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2), SHIFT_REPEAT(28), +  [58] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attribute_list_repeat1, 2), SHIFT_REPEAT(20), +  [61] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), +  [63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(49), +  [66] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(16), +  [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1), +  [71] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), +  [73] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), +  [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 1), +  [77] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(62), +  [80] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(13), +  [83] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_text_node_repeat1, 2), +  [85] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_text_node_repeat1, 2), SHIFT_REPEAT(31), +  [88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_text_node_repeat1, 2), SHIFT_REPEAT(24), +  [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_text_node, 1), +  [93] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), +  [95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), +  [97] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_text_node, 2), +  [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), +  [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), +  [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 3), +  [105] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 3), +  [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), +  [109] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), +  [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 6), +  [113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 6), +  [115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 5), +  [117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 5), +  [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 4), +  [121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 4), +  [123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), +  [125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), +  [127] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), +  [129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), +  [131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), +  [133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), +  [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), +  [137] = {.entry = {.count = 1, .reusable = true}},  ACCEPT_INPUT(), +  [139] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), +  [141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), +  [143] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), +  [145] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12),  };  #ifdef __cplusplus  |