static bool ts_lex()

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;
  }
}