diff --git a/examples/parsers/arithmetic.c b/examples/parsers/arithmetic.c index 884f825b..fd9251e5 100644 --- a/examples/parsers/arithmetic.c +++ b/examples/parsers/arithmetic.c @@ -35,95 +35,95 @@ HIDDEN_SYMBOLS(11) = { LEX_FN() { START_LEXER(); - switch (LEX_STATE()) { + switch (lex_state) { case 0: LEX_ERROR(); case 1: - if (LOOKAHEAD_CHAR() == '+') + if (lookahead == '+') ADVANCE(2); LEX_ERROR(); case 2: ACCEPT_TOKEN(ts_sym_plus); case 3: - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(4); LEX_ERROR(); case 4: ACCEPT_TOKEN(ts_aux_sym_token2); case 5: - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(4); - if (LOOKAHEAD_CHAR() == '+') + if (lookahead == '+') ADVANCE(2); LEX_ERROR(); case 6: - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(4); - if (LOOKAHEAD_CHAR() == '*') + if (lookahead == '*') ADVANCE(7); - if (LOOKAHEAD_CHAR() == '+') + if (lookahead == '+') ADVANCE(2); LEX_ERROR(); case 7: ACCEPT_TOKEN(ts_sym_times); case 8: - if (LOOKAHEAD_CHAR() == '(') + if (lookahead == '(') ADVANCE(9); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(10); - if (('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(12); LEX_ERROR(); case 9: ACCEPT_TOKEN(ts_aux_sym_token1); case 10: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(11); ACCEPT_TOKEN(ts_sym_number); case 11: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(11); ACCEPT_TOKEN(ts_sym_number); case 12: - if (('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(13); ACCEPT_TOKEN(ts_sym_variable); case 13: - if (('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(13); ACCEPT_TOKEN(ts_sym_variable); case 14: - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(4); - if (LOOKAHEAD_CHAR() == '*') + if (lookahead == '*') ADVANCE(7); LEX_ERROR(); case 15: - if (LOOKAHEAD_CHAR() == '*') + if (lookahead == '*') ADVANCE(7); - if (LOOKAHEAD_CHAR() == '+') + if (lookahead == '+') ADVANCE(2); LEX_ERROR(); case 16: - if (LOOKAHEAD_CHAR() == '*') + if (lookahead == '*') ADVANCE(7); LEX_ERROR(); case ts_lex_state_error: - if (LOOKAHEAD_CHAR() == '(') + if (lookahead == '(') ADVANCE(9); - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(4); - if (LOOKAHEAD_CHAR() == '*') + if (lookahead == '*') ADVANCE(7); - if (LOOKAHEAD_CHAR() == '+') + if (lookahead == '+') ADVANCE(2); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(10); - if (('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(12); LEX_ERROR(); default: diff --git a/examples/parsers/javascript.c b/examples/parsers/javascript.c index e9f85a4a..8a8c4740 100644 --- a/examples/parsers/javascript.c +++ b/examples/parsers/javascript.c @@ -99,449 +99,449 @@ HIDDEN_SYMBOLS(35) = { LEX_FN() { START_LEXER(); - switch (LEX_STATE()) { + switch (lex_state) { case 0: - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(1); LEX_ERROR(); case 1: ACCEPT_TOKEN(ts_aux_sym_token4); case 2: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') || - ('g' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'h') || - ('j' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'm') || - ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 's') || - (LOOKAHEAD_CHAR() == 'u') || - ('w' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'h') || + ('j' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + (lookahead == 'u') || + ('w' <= lookahead && lookahead <= 'z')) ADVANCE(18); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(20); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(25); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(26); - if (LOOKAHEAD_CHAR() == 'i') + if (lookahead == 'i') ADVANCE(31); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(34); - if ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'n') + if ('o' <= lookahead && lookahead <= 'n') ADVANCE(41); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(42); - if ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') + if ('u' <= lookahead && lookahead <= 't') ADVANCE(49); - if (LOOKAHEAD_CHAR() == 'v') + if (lookahead == 'v') ADVANCE(50); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(55); LEX_ERROR(); case 3: - if (LOOKAHEAD_CHAR() == 'a') + if (lookahead == 'a') ADVANCE(4); LEX_ERROR(); case 4: - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(5); LEX_ERROR(); case 5: - if (LOOKAHEAD_CHAR() == 's') + if (lookahead == 's') ADVANCE(6); LEX_ERROR(); case 6: - if (LOOKAHEAD_CHAR() == 'e') + if (lookahead == 'e') ADVANCE(7); LEX_ERROR(); case 7: ACCEPT_TOKEN(ts_sym_false); case 8: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(9); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(15); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(17); LEX_ERROR(); case 9: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(12); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(14); LEX_ERROR(); case 10: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(12); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(14); LEX_ERROR(); case 11: ACCEPT_TOKEN(ts_sym_string); case 12: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(13); - if ('#' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\"') + if ('#' <= lookahead && lookahead <= '\"') ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(12); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(14); LEX_ERROR(); case 13: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(12); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(14); ACCEPT_TOKEN(ts_sym_string); case 14: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(10); LEX_ERROR(); case 15: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(16); - if ('#' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\"') + if ('#' <= lookahead && lookahead <= '\"') ADVANCE(9); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(12); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(14); LEX_ERROR(); case 16: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(12); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(14); ACCEPT_TOKEN(ts_sym_string); case 17: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(9); LEX_ERROR(); case 18: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym_identifier); case 19: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym_identifier); case 20: - if (LOOKAHEAD_CHAR() == '.') + if (lookahead == '.') ADVANCE(21); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(24); ACCEPT_TOKEN(ts_sym_number); case 21: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(22); LEX_ERROR(); case 22: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(23); ACCEPT_TOKEN(ts_sym_number); case 23: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(23); ACCEPT_TOKEN(ts_sym_number); case 24: - if (LOOKAHEAD_CHAR() == '.') + if (lookahead == '.') ADVANCE(21); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(24); ACCEPT_TOKEN(ts_sym_number); case 25: ACCEPT_TOKEN(ts_aux_sym_token10); case 26: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('b' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'a') + if (lookahead == 'a') ADVANCE(27); ACCEPT_TOKEN(ts_sym_identifier); case 27: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'k') || - ('m' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'k') || + ('m' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(28); ACCEPT_TOKEN(ts_sym_identifier); case 28: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'r') || - ('t' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'r') || + ('t' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 's') + if (lookahead == 's') ADVANCE(29); ACCEPT_TOKEN(ts_sym_identifier); case 29: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'd') || - ('f' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'd') || + ('f' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'e') + if (lookahead == 'e') ADVANCE(30); ACCEPT_TOKEN(ts_sym_identifier); case 30: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym_identifier); case 31: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') || - ('g' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(33); ACCEPT_TOKEN(ts_sym_identifier); case 32: ACCEPT_TOKEN(ts_sym__IF); case 33: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym__IF); case 34: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') || - ('v' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 't') || + ('v' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'u') + if (lookahead == 'u') ADVANCE(35); - if ('v' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'u') + if ('v' <= lookahead && lookahead <= 'u') ADVANCE(40); ACCEPT_TOKEN(ts_sym_identifier); case 35: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'k') || - ('m' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'k') || + ('m' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(36); - if ('m' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'l') + if ('m' <= lookahead && lookahead <= 'l') ADVANCE(39); ACCEPT_TOKEN(ts_sym_identifier); case 36: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'k') || - ('m' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'k') || + ('m' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(37); - if ('m' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'l') + if ('m' <= lookahead && lookahead <= 'l') ADVANCE(38); ACCEPT_TOKEN(ts_sym_identifier); case 37: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym_identifier); case 38: ACCEPT_TOKEN(ts_sym_null); case 39: - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(38); LEX_ERROR(); case 40: - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(39); LEX_ERROR(); case 41: - if (LOOKAHEAD_CHAR() == 'u') + if (lookahead == 'u') ADVANCE(40); LEX_ERROR(); case 42: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'q') || - ('s' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'q') || + ('s' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'r') + if (lookahead == 'r') ADVANCE(43); - if ('s' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'r') + if ('s' <= lookahead && lookahead <= 'r') ADVANCE(48); ACCEPT_TOKEN(ts_sym_identifier); case 43: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') || - ('v' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 't') || + ('v' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'u') + if (lookahead == 'u') ADVANCE(44); - if ('v' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'u') + if ('v' <= lookahead && lookahead <= 'u') ADVANCE(47); ACCEPT_TOKEN(ts_sym_identifier); case 44: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'd') || - ('f' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'd') || + ('f' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'e') + if (lookahead == 'e') ADVANCE(45); - if ('f' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') + if ('f' <= lookahead && lookahead <= 'e') ADVANCE(46); ACCEPT_TOKEN(ts_sym_identifier); case 45: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym_identifier); case 46: ACCEPT_TOKEN(ts_sym_true); case 47: - if (LOOKAHEAD_CHAR() == 'e') + if (lookahead == 'e') ADVANCE(46); LEX_ERROR(); case 48: - if (LOOKAHEAD_CHAR() == 'u') + if (lookahead == 'u') ADVANCE(47); LEX_ERROR(); case 49: - if (LOOKAHEAD_CHAR() == 'r') + if (lookahead == 'r') ADVANCE(48); LEX_ERROR(); case 50: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('b' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'a') + if (lookahead == 'a') ADVANCE(53); ACCEPT_TOKEN(ts_sym_identifier); case 51: - if (LOOKAHEAD_CHAR() == 'r') + if (lookahead == 'r') ADVANCE(52); LEX_ERROR(); case 52: ACCEPT_TOKEN(ts_sym__VAR); case 53: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'q') || - ('s' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'q') || + ('s' <= lookahead && lookahead <= 'z')) ADVANCE(19); - if (LOOKAHEAD_CHAR() == 'r') + if (lookahead == 'r') ADVANCE(54); ACCEPT_TOKEN(ts_sym_identifier); case 54: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(19); ACCEPT_TOKEN(ts_sym__VAR); case 55: ACCEPT_TOKEN(ts_aux_sym_token5); case 56: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') || - ('g' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'h') || - ('j' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'm') || - ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 's') || - (LOOKAHEAD_CHAR() == 'u') || - ('w' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'h') || + ('j' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + (lookahead == 'u') || + ('w' <= lookahead && lookahead <= 'z')) ADVANCE(18); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(20); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(25); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(26); - if (LOOKAHEAD_CHAR() == 'i') + if (lookahead == 'i') ADVANCE(31); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(34); - if ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'n') + if ('o' <= lookahead && lookahead <= 'n') ADVANCE(41); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(42); - if ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') + if ('u' <= lookahead && lookahead <= 't') ADVANCE(49); - if (LOOKAHEAD_CHAR() == 'v') + if (lookahead == 'v') ADVANCE(50); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(55); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(57); LEX_ERROR(); case 57: ACCEPT_TOKEN(ts_aux_sym_token6); case 58: - if (LOOKAHEAD_CHAR() == '\n') + if (lookahead == '\n') ADVANCE(59); - if (LOOKAHEAD_CHAR() == ';') + if (lookahead == ';') ADVANCE(60); LEX_ERROR(); case 59: @@ -549,9 +549,9 @@ LEX_FN() { case 60: ACCEPT_TOKEN(ts_aux_sym_token1); case 61: - if (LOOKAHEAD_CHAR() == ',') + if (lookahead == ',') ADVANCE(62); - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(63); LEX_ERROR(); case 62: @@ -559,112 +559,112 @@ LEX_FN() { case 63: ACCEPT_TOKEN(ts_aux_sym_token11); case 64: - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(63); LEX_ERROR(); case 65: - if (LOOKAHEAD_CHAR() == ',') + if (lookahead == ',') ADVANCE(62); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(57); LEX_ERROR(); case 66: - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(57); LEX_ERROR(); case 67: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') || - ('g' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'm') || - ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 's') || - ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + ('u' <= lookahead && lookahead <= 'z')) ADVANCE(18); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(20); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(25); - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(63); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(26); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(34); - if ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'n') + if ('o' <= lookahead && lookahead <= 'n') ADVANCE(41); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(42); - if ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') + if ('u' <= lookahead && lookahead <= 't') ADVANCE(49); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(55); LEX_ERROR(); case 68: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') || - ('g' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'm') || - ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 's') || - ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + ('u' <= lookahead && lookahead <= 'z')) ADVANCE(18); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(20); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(25); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(26); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(34); - if ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'n') + if ('o' <= lookahead && lookahead <= 'n') ADVANCE(41); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(42); - if ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') + if ('u' <= lookahead && lookahead <= 't') ADVANCE(49); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(55); LEX_ERROR(); case 69: - if (LOOKAHEAD_CHAR() == ':') + if (lookahead == ':') ADVANCE(70); LEX_ERROR(); case 70: ACCEPT_TOKEN(ts_aux_sym_token8); case 71: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(57); LEX_ERROR(); case 72: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); LEX_ERROR(); case 73: - if (LOOKAHEAD_CHAR() == '=') + if (lookahead == '=') ADVANCE(74); LEX_ERROR(); case 74: ACCEPT_TOKEN(ts_aux_sym_token7); case 75: - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(18); LEX_ERROR(); case 76: - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(55); LEX_ERROR(); case 77: - if (LOOKAHEAD_CHAR() == '(') + if (lookahead == '(') ADVANCE(78); LEX_ERROR(); case 78: @@ -672,55 +672,55 @@ LEX_FN() { case 79: LEX_ERROR(); case ts_lex_state_error: - if (LOOKAHEAD_CHAR() == '\n') + if (lookahead == '\n') ADVANCE(59); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(8); - if ((LOOKAHEAD_CHAR() == '$') || - ('A' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'Z') || - (LOOKAHEAD_CHAR() == '_') || - ('a' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'e') || - ('g' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'h') || - ('j' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'm') || - ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 's') || - (LOOKAHEAD_CHAR() == 'u') || - ('w' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'z')) + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'h') || + ('j' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + (lookahead == 'u') || + ('w' <= lookahead && lookahead <= 'z')) ADVANCE(18); - if (LOOKAHEAD_CHAR() == '(') + if (lookahead == '(') ADVANCE(78); - if (LOOKAHEAD_CHAR() == ')') + if (lookahead == ')') ADVANCE(1); - if (LOOKAHEAD_CHAR() == ',') + if (lookahead == ',') ADVANCE(62); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(20); - if (LOOKAHEAD_CHAR() == ':') + if (lookahead == ':') ADVANCE(70); - if (LOOKAHEAD_CHAR() == ';') + if (lookahead == ';') ADVANCE(60); - if (LOOKAHEAD_CHAR() == '=') + if (lookahead == '=') ADVANCE(74); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(25); - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(63); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(26); - if (LOOKAHEAD_CHAR() == 'i') + if (lookahead == 'i') ADVANCE(31); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(34); - if ('o' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 'n') + if ('o' <= lookahead && lookahead <= 'n') ADVANCE(41); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(42); - if ('u' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= 't') + if ('u' <= lookahead && lookahead <= 't') ADVANCE(49); - if (LOOKAHEAD_CHAR() == 'v') + if (lookahead == 'v') ADVANCE(50); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(55); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(57); LEX_ERROR(); default: diff --git a/examples/parsers/json.c b/examples/parsers/json.c index eb185eb6..87a0dc4f 100644 --- a/examples/parsers/json.c +++ b/examples/parsers/json.c @@ -55,13 +55,13 @@ HIDDEN_SYMBOLS(18) = { LEX_FN() { START_LEXER(); - switch (LEX_STATE()) { + switch (lex_state) { case 0: LEX_ERROR(); case 1: - if (LOOKAHEAD_CHAR() == ',') + if (lookahead == ',') ADVANCE(2); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(3); LEX_ERROR(); case 2: @@ -69,194 +69,194 @@ LEX_FN() { case 3: ACCEPT_TOKEN(ts_aux_sym_token4); case 4: - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(3); LEX_ERROR(); case 5: - if (LOOKAHEAD_CHAR() == ',') + if (lookahead == ',') ADVANCE(2); - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(6); LEX_ERROR(); case 6: ACCEPT_TOKEN(ts_aux_sym_token6); case 7: - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(6); LEX_ERROR(); case 8: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(9); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(19); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(24); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(25); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(30); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(34); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(38); LEX_ERROR(); case 9: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(16); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(18); LEX_ERROR(); case 10: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(12); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(13); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(15); LEX_ERROR(); case 11: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(12); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(13); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(15); LEX_ERROR(); case 12: ACCEPT_TOKEN(ts_sym_string); case 13: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(14); - if ('#' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\"') + if ('#' <= lookahead && lookahead <= '\"') ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(13); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(15); LEX_ERROR(); case 14: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(12); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(13); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(15); ACCEPT_TOKEN(ts_sym_string); case 15: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(11); LEX_ERROR(); case 16: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(17); - if ('#' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\"') + if ('#' <= lookahead && lookahead <= '\"') ADVANCE(10); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(13); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(15); LEX_ERROR(); case 17: - if (!((LOOKAHEAD_CHAR() == '\"') || - (LOOKAHEAD_CHAR() == '\\'))) + if (!((lookahead == '\"') || + (lookahead == '\\'))) ADVANCE(11); - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(12); - if (LOOKAHEAD_CHAR() == '\\') + if (lookahead == '\\') ADVANCE(13); - if (']' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '\\') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(15); ACCEPT_TOKEN(ts_sym_string); case 18: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(10); LEX_ERROR(); case 19: - if (LOOKAHEAD_CHAR() == '.') + if (lookahead == '.') ADVANCE(20); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(23); ACCEPT_TOKEN(ts_sym_number); case 20: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(21); LEX_ERROR(); case 21: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(22); ACCEPT_TOKEN(ts_sym_number); case 22: - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(22); ACCEPT_TOKEN(ts_sym_number); case 23: - if (LOOKAHEAD_CHAR() == '.') + if (lookahead == '.') ADVANCE(20); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(23); ACCEPT_TOKEN(ts_sym_number); case 24: ACCEPT_TOKEN(ts_aux_sym_token5); case 25: - if (LOOKAHEAD_CHAR() == 'a') + if (lookahead == 'a') ADVANCE(26); LEX_ERROR(); case 26: - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(27); LEX_ERROR(); case 27: - if (LOOKAHEAD_CHAR() == 's') + if (lookahead == 's') ADVANCE(28); LEX_ERROR(); case 28: - if (LOOKAHEAD_CHAR() == 'e') + if (lookahead == 'e') ADVANCE(29); LEX_ERROR(); case 29: ACCEPT_TOKEN(ts_sym_false); case 30: - if (LOOKAHEAD_CHAR() == 'u') + if (lookahead == 'u') ADVANCE(31); LEX_ERROR(); case 31: - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(32); LEX_ERROR(); case 32: - if (LOOKAHEAD_CHAR() == 'l') + if (lookahead == 'l') ADVANCE(33); LEX_ERROR(); case 33: ACCEPT_TOKEN(ts_sym_null); case 34: - if (LOOKAHEAD_CHAR() == 'r') + if (lookahead == 'r') ADVANCE(35); LEX_ERROR(); case 35: - if (LOOKAHEAD_CHAR() == 'u') + if (lookahead == 'u') ADVANCE(36); LEX_ERROR(); case 36: - if (LOOKAHEAD_CHAR() == 'e') + if (lookahead == 'e') ADVANCE(37); LEX_ERROR(); case 37: @@ -264,61 +264,61 @@ LEX_FN() { case 38: ACCEPT_TOKEN(ts_aux_sym_token1); case 39: - if (LOOKAHEAD_CHAR() == ':') + if (lookahead == ':') ADVANCE(40); LEX_ERROR(); case 40: ACCEPT_TOKEN(ts_aux_sym_token2); case 41: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(9); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(3); LEX_ERROR(); case 42: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(9); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(19); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(24); - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(6); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(25); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(30); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(34); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(38); LEX_ERROR(); case 43: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(9); LEX_ERROR(); case ts_lex_state_error: - if (LOOKAHEAD_CHAR() == '\"') + if (lookahead == '\"') ADVANCE(9); - if (LOOKAHEAD_CHAR() == ',') + if (lookahead == ',') ADVANCE(2); - if ('0' <= LOOKAHEAD_CHAR() && LOOKAHEAD_CHAR() <= '9') + if ('0' <= lookahead && lookahead <= '9') ADVANCE(19); - if (LOOKAHEAD_CHAR() == ':') + if (lookahead == ':') ADVANCE(40); - if (LOOKAHEAD_CHAR() == '[') + if (lookahead == '[') ADVANCE(24); - if (LOOKAHEAD_CHAR() == ']') + if (lookahead == ']') ADVANCE(6); - if (LOOKAHEAD_CHAR() == 'f') + if (lookahead == 'f') ADVANCE(25); - if (LOOKAHEAD_CHAR() == 'n') + if (lookahead == 'n') ADVANCE(30); - if (LOOKAHEAD_CHAR() == 't') + if (lookahead == 't') ADVANCE(34); - if (LOOKAHEAD_CHAR() == '{') + if (lookahead == '{') ADVANCE(38); - if (LOOKAHEAD_CHAR() == '}') + if (lookahead == '}') ADVANCE(3); LEX_ERROR(); default: diff --git a/include/tree_sitter/parser.h b/include/tree_sitter/parser.h index c3c93385..8cda394f 100644 --- a/include/tree_sitter/parser.h +++ b/include/tree_sitter/parser.h @@ -31,81 +31,58 @@ extern "C" { #define DEBUG_PARSE(...) #endif +#define SYMBOL_NAMES \ +static const char *ts_symbol_names[] + +#define HIDDEN_SYMBOLS(num_symbols) \ +static const int hidden_symbol_flags[num_symbols] + #define LEX_STATES(num_states) \ static state_id ts_lex_states[num_states] +#define LEX_FN() \ +static ts_tree * ts_lex(ts_lexer *lexer, state_id lex_state) + +#define START_LEXER() \ +char lookahead; \ +ts_lexer_skip_whitespace(lexer); \ +if (!ts_lexer_lookahead_char(lexer)) return ts_tree_make_leaf(ts_builtin_sym_end, 0, 0); \ +next_state: \ +lookahead = ts_lexer_lookahead_char(lexer); + +#define ADVANCE(state_index) \ +{ ts_lexer_advance(lexer); lex_state = state_index; goto next_state; } + +#define ACCEPT_TOKEN(symbol) \ +{ DEBUG_LEX("token: %s \n", ts_symbol_names[symbol]); return ts_lexer_build_node(lexer, symbol); } + +#define LEX_ERROR() \ +{ return ts_lexer_build_node(lexer, ts_builtin_sym_error); } + +#define LEX_PANIC() \ +{ DEBUG_LEX("Lex error: unexpected state %d", LEX_STATE()); return NULL; } + #define PARSE_TABLE(num_states, num_symbols) \ static const ts_parse_action ts_parse_actions[num_states][num_symbols] -#define LEX_FN() \ -static ts_tree * \ -ts_lex(ts_lexer *lexer, state_id lex_state) - -#define SYMBOL_NAMES \ -static const char *ts_symbol_names[] - -#define HIDDEN_SYMBOLS(num_symbols) \ -static const int hidden_symbol_flags[num_symbols] - #define EXPORT_PARSER(constructor_name) \ ts_parser constructor_name() { \ - ts_parser result = { \ + return (ts_parser){ \ .parse_fn = ts_parse, \ .symbol_names = ts_symbol_names, \ .data = ts_lr_parser_make(TS_SYMBOL_COUNT, (const ts_parse_action *)ts_parse_actions, ts_lex_states, hidden_symbol_flags), \ .free_fn = NULL \ }; \ - return result; \ } #define SHIFT(to_state_value) \ -(ts_parse_action) { \ - .type = ts_parse_action_type_shift, \ - .data = { .to_state = to_state_value } \ -} +(ts_parse_action){ .type = ts_parse_action_type_shift, .data = { .to_state = to_state_value } } #define REDUCE(symbol_val, child_count_val) \ -(ts_parse_action) { \ - .type = ts_parse_action_type_reduce, \ - .data = { .symbol = symbol_val, .child_count = child_count_val } \ -} +(ts_parse_action){ .type = ts_parse_action_type_reduce, .data = { .symbol = symbol_val, .child_count = child_count_val } } #define ACCEPT_INPUT() \ -(ts_parse_action) { \ - .type = ts_parse_action_type_accept, \ -} - -#define START_LEXER() \ -ts_lexer_skip_whitespace(lexer); \ -if (!ts_lexer_lookahead_char(lexer)) { \ - return ts_tree_make_leaf(ts_builtin_sym_end, 0, 0); \ -} \ -next_state: - -#define LEX_STATE() \ -lex_state - -#define LOOKAHEAD_CHAR() \ -ts_lexer_lookahead_char(lexer) - -#define ADVANCE(state_index) \ -{ \ - ts_lexer_advance(lexer); \ - lex_state = state_index; \ - goto next_state; \ -} - -#define ACCEPT_TOKEN(symbol) \ -{ \ - DEBUG_LEX("token: %s \n", ts_symbol_names[symbol]); \ - return ts_lexer_build_node(lexer, symbol); \ -} - -#define LEX_ERROR() \ -return ts_lexer_build_node(lexer, ts_builtin_sym_error); - -#define LEX_PANIC() \ -{ DEBUG_LEX("Lex error: unexpected state %d", LEX_STATE()); return NULL; } +(ts_parse_action){ .type = ts_parse_action_type_accept } /* diff --git a/src/compiler/generate_code/c_code.cc b/src/compiler/generate_code/c_code.cc index 2104863d..036d40a1 100644 --- a/src/compiler/generate_code/c_code.cc +++ b/src/compiler/generate_code/c_code.cc @@ -100,7 +100,7 @@ namespace tree_sitter { } string condition_for_character_range(const rules::CharacterRange &range) { - string lookahead("LOOKAHEAD_CHAR()"); + string lookahead("lookahead"); if (range.min == range.max) { return lookahead + " == '" + character_code(range.min) + "'"; } else { @@ -173,7 +173,7 @@ namespace tree_sitter { body += _case(std::to_string(i), switch_on_lookahead_char(lex_table.states[i])); body += _case("ts_lex_state_error", switch_on_lookahead_char(lex_table.error_state)); body += _default("LEX_PANIC();"); - return _switch("LEX_STATE()", body); + return _switch("lex_state", body); } string symbol_count() {