in tree-sitter-preproc/src/parser.c [417:1100]
static bool ts_lex(TSLexer *lexer, TSStateId state) {
START_LEXER();
eof = lexer->eof(lexer);
switch (state) {
case 0:
if (eof) ADVANCE(73);
ADVANCE_MAP(
'"', 15,
'#', 23,
'\'', 16,
'/', 17,
'<', 96,
'>', 97,
'\t', 13,
' ', 13,
);
if (('\n' <= lookahead && lookahead <= '\r')) SKIP(72);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(110);
if (('A' <= lookahead && lookahead <= 'Z') ||
lookahead == '_' ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(74);
END_STATE();
case 1:
if (lookahead == '\n') ADVANCE(102);
if (lookahead == 'd') ADVANCE(3);
if (lookahead == 'n') ADVANCE(2);
if (lookahead != 0) ADVANCE(5);
END_STATE();
case 2:
if (lookahead == '\n') ADVANCE(102);
if (lookahead == 'd') ADVANCE(3);
if (lookahead != 0) ADVANCE(5);
END_STATE();
case 3:
if (lookahead == '\n') ADVANCE(102);
if (lookahead == 'e') ADVANCE(4);
if (lookahead != 0) ADVANCE(5);
END_STATE();
case 4:
if (lookahead == '\n') ADVANCE(102);
if (lookahead == 'f') ADVANCE(5);
if (lookahead != 0) ADVANCE(5);
END_STATE();
case 5:
if (lookahead == '\n') ADVANCE(102);
if (lookahead != 0) ADVANCE(5);
END_STATE();
case 6:
if (lookahead == '\n') ADVANCE(104);
if (lookahead != 0) ADVANCE(6);
END_STATE();
case 7:
if (lookahead == '\n') ADVANCE(105);
if (lookahead != 0) ADVANCE(7);
END_STATE();
case 8:
if (lookahead == '\n') ADVANCE(103);
if (lookahead != 0) ADVANCE(8);
END_STATE();
case 9:
if (lookahead == '\n') ADVANCE(101);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') SKIP(9);
END_STATE();
case 10:
ADVANCE_MAP(
'\n', 78,
'"', 15,
'#', 83,
'\'', 16,
'/', 82,
'R', 75,
'\t', 79,
' ', 79,
);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(78);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(110);
if (lookahead != 0) ADVANCE(89);
END_STATE();
case 11:
ADVANCE_MAP(
'\n', 80,
'"', 15,
'#', 85,
'\'', 16,
'/', 82,
'R', 75,
'\t', 81,
' ', 81,
);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(80);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(110);
if (lookahead != 0) ADVANCE(89);
END_STATE();
case 12:
if (lookahead == '\r') ADVANCE(114);
if (lookahead != 0) ADVANCE(113);
END_STATE();
case 13:
ADVANCE_MAP(
'"', 15,
'#', 23,
'\'', 16,
'/', 17,
'<', 96,
'>', 97,
'\t', 13,
' ', 13,
);
if (('\n' <= lookahead && lookahead <= '\r')) SKIP(14);
if (('A' <= lookahead && lookahead <= 'Z') ||
lookahead == '_' ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(74);
END_STATE();
case 14:
ADVANCE_MAP(
'"', 15,
'#', 24,
'\'', 16,
'/', 17,
'<', 96,
'>', 97,
'\t', 14,
' ', 14,
);
if (('\n' <= lookahead && lookahead <= '\r')) SKIP(14);
if (('A' <= lookahead && lookahead <= 'Z') ||
lookahead == '_' ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(74);
END_STATE();
case 15:
if (lookahead == '"') ADVANCE(108);
if (lookahead == '\\') ADVANCE(69);
if (lookahead != 0) ADVANCE(15);
END_STATE();
case 16:
if (lookahead == '\'') ADVANCE(109);
if (lookahead == '\\') ADVANCE(70);
if (lookahead != 0) ADVANCE(16);
END_STATE();
case 17:
if (lookahead == '*') ADVANCE(19);
if (lookahead == '/') ADVANCE(113);
END_STATE();
case 18:
if (lookahead == '*') ADVANCE(18);
if (lookahead == '/') ADVANCE(112);
if (lookahead != 0) ADVANCE(19);
END_STATE();
case 19:
if (lookahead == '*') ADVANCE(18);
if (lookahead != 0) ADVANCE(19);
END_STATE();
case 20:
if (lookahead == 'a') ADVANCE(44);
END_STATE();
case 21:
if (lookahead == 'a') ADVANCE(107);
END_STATE();
case 22:
if (lookahead == 'c') ADVANCE(51);
END_STATE();
case 23:
ADVANCE_MAP(
'd', 32,
'e', 50,
'i', 39,
'l', 45,
'p', 60,
'u', 55,
'\t', 23,
' ', 23,
);
END_STATE();
case 24:
if (lookahead == 'd') ADVANCE(32);
if (lookahead == 'e') ADVANCE(49);
if (lookahead == 'i') ADVANCE(39);
if (lookahead == 'u') ADVANCE(55);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(24);
END_STATE();
case 25:
ADVANCE_MAP(
'd', 32,
'e', 54,
'i', 39,
'l', 45,
'p', 60,
'u', 55,
'\t', 25,
' ', 25,
);
END_STATE();
case 26:
ADVANCE_MAP(
'd', 32,
'e', 63,
'i', 39,
'l', 45,
'p', 60,
'u', 55,
'\t', 26,
' ', 26,
);
END_STATE();
case 27:
if (lookahead == 'd') ADVANCE(32);
if (lookahead == 'e') ADVANCE(53);
if (lookahead == 'i') ADVANCE(39);
if (lookahead == 'u') ADVANCE(55);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(27);
END_STATE();
case 28:
if (lookahead == 'd') ADVANCE(32);
if (lookahead == 'i') ADVANCE(39);
if (lookahead == 'u') ADVANCE(55);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(28);
END_STATE();
case 29:
if (lookahead == 'd') ADVANCE(48);
END_STATE();
case 30:
if (lookahead == 'd') ADVANCE(34);
END_STATE();
case 31:
if (lookahead == 'd') ADVANCE(37);
END_STATE();
case 32:
if (lookahead == 'e') ADVANCE(43);
END_STATE();
case 33:
if (lookahead == 'e') ADVANCE(107);
END_STATE();
case 34:
if (lookahead == 'e') ADVANCE(94);
END_STATE();
case 35:
if (lookahead == 'e') ADVANCE(66);
END_STATE();
case 36:
if (lookahead == 'e') ADVANCE(68);
END_STATE();
case 37:
if (lookahead == 'e') ADVANCE(40);
END_STATE();
case 38:
if (lookahead == 'e') ADVANCE(7);
END_STATE();
case 39:
if (lookahead == 'f') ADVANCE(1);
if (lookahead == 'n') ADVANCE(22);
END_STATE();
case 40:
if (lookahead == 'f') ADVANCE(67);
END_STATE();
case 41:
if (lookahead == 'f') ADVANCE(6);
END_STATE();
case 42:
if (lookahead == 'f') ADVANCE(8);
END_STATE();
case 43:
if (lookahead == 'f') ADVANCE(47);
END_STATE();
case 44:
if (lookahead == 'g') ADVANCE(52);
END_STATE();
case 45:
if (lookahead == 'i') ADVANCE(56);
END_STATE();
case 46:
if (lookahead == 'i') ADVANCE(41);
if (lookahead == 's') ADVANCE(38);
END_STATE();
case 47:
if (lookahead == 'i') ADVANCE(57);
END_STATE();
case 48:
if (lookahead == 'i') ADVANCE(42);
END_STATE();
case 49:
if (lookahead == 'l') ADVANCE(46);
if (lookahead == 'n') ADVANCE(29);
END_STATE();
case 50:
if (lookahead == 'l') ADVANCE(46);
if (lookahead == 'n') ADVANCE(29);
if (lookahead == 'r') ADVANCE(61);
END_STATE();
case 51:
if (lookahead == 'l') ADVANCE(65);
END_STATE();
case 52:
if (lookahead == 'm') ADVANCE(21);
END_STATE();
case 53:
if (lookahead == 'n') ADVANCE(29);
END_STATE();
case 54:
if (lookahead == 'n') ADVANCE(29);
if (lookahead == 'r') ADVANCE(61);
END_STATE();
case 55:
if (lookahead == 'n') ADVANCE(31);
END_STATE();
case 56:
if (lookahead == 'n') ADVANCE(33);
END_STATE();
case 57:
if (lookahead == 'n') ADVANCE(36);
END_STATE();
case 58:
if (lookahead == 'n') ADVANCE(35);
END_STATE();
case 59:
if (lookahead == 'o') ADVANCE(62);
END_STATE();
case 60:
if (lookahead == 'r') ADVANCE(20);
END_STATE();
case 61:
if (lookahead == 'r') ADVANCE(59);
END_STATE();
case 62:
if (lookahead == 'r') ADVANCE(107);
END_STATE();
case 63:
if (lookahead == 'r') ADVANCE(61);
END_STATE();
case 64:
if (lookahead == 't') ADVANCE(95);
END_STATE();
case 65:
if (lookahead == 'u') ADVANCE(30);
END_STATE();
case 66:
if (lookahead == 'x') ADVANCE(64);
END_STATE();
case 67:
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(106);
END_STATE();
case 68:
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(100);
END_STATE();
case 69:
if (lookahead != 0) ADVANCE(15);
END_STATE();
case 70:
if (lookahead != 0) ADVANCE(16);
END_STATE();
case 71:
if (eof) ADVANCE(73);
ADVANCE_MAP(
'\n', 77,
'"', 15,
'#', 86,
'\'', 16,
'/', 82,
'R', 75,
'\t', 76,
' ', 76,
);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(77);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(110);
if (lookahead != 0) ADVANCE(89);
END_STATE();
case 72:
if (eof) ADVANCE(73);
ADVANCE_MAP(
'"', 15,
'#', 24,
'\'', 16,
'/', 17,
'<', 96,
'>', 97,
'\t', 14,
' ', 14,
);
if (('\n' <= lookahead && lookahead <= '\r')) SKIP(72);
if (('A' <= lookahead && lookahead <= 'Z') ||
lookahead == '_' ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(74);
END_STATE();
case 73:
ACCEPT_TOKEN(ts_builtin_sym_end);
END_STATE();
case 74:
ACCEPT_TOKEN(sym_identifier);
if (('0' <= lookahead && lookahead <= '9') ||
('A' <= lookahead && lookahead <= 'Z') ||
lookahead == '_' ||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(74);
END_STATE();
case 75:
ACCEPT_TOKEN(sym_nothing);
END_STATE();
case 76:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '\n') ADVANCE(77);
if (lookahead == '#') ADVANCE(86);
if (lookahead == '/') ADVANCE(82);
if (lookahead == 'R') ADVANCE(75);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(76);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(77);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead)) ADVANCE(89);
END_STATE();
case 77:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '\n') ADVANCE(77);
if (lookahead == '#') ADVANCE(88);
if (lookahead == '/') ADVANCE(82);
if (lookahead == 'R') ADVANCE(75);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(77);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(77);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead)) ADVANCE(89);
END_STATE();
case 78:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '\n') ADVANCE(78);
if (lookahead == '#') ADVANCE(84);
if (lookahead == '/') ADVANCE(82);
if (lookahead == 'R') ADVANCE(75);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(78);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(78);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead)) ADVANCE(89);
END_STATE();
case 79:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '\n') ADVANCE(78);
if (lookahead == '#') ADVANCE(83);
if (lookahead == '/') ADVANCE(82);
if (lookahead == 'R') ADVANCE(75);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(79);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(78);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead)) ADVANCE(89);
END_STATE();
case 80:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '\n') ADVANCE(80);
if (lookahead == '#') ADVANCE(87);
if (lookahead == '/') ADVANCE(82);
if (lookahead == 'R') ADVANCE(75);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(80);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(80);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead)) ADVANCE(89);
END_STATE();
case 81:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '\n') ADVANCE(80);
if (lookahead == '#') ADVANCE(85);
if (lookahead == '/') ADVANCE(82);
if (lookahead == 'R') ADVANCE(75);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(81);
if ((0x0b <= lookahead && lookahead <= '\r')) ADVANCE(80);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead)) ADVANCE(89);
END_STATE();
case 82:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == '*') ADVANCE(19);
if (lookahead == '/') ADVANCE(113);
END_STATE();
case 83:
ACCEPT_TOKEN(sym_nothing);
ADVANCE_MAP(
'd', 32,
'e', 50,
'i', 39,
'l', 45,
'p', 60,
'u', 55,
'\t', 23,
' ', 23,
);
END_STATE();
case 84:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == 'd') ADVANCE(32);
if (lookahead == 'e') ADVANCE(49);
if (lookahead == 'i') ADVANCE(39);
if (lookahead == 'u') ADVANCE(55);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(24);
END_STATE();
case 85:
ACCEPT_TOKEN(sym_nothing);
ADVANCE_MAP(
'd', 32,
'e', 54,
'i', 39,
'l', 45,
'p', 60,
'u', 55,
'\t', 25,
' ', 25,
);
END_STATE();
case 86:
ACCEPT_TOKEN(sym_nothing);
ADVANCE_MAP(
'd', 32,
'e', 63,
'i', 39,
'l', 45,
'p', 60,
'u', 55,
'\t', 26,
' ', 26,
);
END_STATE();
case 87:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == 'd') ADVANCE(32);
if (lookahead == 'e') ADVANCE(53);
if (lookahead == 'i') ADVANCE(39);
if (lookahead == 'u') ADVANCE(55);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(27);
END_STATE();
case 88:
ACCEPT_TOKEN(sym_nothing);
if (lookahead == 'd') ADVANCE(32);
if (lookahead == 'i') ADVANCE(39);
if (lookahead == 'u') ADVANCE(55);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(28);
END_STATE();
case 89:
ACCEPT_TOKEN(sym_nothing);
if (lookahead != 0 &&
lookahead != '"' &&
lookahead != '#' &&
lookahead != '\'' &&
(lookahead < '/' || '9' < lookahead) &&
lookahead != 'R') ADVANCE(89);
END_STATE();
case 90:
ACCEPT_TOKEN(sym_preproc_continuation_line);
END_STATE();
case 91:
ACCEPT_TOKEN(sym_preproc_line);
if (lookahead == '\n') ADVANCE(90);
if (lookahead == '\r') ADVANCE(92);
if (lookahead == '\\') ADVANCE(91);
if (lookahead != 0) ADVANCE(93);
END_STATE();
case 92:
ACCEPT_TOKEN(sym_preproc_line);
if (lookahead == '\n') ADVANCE(90);
if (lookahead == '\\') ADVANCE(91);
if (lookahead != 0) ADVANCE(93);
END_STATE();
case 93:
ACCEPT_TOKEN(sym_preproc_line);
if (lookahead == '\\') ADVANCE(91);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(93);
END_STATE();
case 94:
ACCEPT_TOKEN(aux_sym_preproc_include_token1);
if (lookahead == '_') ADVANCE(58);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(95);
END_STATE();
case 95:
ACCEPT_TOKEN(aux_sym_preproc_include_token1);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(95);
END_STATE();
case 96:
ACCEPT_TOKEN(anon_sym_LT);
END_STATE();
case 97:
ACCEPT_TOKEN(anon_sym_GT);
END_STATE();
case 98:
ACCEPT_TOKEN(sym_path);
if (('\t' <= lookahead && lookahead <= '\r') ||
lookahead == ' ') ADVANCE(98);
if (lookahead != 0 &&
lookahead != '>') ADVANCE(99);
END_STATE();
case 99:
ACCEPT_TOKEN(sym_path);
if (lookahead != 0 &&
lookahead != '>') ADVANCE(99);
END_STATE();
case 100:
ACCEPT_TOKEN(aux_sym_define_token1);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(100);
END_STATE();
case 101:
ACCEPT_TOKEN(anon_sym_LF);
if (lookahead == '\n') ADVANCE(101);
END_STATE();
case 102:
ACCEPT_TOKEN(aux_sym_preproc_if_token1);
END_STATE();
case 103:
ACCEPT_TOKEN(aux_sym_preproc_if_token2);
END_STATE();
case 104:
ACCEPT_TOKEN(aux_sym_preproc_elif_token1);
END_STATE();
case 105:
ACCEPT_TOKEN(aux_sym_preproc_else_token1);
END_STATE();
case 106:
ACCEPT_TOKEN(aux_sym_undef_token1);
if (lookahead == '\t' ||
lookahead == ' ') ADVANCE(106);
END_STATE();
case 107:
ACCEPT_TOKEN(aux_sym_preproc_nothing_token1);
END_STATE();
case 108:
ACCEPT_TOKEN(aux_sym_string_literal_token1);
END_STATE();
case 109:
ACCEPT_TOKEN(aux_sym_char_literal_token1);
END_STATE();
case 110:
ACCEPT_TOKEN(sym_integer_literal);
if (lookahead == '\'') ADVANCE(111);
if (('0' <= lookahead && lookahead <= '9')) ADVANCE(110);
END_STATE();
case 111:
ACCEPT_TOKEN(sym_integer_literal);
if (lookahead == '\'' ||
('0' <= lookahead && lookahead <= '9')) ADVANCE(111);
END_STATE();
case 112:
ACCEPT_TOKEN(sym_comment);
END_STATE();
case 113:
ACCEPT_TOKEN(sym_comment);
if (lookahead == '\\') ADVANCE(12);
if (lookahead != 0 &&
lookahead != '\n') ADVANCE(113);
END_STATE();
case 114:
ACCEPT_TOKEN(sym_comment);
if (lookahead == '\\') ADVANCE(12);
if (lookahead != 0) ADVANCE(113);
END_STATE();
default:
return false;
}
}