Fix multiline comments & add highlights

pull/504/merge
ObserverOfTime 2023-08-06 12:35:04 +07:00
parent 3644348e66
commit eac9a3b601
No known key found for this signature in database
GPG Key ID: 8A2DEA1DBAEBCA9E
8 changed files with 457 additions and 165 deletions

@ -37,7 +37,6 @@
"scope": "source.xml",
"path": "tree-sitter-xml",
"highlights": "tree-sitter-xml/queries/highlights.scm",
"injections": "tree-sitter-xml/queries/injections.scm",
"file-types": [
"xml",
"svg",

@ -341,7 +341,7 @@ module.exports = grammar({
Comment: _ => prec.left(token(
// FIXME: disallow '--'
seq('<!--', /.*/, '-->')
seq('<!--', /(.|[\r\n])*/, '-->')
)),
_Eq: $ => seq(O($._S), '=', O($._S))

@ -1 +1,122 @@
; TODO: add queries
;; XML declaration
(XMLDecl "xml" @keyword)
(XMLDecl [ "version" "encoding" ] @property)
(XMLDecl (EncName) @string.special)
(XMLDecl (VersionNum) @number)
;; Processing instructions
(PI) @embedded
(PI (PITarget) @keyword)
;; Element declaration
(elementdecl
"ELEMENT" @keyword
(Name) @tag)
(contentspec
(_ (Name) @property))
"#PCDATA" @type.builtin
[ "EMPTY" "ANY" ] @string.special.symbol
[ "*" "?" "+" ] @operator
;; Entity declaration
(GEDecl
"ENTITY" @keyword
(Name) @constant)
(GEDecl (EntityValue) @string)
(NDataDecl
"NDATA" @keyword
(Name) @label)
;; Parsed entity declaration
(PEDecl
"ENTITY" @keyword
"%" @operator
(Name) @constant)
(PEDecl (EntityValue) @string)
;; Notation declaration
(NotationDecl
"NOTATION" @keyword
(Name) @constant)
(NotationDecl
(ExternalID
(SystemLiteral (URI) @string.special)))
;; Attlist declaration
(AttlistDecl
"ATTLIST" @keyword
(Name) @tag)
(AttDef (Name) @property)
(AttDef (Enumeration (Nmtoken) @string))
[
(StringType)
(TokenizedType)
] @type.builtin
(NotationType "NOTATION" @type.builtin)
[
"#REQUIRED"
"#IMPLIED"
"#FIXED"
] @attribute
;; Entities
(EntityRef) @constant
((EntityRef) @constant.builtin
(#any-of? @constant.builtin
"&amp;" "&lt;" "&gt;" "&quot;" "&apos;"))
(CharRef) @constant
(PEReference) @constant
;; External references
[ "PUBLIC" "SYSTEM" ] @keyword
(PubidLiteral) @string.special
(SystemLiteral (URI) @markup.link)
;; Delimiters & punctuation
[ "<?" "?>" "<!" ">" "]]>" ] @punctuation.delimiter
[ "(" ")" "[" ] @punctuation.bracket
[ "\"" "'" ] @punctuation.delimiter
[ "," "|" "=" ] @operator
;; Misc
[ "INCLUDE" "IGNORE" ] @keyword
(Comment) @comment
(ERROR) @error

@ -1850,7 +1850,7 @@
},
{
"type": "PATTERN",
"value": ".*"
"value": "(.|[\\r\\n])*"
},
{
"type": "STRING",

@ -1408,8 +1408,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
case 5:
if (lookahead == '%') ADVANCE(67);
if (lookahead == '(') ADVANCE(50);
if (lookahead == '1') ADVANCE(11);
if (lookahead == '?') ADVANCE(13);
if (lookahead == '1') ADVANCE(8);
if (lookahead == '?') ADVANCE(10);
if (lookahead == 'E') ADVANCE(103);
if (lookahead == 'I') ADVANCE(86);
if (lookahead == 'N') ADVANCE(101);
@ -1426,135 +1426,136 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
lookahead != '<') ADVANCE(128);
END_STATE();
case 7:
if (lookahead == '-') ADVANCE(10);
if (lookahead == '-') ADVANCE(42);
END_STATE();
case 8:
if (lookahead == '-') ADVANCE(8);
if (lookahead == '>') ADVANCE(138);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
if (lookahead == '.') ADVANCE(37);
END_STATE();
case 9:
if (lookahead == '-') ADVANCE(8);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
if (lookahead == '>') ADVANCE(47);
END_STATE();
case 10:
if (lookahead == '-') ADVANCE(9);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
if (lookahead == '>') ADVANCE(134);
END_STATE();
case 11:
if (lookahead == '.') ADVANCE(40);
if (lookahead == '?') ADVANCE(10);
if (sym_Name_character_set_1(lookahead)) ADVANCE(117);
END_STATE();
case 12:
if (lookahead == '>') ADVANCE(47);
if (lookahead == 'A') ADVANCE(32);
END_STATE();
case 13:
if (lookahead == '>') ADVANCE(134);
if (lookahead == 'A') ADVANCE(51);
END_STATE();
case 14:
if (lookahead == '?') ADVANCE(13);
if (sym_Name_character_set_1(lookahead)) ADVANCE(117);
if (lookahead == 'C') ADVANCE(15);
END_STATE();
case 15:
if (lookahead == 'A') ADVANCE(35);
if (lookahead == 'D') ADVANCE(12);
END_STATE();
case 16:
if (lookahead == 'A') ADVANCE(51);
if (lookahead == 'D') ADVANCE(66);
END_STATE();
case 17:
if (lookahead == 'C') ADVANCE(18);
if (lookahead == 'D') ADVANCE(65);
END_STATE();
case 18:
if (lookahead == 'D') ADVANCE(15);
if (lookahead == 'D') ADVANCE(64);
END_STATE();
case 19:
if (lookahead == 'D') ADVANCE(66);
if (lookahead == 'E') ADVANCE(30);
END_STATE();
case 20:
if (lookahead == 'D') ADVANCE(65);
if (lookahead == 'E') ADVANCE(16);
END_STATE();
case 21:
if (lookahead == 'D') ADVANCE(64);
if (lookahead == 'E') ADVANCE(17);
END_STATE();
case 22:
if (lookahead == 'E') ADVANCE(33);
if (lookahead == 'E') ADVANCE(18);
END_STATE();
case 23:
if (lookahead == 'E') ADVANCE(19);
if (lookahead == 'F') ADVANCE(24);
if (lookahead == 'I') ADVANCE(28);
if (lookahead == 'P') ADVANCE(14);
if (lookahead == 'R') ADVANCE(19);
END_STATE();
case 24:
if (lookahead == 'E') ADVANCE(20);
if (lookahead == 'I') ADVANCE(34);
END_STATE();
case 25:
if (lookahead == 'E') ADVANCE(21);
if (lookahead == 'I') ADVANCE(31);
END_STATE();
case 26:
if (lookahead == 'F') ADVANCE(27);
if (lookahead == 'I') ADVANCE(31);
if (lookahead == 'P') ADVANCE(17);
if (lookahead == 'R') ADVANCE(22);
if (lookahead == 'I') ADVANCE(21);
END_STATE();
case 27:
if (lookahead == 'I') ADVANCE(37);
if (lookahead == 'L') ADVANCE(26);
END_STATE();
case 28:
if (lookahead == 'I') ADVANCE(34);
if (lookahead == 'M') ADVANCE(29);
END_STATE();
case 29:
if (lookahead == 'I') ADVANCE(24);
if (lookahead == 'P') ADVANCE(27);
END_STATE();
case 30:
if (lookahead == 'L') ADVANCE(29);
if (lookahead == 'Q') ADVANCE(33);
END_STATE();
case 31:
if (lookahead == 'M') ADVANCE(32);
if (lookahead == 'R') ADVANCE(22);
END_STATE();
case 32:
if (lookahead == 'P') ADVANCE(30);
if (lookahead == 'T') ADVANCE(13);
END_STATE();
case 33:
if (lookahead == 'Q') ADVANCE(36);
if (lookahead == 'U') ADVANCE(25);
END_STATE();
case 34:
if (lookahead == 'R') ADVANCE(25);
if (lookahead == 'X') ADVANCE(20);
END_STATE();
case 35:
if (lookahead == 'T') ADVANCE(16);
if (lookahead == ']') ADVANCE(9);
END_STATE();
case 36:
if (lookahead == 'U') ADVANCE(28);
END_STATE();
case 37:
if (lookahead == 'X') ADVANCE(23);
END_STATE();
case 38:
if (lookahead == ']') ADVANCE(12);
END_STATE();
case 39:
if (lookahead == '\t' ||
lookahead == '\n' ||
lookahead == '\r' ||
lookahead == ' ') ADVANCE(85);
if (sym_Nmtoken_character_set_1(lookahead)) ADVANCE(121);
END_STATE();
case 40:
case 37:
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(135);
END_STATE();
case 41:
case 38:
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(126);
END_STATE();
case 42:
case 39:
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(136);
END_STATE();
case 40:
if (lookahead != 0 &&
lookahead != '-' &&
lookahead != '>') ADVANCE(42);
if (lookahead == '-') ADVANCE(40);
if (lookahead == '>') ADVANCE(138);
END_STATE();
case 41:
if (lookahead != 0 &&
lookahead != '-') ADVANCE(42);
if (lookahead == '-') ADVANCE(40);
END_STATE();
case 42:
if (lookahead != 0 &&
lookahead != '-') ADVANCE(42);
if (lookahead == '-') ADVANCE(41);
END_STATE();
case 43:
if (eof) ADVANCE(44);
if (lookahead == '"') ADVANCE(68);
if (lookahead == '#') ADVANCE(26);
if (lookahead == '#') ADVANCE(23);
if (lookahead == '%') ADVANCE(67);
if (lookahead == '\'') ADVANCE(82);
if (lookahead == '(') ADVANCE(50);
@ -1568,7 +1569,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
if (lookahead == '>') ADVANCE(49);
if (lookahead == '?') ADVANCE(55);
if (lookahead == '[') ADVANCE(46);
if (lookahead == ']') ADVANCE(38);
if (lookahead == ']') ADVANCE(35);
if (lookahead == '|') ADVANCE(52);
if (lookahead == '\t' ||
lookahead == '\n' ||
@ -1706,10 +1707,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 72:
ACCEPT_TOKEN(aux_sym_EntityValue_token1);
if (lookahead == 'F') ADVANCE(27);
if (lookahead == 'I') ADVANCE(31);
if (lookahead == 'P') ADVANCE(17);
if (lookahead == 'R') ADVANCE(22);
if (lookahead == 'F') ADVANCE(24);
if (lookahead == 'I') ADVANCE(28);
if (lookahead == 'P') ADVANCE(14);
if (lookahead == 'R') ADVANCE(19);
END_STATE();
case 73:
ACCEPT_TOKEN(aux_sym_EntityValue_token1);
@ -1737,7 +1738,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 75:
ACCEPT_TOKEN(aux_sym_EntityValue_token1);
if (lookahead == ']') ADVANCE(12);
if (lookahead == ']') ADVANCE(9);
END_STATE();
case 76:
ACCEPT_TOKEN(aux_sym_EntityValue_token1);
@ -2144,9 +2145,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 138:
ACCEPT_TOKEN(aux_sym_Comment_token1);
if (lookahead == '-') ADVANCE(9);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
lookahead != '-') ADVANCE(42);
if (lookahead == '-') ADVANCE(41);
END_STATE();
case 139:
ACCEPT_TOKEN(anon_sym_EQ);
@ -2625,13 +2626,13 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[187] = {.lex_state = 43},
[188] = {.lex_state = 43},
[189] = {.lex_state = 43},
[190] = {.lex_state = 39},
[190] = {.lex_state = 36},
[191] = {.lex_state = 43},
[192] = {.lex_state = 43},
[193] = {.lex_state = 43},
[194] = {.lex_state = 43},
[195] = {.lex_state = 43},
[196] = {.lex_state = 14},
[196] = {.lex_state = 11},
[197] = {.lex_state = 43},
[198] = {.lex_state = 43},
[199] = {.lex_state = 5},
@ -2645,11 +2646,11 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[207] = {.lex_state = 43},
[208] = {.lex_state = 43},
[209] = {.lex_state = 43},
[210] = {.lex_state = 39},
[210] = {.lex_state = 36},
[211] = {.lex_state = 43},
[212] = {.lex_state = 43},
[213] = {.lex_state = 43},
[214] = {.lex_state = 39},
[214] = {.lex_state = 36},
[215] = {.lex_state = 43},
[216] = {.lex_state = 43},
[217] = {.lex_state = 43},
@ -2667,7 +2668,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[229] = {.lex_state = 43},
[230] = {.lex_state = 43},
[231] = {.lex_state = 5},
[232] = {.lex_state = 39},
[232] = {.lex_state = 36},
[233] = {.lex_state = 43},
[234] = {.lex_state = 43},
[235] = {.lex_state = 43},
@ -2677,11 +2678,11 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[239] = {.lex_state = 43},
[240] = {.lex_state = 43},
[241] = {.lex_state = 43},
[242] = {.lex_state = 41},
[243] = {.lex_state = 39},
[242] = {.lex_state = 38},
[243] = {.lex_state = 36},
[244] = {.lex_state = 43},
[245] = {.lex_state = 43},
[246] = {.lex_state = 39},
[246] = {.lex_state = 36},
[247] = {.lex_state = 43},
[248] = {.lex_state = 43},
[249] = {.lex_state = 5},
@ -2691,9 +2692,9 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[253] = {.lex_state = 43},
[254] = {.lex_state = 43},
[255] = {.lex_state = 137},
[256] = {.lex_state = 42},
[256] = {.lex_state = 39},
[257] = {.lex_state = 43},
[258] = {.lex_state = 42},
[258] = {.lex_state = 39},
[259] = {.lex_state = 43},
[260] = {.lex_state = 43},
[261] = {.lex_state = 43},
@ -2730,14 +2731,14 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[292] = {.lex_state = 43},
[293] = {.lex_state = 43},
[294] = {.lex_state = 43},
[295] = {.lex_state = 41},
[295] = {.lex_state = 38},
[296] = {.lex_state = 43},
[297] = {.lex_state = 43},
[298] = {.lex_state = 43},
[299] = {.lex_state = 41},
[299] = {.lex_state = 38},
[300] = {.lex_state = 43},
[301] = {.lex_state = 43},
[302] = {.lex_state = 41},
[302] = {.lex_state = 38},
};
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {

@ -1 +1,171 @@
; TODO: add queries
;; XML declaration
(XMLDecl "xml" @keyword)
(XMLDecl [ "version" "encoding" "standalone" ] @property)
(XMLDecl (EncName) @string.special)
(XMLDecl (VersionNum) @number)
(XMLDecl [ "yes" "no" ] @boolean)
;; Processing instructions
(PI) @embedded
(PI (PITarget) @keyword)
;; Element declaration
(elementdecl
"ELEMENT" @keyword
(Name) @tag)
(contentspec
(_ (Name) @property))
"#PCDATA" @type.builtin
[ "EMPTY" "ANY" ] @string.special.symbol
[ "*" "?" "+" ] @operator
;; Entity declaration
(GEDecl
"ENTITY" @keyword
(Name) @constant)
(GEDecl (EntityValue) @string)
(NDataDecl
"NDATA" @keyword
(Name) @label)
;; Parsed entity declaration
(PEDecl
"ENTITY" @keyword
"%" @operator
(Name) @constant)
(PEDecl (EntityValue) @string)
;; Notation declaration
(NotationDecl
"NOTATION" @keyword
(Name) @constant)
(NotationDecl
(ExternalID
(SystemLiteral (URI) @string.special)))
;; Attlist declaration
(AttlistDecl
"ATTLIST" @keyword
(Name) @tag)
(AttDef (Name) @property)
(AttDef (Enumeration (Nmtoken) @string))
[
(StringType)
(TokenizedType)
] @type.builtin
(NotationType "NOTATION" @type.builtin)
[
"#REQUIRED"
"#IMPLIED"
"#FIXED"
] @attribute
;; Entities
(EntityRef) @constant
((EntityRef) @constant.builtin
(#any-of? @constant.builtin
"&amp;" "&lt;" "&gt;" "&quot;" "&apos;"))
(CharRef) @constant
(PEReference) @constant
;; External references
[ "PUBLIC" "SYSTEM" ] @keyword
(PubidLiteral) @string.special
(SystemLiteral (URI) @markup.link)
;; Processing instructions
(XmlModelPI "xml-model" @keyword)
(StyleSheetPI "xml-stylesheet" @keyword)
(PseudoAtt (Name) @property)
(PseudoAtt (PseudoAttValue) @string)
;; Doctype declaration
(doctypedecl "DOCTYPE" @keyword)
(doctypedecl (Name) @type)
;; Tags
(STag (Name) @tag)
(ETag (Name) @tag)
(EmptyElemTag (Name) @tag)
;; Attributes
(Attribute (Name) @property)
(Attribute (AttValue) @string)
;; Text
(CharData) @markup
(CDSect
(CDStart) @markup.heading
(CData) @markup.raw
"]]>" @markup.heading)
;; Delimiters & punctuation
[
"<?" "?>"
"<!" "]]>"
"<" ">"
"</" "/>"
] @punctuation.delimiter
[
"(" ")"
"[" "]"
] @punctuation.bracket
[ "\"" "'" ] @punctuation.delimiter
[ "," "|" "=" ] @operator
;; Misc
[ "INCLUDE" "IGNORE" ] @keyword
(Comment) @comment
(ERROR) @error

@ -1886,7 +1886,7 @@
},
{
"type": "PATTERN",
"value": ".*"
"value": "(.|[\\r\\n])*"
},
{
"type": "STRING",

@ -1651,11 +1651,11 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
case 4:
if (lookahead == '%') ADVANCE(67);
if (lookahead == '(') ADVANCE(53);
if (lookahead == '?') ADVANCE(13);
if (lookahead == '?') ADVANCE(10);
if (lookahead == 'E') ADVANCE(83);
if (lookahead == 'I') ADVANCE(74);
if (lookahead == 'N') ADVANCE(82);
if (lookahead == ']') ADVANCE(40);
if (lookahead == ']') ADVANCE(37);
if (lookahead == '\t' ||
lookahead == '\n' ||
lookahead == '\r' ||
@ -1674,148 +1674,149 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
if (lookahead == '[') ADVANCE(48);
END_STATE();
case 7:
if (lookahead == '-') ADVANCE(10);
if (lookahead == '-') ADVANCE(45);
END_STATE();
case 8:
if (lookahead == '-') ADVANCE(8);
if (lookahead == '>') ADVANCE(108);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
if (lookahead == '.') ADVANCE(39);
END_STATE();
case 9:
if (lookahead == '-') ADVANCE(8);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
if (lookahead == '>') ADVANCE(113);
END_STATE();
case 10:
if (lookahead == '-') ADVANCE(9);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
if (lookahead == '>') ADVANCE(104);
END_STATE();
case 11:
if (lookahead == '.') ADVANCE(42);
if (lookahead == '>') ADVANCE(50);
END_STATE();
case 12:
if (lookahead == '>') ADVANCE(113);
if (lookahead == '?') ADVANCE(10);
if (sym_Name_character_set_1(lookahead)) ADVANCE(90);
END_STATE();
case 13:
if (lookahead == '>') ADVANCE(104);
if (lookahead == 'A') ADVANCE(33);
END_STATE();
case 14:
if (lookahead == '>') ADVANCE(50);
if (lookahead == 'A') ADVANCE(54);
END_STATE();
case 15:
if (lookahead == '?') ADVANCE(13);
if (sym_Name_character_set_1(lookahead)) ADVANCE(90);
if (lookahead == 'C') ADVANCE(16);
END_STATE();
case 16:
if (lookahead == 'A') ADVANCE(36);
if (lookahead == 'D') ADVANCE(13);
END_STATE();
case 17:
if (lookahead == 'A') ADVANCE(54);
if (lookahead == 'D') ADVANCE(66);
END_STATE();
case 18:
if (lookahead == 'C') ADVANCE(19);
if (lookahead == 'D') ADVANCE(65);
END_STATE();
case 19:
if (lookahead == 'D') ADVANCE(16);
if (lookahead == 'D') ADVANCE(64);
END_STATE();
case 20:
if (lookahead == 'D') ADVANCE(66);
if (lookahead == 'E') ADVANCE(31);
END_STATE();
case 21:
if (lookahead == 'D') ADVANCE(65);
if (lookahead == 'E') ADVANCE(17);
END_STATE();
case 22:
if (lookahead == 'D') ADVANCE(64);
if (lookahead == 'E') ADVANCE(18);
END_STATE();
case 23:
if (lookahead == 'E') ADVANCE(34);
if (lookahead == 'E') ADVANCE(19);
END_STATE();
case 24:
if (lookahead == 'E') ADVANCE(20);
if (lookahead == 'F') ADVANCE(25);
if (lookahead == 'I') ADVANCE(29);
if (lookahead == 'P') ADVANCE(15);
if (lookahead == 'R') ADVANCE(20);
END_STATE();
case 25:
if (lookahead == 'E') ADVANCE(21);
if (lookahead == 'I') ADVANCE(35);
END_STATE();
case 26:
if (lookahead == 'E') ADVANCE(22);
if (lookahead == 'I') ADVANCE(32);
END_STATE();
case 27:
if (lookahead == 'F') ADVANCE(28);
if (lookahead == 'I') ADVANCE(32);
if (lookahead == 'P') ADVANCE(18);
if (lookahead == 'R') ADVANCE(23);
if (lookahead == 'I') ADVANCE(22);
END_STATE();
case 28:
if (lookahead == 'I') ADVANCE(38);
if (lookahead == 'L') ADVANCE(27);
END_STATE();
case 29:
if (lookahead == 'I') ADVANCE(35);
if (lookahead == 'M') ADVANCE(30);
END_STATE();
case 30:
if (lookahead == 'I') ADVANCE(25);
if (lookahead == 'P') ADVANCE(28);
END_STATE();
case 31:
if (lookahead == 'L') ADVANCE(30);
if (lookahead == 'Q') ADVANCE(34);
END_STATE();
case 32:
if (lookahead == 'M') ADVANCE(33);
if (lookahead == 'R') ADVANCE(23);
END_STATE();
case 33:
if (lookahead == 'P') ADVANCE(31);
if (lookahead == 'T') ADVANCE(14);
END_STATE();
case 34:
if (lookahead == 'Q') ADVANCE(37);
if (lookahead == 'U') ADVANCE(26);
END_STATE();
case 35:
if (lookahead == 'R') ADVANCE(26);
if (lookahead == 'X') ADVANCE(21);
END_STATE();
case 36:
if (lookahead == 'T') ADVANCE(17);
if (lookahead == ']') ADVANCE(118);
END_STATE();
case 37:
if (lookahead == 'U') ADVANCE(29);
if (lookahead == ']') ADVANCE(11);
END_STATE();
case 38:
if (lookahead == 'X') ADVANCE(24);
END_STATE();
case 39:
if (lookahead == ']') ADVANCE(118);
END_STATE();
case 40:
if (lookahead == ']') ADVANCE(14);
END_STATE();
case 41:
if (lookahead == '\t' ||
lookahead == '\n' ||
lookahead == '\r' ||
lookahead == ' ') ADVANCE(73);
if (sym_Nmtoken_character_set_1(lookahead)) ADVANCE(91);
END_STATE();
case 42:
case 39:
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(105);
END_STATE();
case 43:
case 40:
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'F') ||
('a' <= lookahead && lookahead <= 'f')) ADVANCE(96);
END_STATE();
case 44:
case 41:
if (('A' <= lookahead && lookahead <= 'Z') ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(106);
END_STATE();
case 45:
case 42:
if (lookahead != 0 &&
lookahead != '*' &&
lookahead != '>' &&
lookahead != ']' &&
lookahead != '|') ADVANCE(39);
lookahead != '|') ADVANCE(36);
END_STATE();
case 43:
if (lookahead != 0 &&
lookahead != '-' &&
lookahead != '>') ADVANCE(45);
if (lookahead == '-') ADVANCE(43);
if (lookahead == '>') ADVANCE(108);
END_STATE();
case 44:
if (lookahead != 0 &&
lookahead != '-') ADVANCE(45);
if (lookahead == '-') ADVANCE(43);
END_STATE();
case 45:
if (lookahead != 0 &&
lookahead != '-') ADVANCE(45);
if (lookahead == '-') ADVANCE(44);
END_STATE();
case 46:
if (eof) ADVANCE(47);
if (lookahead == '"') ADVANCE(68);
if (lookahead == '#') ADVANCE(27);
if (lookahead == '#') ADVANCE(24);
if (lookahead == '%') ADVANCE(67);
if (lookahead == '\'') ADVANCE(70);
if (lookahead == '(') ADVANCE(53);
@ -1823,8 +1824,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
if (lookahead == '*') ADVANCE(57);
if (lookahead == '+') ADVANCE(59);
if (lookahead == ',') ADVANCE(60);
if (lookahead == '/') ADVANCE(12);
if (lookahead == '1') ADVANCE(11);
if (lookahead == '/') ADVANCE(9);
if (lookahead == '1') ADVANCE(8);
if (lookahead == ';') ADVANCE(72);
if (lookahead == '<') ADVANCE(112);
if (lookahead == '=') ADVANCE(109);
@ -2090,9 +2091,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 108:
ACCEPT_TOKEN(aux_sym_Comment_token1);
if (lookahead == '-') ADVANCE(9);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(10);
lookahead != '-') ADVANCE(45);
if (lookahead == '-') ADVANCE(44);
END_STATE();
case 109:
ACCEPT_TOKEN(anon_sym_EQ);
@ -2131,7 +2132,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
END_STATE();
case 117:
ACCEPT_TOKEN(sym_CData);
if (lookahead == ']') ADVANCE(45);
if (lookahead == ']') ADVANCE(42);
if (lookahead != 0) ADVANCE(119);
END_STATE();
case 118:
@ -2740,27 +2741,27 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[189] = {.lex_state = 4},
[190] = {.lex_state = 4},
[191] = {.lex_state = 46},
[192] = {.lex_state = 15},
[192] = {.lex_state = 12},
[193] = {.lex_state = 46},
[194] = {.lex_state = 46},
[195] = {.lex_state = 46},
[196] = {.lex_state = 4},
[197] = {.lex_state = 15},
[197] = {.lex_state = 12},
[198] = {.lex_state = 4},
[199] = {.lex_state = 46},
[200] = {.lex_state = 46},
[201] = {.lex_state = 46},
[202] = {.lex_state = 15},
[202] = {.lex_state = 12},
[203] = {.lex_state = 4},
[204] = {.lex_state = 46},
[205] = {.lex_state = 46},
[206] = {.lex_state = 15},
[206] = {.lex_state = 12},
[207] = {.lex_state = 4},
[208] = {.lex_state = 46},
[209] = {.lex_state = 46},
[210] = {.lex_state = 46},
[211] = {.lex_state = 46},
[212] = {.lex_state = 15},
[212] = {.lex_state = 12},
[213] = {.lex_state = 46},
[214] = {.lex_state = 46},
[215] = {.lex_state = 46},
@ -2832,7 +2833,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[281] = {.lex_state = 46},
[282] = {.lex_state = 46},
[283] = {.lex_state = 46},
[284] = {.lex_state = 41},
[284] = {.lex_state = 38},
[285] = {.lex_state = 46},
[286] = {.lex_state = 46},
[287] = {.lex_state = 46},
@ -2859,14 +2860,14 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[308] = {.lex_state = 46},
[309] = {.lex_state = 46},
[310] = {.lex_state = 46},
[311] = {.lex_state = 41},
[311] = {.lex_state = 38},
[312] = {.lex_state = 46},
[313] = {.lex_state = 46},
[314] = {.lex_state = 46},
[315] = {.lex_state = 46},
[316] = {.lex_state = 4},
[317] = {.lex_state = 46},
[318] = {.lex_state = 15},
[318] = {.lex_state = 12},
[319] = {.lex_state = 46},
[320] = {.lex_state = 46},
[321] = {.lex_state = 46},
@ -2880,7 +2881,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[329] = {.lex_state = 46},
[330] = {.lex_state = 46},
[331] = {.lex_state = 46},
[332] = {.lex_state = 41},
[332] = {.lex_state = 38},
[333] = {.lex_state = 46},
[334] = {.lex_state = 46},
[335] = {.lex_state = 46},
@ -2889,7 +2890,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[338] = {.lex_state = 46},
[339] = {.lex_state = 46},
[340] = {.lex_state = 46},
[341] = {.lex_state = 41},
[341] = {.lex_state = 38},
[342] = {.lex_state = 46},
[343] = {.lex_state = 102},
[344] = {.lex_state = 4},
@ -2897,7 +2898,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[346] = {.lex_state = 46},
[347] = {.lex_state = 46},
[348] = {.lex_state = 46},
[349] = {.lex_state = 41},
[349] = {.lex_state = 38},
[350] = {.lex_state = 101},
[351] = {.lex_state = 46},
[352] = {.lex_state = 100},
@ -2908,7 +2909,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[357] = {.lex_state = 46},
[358] = {.lex_state = 46},
[359] = {.lex_state = 46},
[360] = {.lex_state = 41},
[360] = {.lex_state = 38},
[361] = {.lex_state = 46},
[362] = {.lex_state = 46},
[363] = {.lex_state = 46},
@ -2950,7 +2951,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[399] = {.lex_state = 46},
[400] = {.lex_state = 46},
[401] = {.lex_state = 46},
[402] = {.lex_state = 43},
[402] = {.lex_state = 40},
[403] = {.lex_state = 4},
[404] = {.lex_state = 46},
[405] = {.lex_state = 46},
@ -2958,10 +2959,10 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[407] = {.lex_state = 46},
[408] = {.lex_state = 46},
[409] = {.lex_state = 46},
[410] = {.lex_state = 44},
[410] = {.lex_state = 41},
[411] = {.lex_state = 46},
[412] = {.lex_state = 46},
[413] = {.lex_state = 44},
[413] = {.lex_state = 41},
[414] = {.lex_state = 46},
[415] = {.lex_state = 0},
[416] = {.lex_state = 46},
@ -2981,20 +2982,20 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
[430] = {.lex_state = 46},
[431] = {.lex_state = 46},
[432] = {.lex_state = 4},
[433] = {.lex_state = 43},
[433] = {.lex_state = 40},
[434] = {.lex_state = 46},
[435] = {.lex_state = 107},
[436] = {.lex_state = 46},
[437] = {.lex_state = 46},
[438] = {.lex_state = 4},
[439] = {.lex_state = 43},
[439] = {.lex_state = 40},
[440] = {.lex_state = 46},
[441] = {.lex_state = 46},
[442] = {.lex_state = 4},
[443] = {.lex_state = 43},
[443] = {.lex_state = 40},
[444] = {.lex_state = 46},
[445] = {.lex_state = 4},
[446] = {.lex_state = 43},
[446] = {.lex_state = 40},
};
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {