From 0be64e51b6d80690b82497fec94f595f7c104097 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 20 Jul 2020 19:24:46 -0400 Subject: [PATCH] Rebuilt the lexer with a much newer re2c. --- mojoshader_lexer.c | 1713 ++++++++++++++++++-------------------------- 1 file changed, 712 insertions(+), 1001 deletions(-) diff --git a/mojoshader_lexer.c b/mojoshader_lexer.c index ed47f47e..c46644d1 100644 --- a/mojoshader_lexer.c +++ b/mojoshader_lexer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 1.2.1 */ /** * MojoShader; generate shader programs from bytecode of compiled * Direct3D shaders. @@ -26,6 +26,7 @@ typedef unsigned char uchar; #define YYMAXFILL 8 + #define RET(t) return update_state(s, eoi, cursor, token, (Token) t) #define YYCTYPE uchar #define YYCURSOR cursor @@ -80,32 +81,31 @@ Token preprocessor_lexer(IncludeState *s) { YYCTYPE yych; unsigned int yyaccept = 0; - - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; switch (yych) { - case 0x00: goto yy61; + case 0x00: goto yy2; case '\t': case '\v': case '\f': - case ' ': goto yy63; - case '\n': goto yy65; - case '\r': goto yy67; - case '!': goto yy35; + case ' ': goto yy6; + case '\n': goto yy9; + case '\r': goto yy11; + case '!': goto yy12; case '"': goto yy14; - case '#': goto yy37; - case '%': goto yy25; - case '&': goto yy29; - case '\'': goto yy11; - case '(': goto yy39; - case ')': goto yy41; - case '*': goto yy23; - case '+': goto yy19; - case ',': goto yy47; - case '-': goto yy21; - case '.': goto yy12; - case '/': goto yy4; - case '0': goto yy8; + case '#': goto yy15; + case '%': goto yy17; + case '&': goto yy19; + case '\'': goto yy21; + case '(': goto yy22; + case ')': goto yy24; + case '*': goto yy26; + case '+': goto yy28; + case ',': goto yy30; + case '-': goto yy32; + case '.': goto yy34; + case '/': goto yy36; + case '0': goto yy38; case '1': case '2': case '3': @@ -114,13 +114,13 @@ Token preprocessor_lexer(IncludeState *s) case '6': case '7': case '8': - case '9': goto yy10; - case ':': goto yy51; - case ';': goto yy59; - case '<': goto yy17; - case '=': goto yy33; - case '>': goto yy15; - case '?': goto yy57; + case '9': goto yy40; + case ':': goto yy42; + case ';': goto yy44; + case '<': goto yy46; + case '=': goto yy48; + case '>': goto yy50; + case '?': goto yy52; case 'A': case 'B': case 'C': @@ -173,942 +173,604 @@ Token preprocessor_lexer(IncludeState *s) case 'w': case 'x': case 'y': - case 'z': goto yy6; - case '[': goto yy43; - case '\\': goto yy2; - case ']': goto yy45; - case '^': goto yy27; - case '{': goto yy53; - case '|': goto yy31; - case '}': goto yy55; - case '~': goto yy49; - default: goto yy68; + case 'z': goto yy54; + case '[': goto yy57; + case '\\': goto yy59; + case ']': goto yy60; + case '^': goto yy62; + case '{': goto yy64; + case '|': goto yy66; + case '}': goto yy68; + case '~': goto yy70; + default: goto yy4; } yy2: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x08) goto yy3; - if (yych <= '\r') goto yy177; - if (yych == ' ') goto yy177; -yy3: - { goto bad_chars; } + ++YYCURSOR; + { if (eoi) { RET(TOKEN_EOI); } goto bad_chars; } yy4: ++YYCURSOR; - if ((yych = *YYCURSOR) <= '.') { - if (yych == '*') goto yy174; - } else { - if (yych <= '/') goto yy172; - if (yych == '=') goto yy170; - } - { RET('/'); } +yy5: + { goto bad_chars; } yy6: ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - goto yy169; -yy7: - { RET(TOKEN_IDENTIFIER); } -yy8: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= 'T') { - if (yych == 'L') goto yy144; - goto yy160; - } else { - if (yych <= 'U') goto yy144; - if (yych <= 'W') goto yy160; - goto yy161; - } + if (yych <= '\n') { + if (yych == '\t') goto yy6; } else { - if (yych <= 't') { - if (yych == 'l') goto yy144; - goto yy160; - } else { - if (yych <= 'u') goto yy144; - if (yych == 'x') goto yy161; - goto yy160; - } + if (yych <= '\f') goto yy6; + if (yych == ' ') goto yy6; } + { if (s->report_whitespace) RET(' '); goto scanner_loop; } yy9: - { RET(TOKEN_INT_LITERAL); } + ++YYCURSOR; yy10: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - goto yy142; + { s->line++; RET('\n'); } yy11: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\n') goto yy3; - if (yych == '\r') goto yy3; - goto yy132; + yych = *++YYCURSOR; + if (yych == '\n') goto yy9; + goto yy10; yy12: - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy13; - if (yych <= '9') goto yy123; -yy13: - { RET('.'); } + yych = *++YYCURSOR; + if (yych == '=') goto yy72; + { RET('!'); } yy14: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\n') goto yy3; - if (yych == '\r') goto yy3; - goto yy113; + if (yych == '\n') goto yy5; + if (yych == '\r') goto yy5; + goto yy75; yy15: - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '<') goto yy16; - if (yych <= '=') goto yy106; - if (yych <= '>') goto yy108; -yy16: - { RET('>'); } + yych = *++YYCURSOR; + if (yych == '#') goto yy80; + { RET(TOKEN_HASH); } yy17: - ++YYCURSOR; - if ((yych = *YYCURSOR) <= ';') goto yy18; - if (yych <= '<') goto yy102; - if (yych <= '=') goto yy100; -yy18: - { RET('<'); } + yych = *++YYCURSOR; + if (yych == '=') goto yy82; + { RET('%'); } yy19: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '+') goto yy96; - if (yych == '=') goto yy98; - { RET('+'); } + yych = *++YYCURSOR; + if (yych == '&') goto yy84; + if (yych == '=') goto yy86; + { RET('&'); } yy21: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '\n') goto yy5; + if (yych == '\r') goto yy5; + goto yy89; +yy22: ++YYCURSOR; - if ((yych = *YYCURSOR) == '-') goto yy92; - if (yych == '=') goto yy94; - { RET('-'); } -yy23: + { RET('('); } +yy24: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy90; + { RET(')'); } +yy26: + yych = *++YYCURSOR; + if (yych == '=') goto yy92; { RET('*'); } -yy25: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy88; - { RET('%'); } -yy27: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy86; - { RET('^'); } -yy29: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '&') goto yy82; - if (yych == '=') goto yy84; - { RET('&'); } -yy31: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy80; - if (yych == '|') goto yy78; - { RET('|'); } -yy33: +yy28: + yych = *++YYCURSOR; + if (yych == '+') goto yy94; + if (yych == '=') goto yy96; + { RET('+'); } +yy30: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy76; - { RET('='); } + { RET(','); } +yy32: + yych = *++YYCURSOR; + if (yych == '-') goto yy98; + if (yych == '=') goto yy100; + { RET('-'); } +yy34: + yych = *++YYCURSOR; + if (yych <= '/') goto yy35; + if (yych <= '9') goto yy102; yy35: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy74; - { RET('!'); } -yy37: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '#') goto yy72; - { RET(TOKEN_HASH); } + { RET('.'); } +yy36: + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych == '*') goto yy105; + } else { + if (yych <= '/') goto yy107; + if (yych == '=') goto yy109; + } + { RET('/'); } +yy38: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'X') goto yy114; + if (yych == 'x') goto yy114; + goto yy41; yy39: - ++YYCURSOR; - { RET('('); } + { RET(TOKEN_INT_LITERAL); } +yy40: + yyaccept = 1; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + yych = *YYCURSOR; yy41: + if (yych <= 'L') { + if (yych <= '9') { + if (yych == '.') goto yy102; + if (yych <= '/') goto yy39; + goto yy40; + } else { + if (yych == 'E') goto yy111; + if (yych <= 'K') goto yy39; + goto yy112; + } + } else { + if (yych <= 'e') { + if (yych == 'U') goto yy112; + if (yych <= 'd') goto yy39; + goto yy111; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy39; + goto yy112; + } else { + if (yych == 'u') goto yy112; + goto yy39; + } + } + } +yy42: ++YYCURSOR; - { RET(')'); } -yy43: - ++YYCURSOR; - { RET('['); } -yy45: + { RET(':'); } +yy44: ++YYCURSOR; - { RET(']'); } + { if (s->asm_comments) goto singlelinecomment; RET(';'); } +yy46: + yych = *++YYCURSOR; + if (yych <= ';') goto yy47; + if (yych <= '<') goto yy115; + if (yych <= '=') goto yy117; yy47: - ++YYCURSOR; - { RET(','); } -yy49: - ++YYCURSOR; - { RET('~'); } + { RET('<'); } +yy48: + yych = *++YYCURSOR; + if (yych == '=') goto yy119; + { RET('='); } +yy50: + yych = *++YYCURSOR; + if (yych <= '<') goto yy51; + if (yych <= '=') goto yy121; + if (yych <= '>') goto yy123; yy51: + { RET('>'); } +yy52: ++YYCURSOR; - { RET(':'); } -yy53: - ++YYCURSOR; - { RET('{'); } -yy55: + { RET('?'); } +yy54: ++YYCURSOR; - { RET('}'); } + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 'Z') { + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy54; + if (yych >= 'A') goto yy54; + } else { + if (yych <= '_') { + if (yych >= '_') goto yy54; + } else { + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy54; + } + } +yy56: + { RET(TOKEN_IDENTIFIER); } yy57: ++YYCURSOR; - { RET('?'); } + { RET('['); } yy59: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x08) goto yy5; + if (yych <= '\r') goto yy126; + if (yych == ' ') goto yy126; + goto yy5; +yy60: ++YYCURSOR; - { if (s->asm_comments) goto singlelinecomment; RET(';'); } -yy61: - ++YYCURSOR; - { if (eoi) { RET(TOKEN_EOI); } goto bad_chars; } -yy63: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy71; + { RET(']'); } +yy62: + yych = *++YYCURSOR; + if (yych == '=') goto yy130; + { RET('^'); } yy64: - { if (s->report_whitespace) RET(' '); goto scanner_loop; } -yy65: ++YYCURSOR; + { RET('{'); } yy66: - { s->line++; RET('\n'); } -yy67: yych = *++YYCURSOR; - if (yych == '\n') goto yy69; - goto yy66; + if (yych == '=') goto yy132; + if (yych == '|') goto yy134; + { RET('|'); } yy68: - yych = *++YYCURSOR; - goto yy3; -yy69: - yych = *++YYCURSOR; - goto yy66; + ++YYCURSOR; + { RET('}'); } yy70: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy71: - if (yych <= '\n') { - if (yych == '\t') goto yy70; - goto yy64; - } else { - if (yych <= '\f') goto yy70; - if (yych == ' ') goto yy70; - goto yy64; - } + { RET('~'); } yy72: - ++YYCURSOR; - { RET(TOKEN_HASHHASH); } -yy74: ++YYCURSOR; { RET(TOKEN_NEQ); } -yy76: - ++YYCURSOR; - { RET(TOKEN_EQL); } -yy78: - ++YYCURSOR; - { RET(TOKEN_OROR); } -yy80: - ++YYCURSOR; - { RET(TOKEN_ORASSIGN); } -yy82: - ++YYCURSOR; - { RET(TOKEN_ANDAND); } -yy84: - ++YYCURSOR; - { RET(TOKEN_ANDASSIGN); } -yy86: - ++YYCURSOR; - { RET(TOKEN_XORASSIGN); } -yy88: - ++YYCURSOR; - { RET(TOKEN_MODASSIGN); } -yy90: - ++YYCURSOR; - { RET(TOKEN_MULTASSIGN); } -yy92: - ++YYCURSOR; - { RET(TOKEN_DECREMENT); } -yy94: - ++YYCURSOR; - { RET(TOKEN_SUBASSIGN); } -yy96: - ++YYCURSOR; - { RET(TOKEN_INCREMENT); } -yy98: - ++YYCURSOR; - { RET(TOKEN_ADDASSIGN); } -yy100: - ++YYCURSOR; - { RET(TOKEN_LEQ); } -yy102: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy104; - { RET(TOKEN_LSHIFT); } -yy104: - ++YYCURSOR; - { RET(TOKEN_LSHIFTASSIGN); } -yy106: - ++YYCURSOR; - { RET(TOKEN_GEQ); } -yy108: - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy110; - { RET(TOKEN_RSHIFT); } -yy110: - ++YYCURSOR; - { RET(TOKEN_RSHIFTASSIGN); } -yy112: +yy74: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy113: +yy75: if (yych <= '\r') { - if (yych == '\n') goto yy114; - if (yych <= '\f') goto yy112; + if (yych == '\n') goto yy76; + if (yych <= '\f') goto yy74; } else { if (yych <= '"') { - if (yych <= '!') goto yy112; - goto yy116; + if (yych <= '!') goto yy74; + goto yy77; } else { - if (yych == '\\') goto yy115; - goto yy112; + if (yych == '\\') goto yy79; + goto yy74; } } -yy114: +yy76: YYCURSOR = YYMARKER; if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy3; + if (yyaccept == 0) { + goto yy5; } else { - goto yy9; + goto yy39; } } else { - goto yy125; + goto yy104; } -yy115: +yy77: + ++YYCURSOR; + { RET(TOKEN_STRING_LITERAL); } +yy79: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { - if (yych == '"') goto yy112; - goto yy114; + if (yych == '"') goto yy74; + goto yy76; } else { - if (yych <= '\'') goto yy112; - if (yych <= '/') goto yy114; - goto yy119; + if (yych <= '\'') goto yy74; + if (yych <= '/') goto yy76; + goto yy74; } } else { if (yych <= '[') { - if (yych == '?') goto yy112; - goto yy114; + if (yych == '?') goto yy74; + goto yy76; } else { - if (yych <= '\\') goto yy112; - if (yych <= '`') goto yy114; - goto yy112; + if (yych <= '\\') goto yy74; + if (yych <= '`') goto yy76; + goto yy74; } } } else { if (yych <= 'r') { if (yych <= 'm') { - if (yych == 'f') goto yy112; - goto yy114; + if (yych == 'f') goto yy74; + goto yy76; } else { - if (yych <= 'n') goto yy112; - if (yych <= 'q') goto yy114; - goto yy112; + if (yych <= 'n') goto yy74; + if (yych <= 'q') goto yy76; + goto yy74; } } else { if (yych <= 'u') { - if (yych == 't') goto yy112; - goto yy114; + if (yych == 't') goto yy74; + goto yy76; } else { - if (yych <= 'v') goto yy112; - if (yych == 'x') goto yy118; - goto yy114; + if (yych <= 'v') goto yy74; + if (yych == 'x') goto yy136; + goto yy76; } } } -yy116: +yy80: ++YYCURSOR; - { RET(TOKEN_STRING_LITERAL); } -yy118: + { RET(TOKEN_HASHHASH); } +yy82: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy114; - if (yych <= '9') goto yy121; - goto yy114; - } else { - if (yych <= 'F') goto yy121; - if (yych <= '`') goto yy114; - if (yych <= 'f') goto yy121; - goto yy114; - } -yy119: + { RET(TOKEN_MODASSIGN); } +yy84: + ++YYCURSOR; + { RET(TOKEN_ANDAND); } +yy86: + ++YYCURSOR; + { RET(TOKEN_ANDASSIGN); } +yy88: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '!') { - if (yych <= '\n') { - if (yych <= '\t') goto yy112; - goto yy114; - } else { - if (yych == '\r') goto yy114; - goto yy112; - } +yy89: + if (yych <= '\r') { + if (yych == '\n') goto yy76; + if (yych <= '\f') goto yy88; + goto yy76; } else { - if (yych <= '7') { - if (yych <= '"') goto yy116; - if (yych <= '/') goto yy112; - goto yy119; + if (yych <= '\'') { + if (yych <= '&') goto yy88; } else { - if (yych == '\\') goto yy115; - goto yy112; + if (yych == '\\') goto yy91; + goto yy88; } } -yy121: + ++YYCURSOR; + goto yy39; +yy91: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') { - if (yych <= '\f') { - if (yych == '\n') goto yy114; - goto yy112; + if (yych <= 'b') { + if (yych <= '7') { + if (yych <= '&') { + if (yych == '"') goto yy88; + goto yy76; + } else { + if (yych <= '\'') goto yy88; + if (yych <= '/') goto yy76; + goto yy88; + } } else { - if (yych <= '\r') goto yy114; - if (yych == '"') goto yy116; - goto yy112; - } - } else { - if (yych <= '[') { - if (yych <= '9') goto yy121; - if (yych <= '@') goto yy112; - if (yych <= 'F') goto yy121; - goto yy112; - } else { - if (yych <= '\\') goto yy115; - if (yych <= '`') goto yy112; - if (yych <= 'f') goto yy121; - goto yy112; - } - } -yy123: - yyaccept = 2; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; - if (yych <= 'G') { - if (yych <= 'D') { - if (yych <= '/') goto yy125; - if (yych <= '9') goto yy123; - } else { - if (yych <= 'E') goto yy126; - if (yych <= 'F') goto yy127; - } - } else { - if (yych <= 'e') { - if (yych <= 'H') goto yy127; - if (yych >= 'e') goto yy126; - } else { - if (yych == 'g') goto yy125; - if (yych <= 'h') goto yy127; - } - } -yy125: - { RET(TOKEN_FLOAT_LITERAL); } -yy126: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy128; - goto yy114; - } else { - if (yych <= '-') goto yy128; - if (yych <= '/') goto yy114; - if (yych <= '9') goto yy129; - goto yy114; - } -yy127: - yych = *++YYCURSOR; - goto yy125; -yy128: - yych = *++YYCURSOR; - if (yych <= '/') goto yy114; - if (yych >= ':') goto yy114; -yy129: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 'G') { - if (yych <= '9') { - if (yych <= '/') goto yy125; - goto yy129; - } else { - if (yych == 'F') goto yy127; - goto yy125; - } - } else { - if (yych <= 'f') { - if (yych <= 'H') goto yy127; - if (yych <= 'e') goto yy125; - goto yy127; - } else { - if (yych == 'h') goto yy127; - goto yy125; - } - } -yy131: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy132: - if (yych <= '\r') { - if (yych == '\n') goto yy114; - if (yych <= '\f') goto yy131; - goto yy114; - } else { - if (yych <= '\'') { - if (yych <= '&') goto yy131; - goto yy134; - } else { - if (yych != '\\') goto yy131; - } - } -yy133: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 'b') { - if (yych <= '7') { - if (yych <= '&') { - if (yych == '"') goto yy131; - goto yy114; - } else { - if (yych <= '\'') goto yy131; - if (yych <= '/') goto yy114; - goto yy136; - } - } else { - if (yych <= '[') { - if (yych == '?') goto yy131; - goto yy114; - } else { - if (yych <= '\\') goto yy131; - if (yych <= '`') goto yy114; - goto yy131; - } + if (yych <= '[') { + if (yych == '?') goto yy88; + goto yy76; + } else { + if (yych <= '\\') goto yy88; + if (yych <= '`') goto yy76; + goto yy88; + } } } else { if (yych <= 'r') { if (yych <= 'm') { - if (yych == 'f') goto yy131; - goto yy114; + if (yych == 'f') goto yy88; + goto yy76; } else { - if (yych <= 'n') goto yy131; - if (yych <= 'q') goto yy114; - goto yy131; + if (yych <= 'n') goto yy88; + if (yych <= 'q') goto yy76; + goto yy88; } } else { if (yych <= 'u') { - if (yych == 't') goto yy131; - goto yy114; + if (yych == 't') goto yy88; + goto yy76; } else { - if (yych <= 'v') goto yy131; - if (yych == 'x') goto yy135; - goto yy114; + if (yych <= 'v') goto yy88; + if (yych == 'x') goto yy137; + goto yy76; } } } -yy134: - yych = *++YYCURSOR; - goto yy9; -yy135: +yy92: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy114; - if (yych <= '9') goto yy138; - goto yy114; - } else { - if (yych <= 'F') goto yy138; - if (yych <= '`') goto yy114; - if (yych <= 'f') goto yy138; - goto yy114; - } -yy136: + { RET(TOKEN_MULTASSIGN); } +yy94: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '&') { - if (yych <= '\n') { - if (yych <= '\t') goto yy131; - goto yy114; - } else { - if (yych == '\r') goto yy114; - goto yy131; - } - } else { - if (yych <= '7') { - if (yych <= '\'') goto yy134; - if (yych <= '/') goto yy131; - goto yy136; - } else { - if (yych == '\\') goto yy133; - goto yy131; - } - } -yy138: + { RET(TOKEN_INCREMENT); } +yy96: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') { - if (yych <= '\f') { - if (yych == '\n') goto yy114; - goto yy131; - } else { - if (yych <= '\r') goto yy114; - if (yych == '\'') goto yy134; - goto yy131; - } - } else { - if (yych <= '[') { - if (yych <= '9') goto yy138; - if (yych <= '@') goto yy131; - if (yych <= 'F') goto yy138; - goto yy131; - } else { - if (yych <= '\\') goto yy133; - if (yych <= '`') goto yy131; - if (yych <= 'f') goto yy138; - goto yy131; - } - } -yy140: + { RET(TOKEN_ADDASSIGN); } +yy98: + ++YYCURSOR; + { RET(TOKEN_DECREMENT); } +yy100: + ++YYCURSOR; + { RET(TOKEN_SUBASSIGN); } +yy102: yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy151; - if (yych == 'e') goto yy151; - goto yy150; -yy141: - yyaccept = 1; YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; -yy142: - if (yych <= 'L') { - if (yych <= '9') { - if (yych == '.') goto yy140; - if (yych <= '/') goto yy9; - goto yy141; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= '/') goto yy104; + if (yych <= '9') goto yy102; } else { - if (yych == 'E') goto yy143; - if (yych <= 'K') goto yy9; - goto yy144; + if (yych <= 'E') goto yy111; + if (yych <= 'F') goto yy138; } } else { if (yych <= 'e') { - if (yych == 'U') goto yy144; - if (yych <= 'd') goto yy9; + if (yych <= 'H') goto yy138; + if (yych >= 'e') goto yy111; } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy9; - goto yy144; - } else { - if (yych == 'u') goto yy144; - goto yy9; - } + if (yych == 'g') goto yy104; + if (yych <= 'h') goto yy138; } } -yy143: +yy104: + { RET(TOKEN_FLOAT_LITERAL); } +yy105: + ++YYCURSOR; + { goto multilinecomment; } +yy107: + ++YYCURSOR; + { goto singlelinecomment; } +yy109: + ++YYCURSOR; + { RET(TOKEN_DIVASSIGN); } +yy111: yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy146; - goto yy114; + if (yych == '+') goto yy139; + goto yy76; } else { - if (yych <= '-') goto yy146; - if (yych <= '/') goto yy114; - if (yych <= '9') goto yy147; - goto yy114; + if (yych <= '-') goto yy139; + if (yych <= '/') goto yy76; + if (yych <= '9') goto yy140; + goto yy76; } -yy144: +yy112: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { - if (yych == 'L') goto yy144; - if (yych <= 'T') goto yy9; - goto yy144; + if (yych == 'L') goto yy112; + if (yych <= 'T') goto yy39; + goto yy112; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy9; - goto yy144; + if (yych <= 'k') goto yy39; + goto yy112; } else { - if (yych == 'u') goto yy144; - goto yy9; + if (yych == 'u') goto yy112; + goto yy39; } } -yy146: +yy114: yych = *++YYCURSOR; - if (yych <= '/') goto yy114; - if (yych >= ':') goto yy114; -yy147: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 'G') { - if (yych <= '9') { - if (yych <= '/') goto yy125; - goto yy147; - } else { - if (yych == 'F') goto yy127; - goto yy125; - } - } else { - if (yych <= 'f') { - if (yych <= 'H') goto yy127; - if (yych <= 'e') goto yy125; - goto yy127; - } else { - if (yych == 'h') goto yy127; - goto yy125; - } - } -yy149: - yyaccept = 2; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; -yy150: - if (yych <= 'G') { - if (yych <= 'D') { - if (yych <= '/') goto yy125; - if (yych <= '9') goto yy149; - goto yy125; - } else { - if (yych <= 'E') goto yy155; - if (yych <= 'F') goto yy127; - goto yy125; - } + if (yych <= '@') { + if (yych <= '/') goto yy76; + if (yych <= '9') goto yy142; + goto yy76; } else { - if (yych <= 'e') { - if (yych <= 'H') goto yy127; - if (yych <= 'd') goto yy125; - goto yy155; - } else { - if (yych == 'g') goto yy125; - if (yych <= 'h') goto yy127; - goto yy125; - } + if (yych <= 'F') goto yy142; + if (yych <= '`') goto yy76; + if (yych <= 'f') goto yy142; + goto yy76; } -yy151: +yy115: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy114; + if (yych == '=') goto yy144; + { RET(TOKEN_LSHIFT); } +yy117: + ++YYCURSOR; + { RET(TOKEN_LEQ); } +yy119: + ++YYCURSOR; + { RET(TOKEN_EQL); } +yy121: + ++YYCURSOR; + { RET(TOKEN_GEQ); } +yy123: + yych = *++YYCURSOR; + if (yych == '=') goto yy146; + { RET(TOKEN_RSHIFT); } +yy125: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; +yy126: + if (yych <= '\f') { + if (yych <= 0x08) goto yy76; + if (yych != '\n') goto yy125; } else { - if (yych <= '-') goto yy152; - if (yych <= '/') goto yy114; - if (yych <= '9') goto yy153; - goto yy114; + if (yych <= '\r') goto yy129; + if (yych == ' ') goto yy125; + goto yy76; } -yy152: +yy127: + ++YYCURSOR; +yy128: + { s->line++; goto scanner_loop; } +yy129: yych = *++YYCURSOR; - if (yych <= '/') goto yy114; - if (yych >= ':') goto yy114; -yy153: + if (yych == '\n') goto yy127; + goto yy128; +yy130: + ++YYCURSOR; + { RET(TOKEN_XORASSIGN); } +yy132: + ++YYCURSOR; + { RET(TOKEN_ORASSIGN); } +yy134: + ++YYCURSOR; + { RET(TOKEN_OROR); } +yy136: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= 'G') { - if (yych <= '9') { - if (yych <= '/') goto yy125; - goto yy153; - } else { - if (yych == 'F') goto yy127; - goto yy125; - } + if (yych <= '@') { + if (yych <= '/') goto yy76; + if (yych <= '9') goto yy74; + goto yy76; } else { - if (yych <= 'f') { - if (yych <= 'H') goto yy127; - if (yych <= 'e') goto yy125; - goto yy127; - } else { - if (yych == 'h') goto yy127; - goto yy125; - } + if (yych <= 'F') goto yy74; + if (yych <= '`') goto yy76; + if (yych <= 'f') goto yy74; + goto yy76; } -yy155: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy114; +yy137: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy76; + if (yych <= '9') goto yy88; + goto yy76; } else { - if (yych <= '-') goto yy156; - if (yych <= '/') goto yy114; - if (yych <= '9') goto yy157; - goto yy114; + if (yych <= 'F') goto yy88; + if (yych <= '`') goto yy76; + if (yych <= 'f') goto yy88; + goto yy76; } -yy156: +yy138: + ++YYCURSOR; + goto yy104; +yy139: yych = *++YYCURSOR; - if (yych <= '/') goto yy114; - if (yych >= ':') goto yy114; -yy157: + if (yych <= '/') goto yy76; + if (yych >= ':') goto yy76; +yy140: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'G') { if (yych <= '9') { - if (yych <= '/') goto yy125; - goto yy157; + if (yych <= '/') goto yy104; + goto yy140; } else { - if (yych == 'F') goto yy127; - goto yy125; + if (yych == 'F') goto yy138; + goto yy104; } } else { if (yych <= 'f') { - if (yych <= 'H') goto yy127; - if (yych <= 'e') goto yy125; - goto yy127; + if (yych <= 'H') goto yy138; + if (yych <= 'e') goto yy104; + goto yy138; } else { - if (yych == 'h') goto yy127; - goto yy125; + if (yych == 'h') goto yy138; + goto yy104; } } -yy159: - yyaccept = 1; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; -yy160: - if (yych <= 'L') { - if (yych <= '9') { - if (yych == '.') goto yy140; - if (yych <= '/') goto yy9; - goto yy159; - } else { - if (yych == 'E') goto yy143; - if (yych <= 'K') goto yy9; - goto yy166; - } - } else { - if (yych <= 'e') { - if (yych == 'U') goto yy166; - if (yych <= 'd') goto yy9; - goto yy143; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy9; - goto yy166; - } else { - if (yych == 'u') goto yy166; - goto yy9; - } - } - } -yy161: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy114; - if (yych >= ':') goto yy114; - } else { - if (yych <= 'F') goto yy162; - if (yych <= '`') goto yy114; - if (yych >= 'g') goto yy114; - } -yy162: +yy142: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'T') { if (yych <= '@') { - if (yych <= '/') goto yy9; - if (yych <= '9') goto yy162; - goto yy9; + if (yych <= '/') goto yy39; + if (yych <= '9') goto yy142; + goto yy39; } else { - if (yych <= 'F') goto yy162; - if (yych != 'L') goto yy9; + if (yych <= 'F') goto yy142; + if (yych == 'L') goto yy112; + goto yy39; } } else { if (yych <= 'k') { - if (yych <= 'U') goto yy164; - if (yych <= '`') goto yy9; - if (yych <= 'f') goto yy162; - goto yy9; + if (yych <= 'U') goto yy112; + if (yych <= '`') goto yy39; + if (yych <= 'f') goto yy142; + goto yy39; } else { - if (yych <= 'l') goto yy164; - if (yych != 'u') goto yy9; + if (yych <= 'l') goto yy112; + if (yych == 'u') goto yy112; + goto yy39; } } -yy164: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 'U') { - if (yych == 'L') goto yy164; - if (yych <= 'T') goto yy9; - goto yy164; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy9; - goto yy164; - } else { - if (yych == 'u') goto yy164; - goto yy9; - } - } -yy166: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 'U') { - if (yych == 'L') goto yy166; - if (yych <= 'T') goto yy9; - goto yy166; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy9; - goto yy166; - } else { - if (yych == 'u') goto yy166; - goto yy9; - } - } -yy168: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy169: - if (yych <= 'Z') { - if (yych <= '/') goto yy7; - if (yych <= '9') goto yy168; - if (yych <= '@') goto yy7; - goto yy168; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy7; - goto yy168; - } else { - if (yych <= '`') goto yy7; - if (yych <= 'z') goto yy168; - goto yy7; - } - } -yy170: - ++YYCURSOR; - { RET(TOKEN_DIVASSIGN); } -yy172: - ++YYCURSOR; - { goto singlelinecomment; } -yy174: - ++YYCURSOR; - { goto multilinecomment; } -yy176: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; -yy177: - if (yych <= '\f') { - if (yych <= 0x08) goto yy114; - if (yych != '\n') goto yy176; - } else { - if (yych <= '\r') goto yy180; - if (yych == ' ') goto yy176; - goto yy114; - } -yy178: +yy144: ++YYCURSOR; -yy179: - { s->line++; goto scanner_loop; } -yy180: + { RET(TOKEN_LSHIFTASSIGN); } +yy146: ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy178; - goto yy179; + { RET(TOKEN_RSHIFTASSIGN); } } @@ -1122,42 +784,39 @@ Token preprocessor_lexer(IncludeState *s) if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy188; - if (yych == '\n') goto yy185; - goto yy190; + if (yych <= 0x00) goto yy150; + if (yych == '\n') goto yy154; + goto yy152; } else { - if (yych <= '\r') goto yy187; - if (yych != '*') goto yy190; + if (yych <= '\r') goto yy156; + if (yych == '*') goto yy157; + goto yy152; } +yy150: ++YYCURSOR; - if ((yych = *YYCURSOR) == '/') goto yy192; -yy184: - { goto multilinecomment; } -yy185: - ++YYCURSOR; -yy186: { - s->line++; + if (eoi) + RET(TOKEN_INCOMPLETE_COMMENT); goto multilinecomment; } -yy187: - yych = *++YYCURSOR; - if (yych == '\n') goto yy191; - goto yy186; -yy188: +yy152: + ++YYCURSOR; +yy153: + { goto multilinecomment; } +yy154: ++YYCURSOR; +yy155: { - if (eoi) - RET(TOKEN_INCOMPLETE_COMMENT); + s->line++; goto multilinecomment; } -yy190: +yy156: yych = *++YYCURSOR; - goto yy184; -yy191: + if (yych == '\n') goto yy154; + goto yy155; +yy157: yych = *++YYCURSOR; - goto yy186; -yy192: + if (yych != '/') goto yy153; ++YYCURSOR; { if (s->report_comments) @@ -1190,29 +849,14 @@ Token preprocessor_lexer(IncludeState *s) if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\n') { - if (yych <= 0x00) goto yy199; - if (yych <= '\t') goto yy201; + if (yych <= 0x00) goto yy162; + if (yych <= '\t') goto yy164; + goto yy166; } else { - if (yych == '\r') goto yy198; - goto yy201; + if (yych == '\r') goto yy168; + goto yy164; } - ++YYCURSOR; -yy197: - { - s->line++; - if (s->report_comments) - { - cursor = matchptr; // so we RET('\n') next. - RET(TOKEN_SINGLE_COMMENT); - } - token = matchptr; - RET('\n'); - } -yy198: - yych = *++YYCURSOR; - if (yych == '\n') goto yy203; - goto yy197; -yy199: +yy162: ++YYCURSOR; { if (eoi) @@ -1224,13 +868,26 @@ Token preprocessor_lexer(IncludeState *s) } goto singlelinecomment; } -yy201: +yy164: ++YYCURSOR; { goto singlelinecomment; } -yy203: +yy166: ++YYCURSOR; - yych = *YYCURSOR; - goto yy197; +yy167: + { + s->line++; + if (s->report_comments) + { + cursor = matchptr; // so we RET('\n') next. + RET(TOKEN_SINGLE_COMMENT); + } + token = matchptr; + RET('\n'); + } +yy168: + yych = *++YYCURSOR; + if (yych == '\n') goto yy166; + goto yy167; } @@ -1243,238 +900,287 @@ Token preprocessor_lexer(IncludeState *s) if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); yych = *YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy208; - if (yych <= '\n') goto yy210; - goto yy208; + if (yych == '\t') goto yy173; + if (yych >= '\v') goto yy173; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy210; - goto yy208; + if (yych >= ' ') goto yy173; } else { - if (yych != '#') goto yy210; + if (yych == '#') goto yy176; } } - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'h') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy214; - } else { - if (yych <= ' ') goto yy214; - if (yych <= 'c') goto yy207; - if (yych <= 'e') goto yy214; - } - } else { - if (yych <= 'o') { - if (yych <= 'i') goto yy214; - if (yych == 'l') goto yy214; - } else { - if (yych <= 'p') goto yy214; - if (yych == 'u') goto yy214; - } - } -yy207: + ++YYCURSOR; +yy172: { token = cursor = (const uchar *) s->source; limit = cursor + s->bytes_left; goto scanner_loop; } -yy208: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy212; -yy209: - { goto ppdirective; } -yy210: - yych = *++YYCURSOR; - goto yy207; -yy211: +yy173: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy212: if (yych <= '\n') { - if (yych == '\t') goto yy211; - goto yy209; + if (yych == '\t') goto yy173; } else { - if (yych <= '\f') goto yy211; - if (yych == ' ') goto yy211; - goto yy209; + if (yych <= '\f') goto yy173; + if (yych == ' ') goto yy173; } -yy213: + { goto ppdirective; } +yy176: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'h') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy178; + goto yy172; + } else { + if (yych <= ' ') goto yy178; + if (yych <= 'c') goto yy172; + if (yych <= 'e') goto yy178; + goto yy172; + } + } else { + if (yych <= 'o') { + if (yych <= 'i') goto yy178; + if (yych == 'l') goto yy178; + goto yy172; + } else { + if (yych <= 'p') goto yy178; + if (yych == 'u') goto yy178; + goto yy172; + } + } +yy177: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; -yy214: +yy178: if (yych <= 'h') { if (yych <= ' ') { - if (yych == '\t') goto yy213; - if (yych >= ' ') goto yy213; + if (yych == '\t') goto yy177; + if (yych >= ' ') goto yy177; } else { - if (yych <= 'c') goto yy215; - if (yych <= 'd') goto yy220; - if (yych <= 'e') goto yy217; + if (yych <= 'c') goto yy179; + if (yych <= 'd') goto yy180; + if (yych <= 'e') goto yy181; } } else { if (yych <= 'o') { - if (yych <= 'i') goto yy218; - if (yych == 'l') goto yy221; + if (yych <= 'i') goto yy182; + if (yych == 'l') goto yy183; } else { - if (yych <= 'p') goto yy216; - if (yych == 'u') goto yy219; + if (yych <= 'p') goto yy184; + if (yych == 'u') goto yy185; } } -yy215: +yy179: YYCURSOR = YYMARKER; - if (yyaccept <= 0) { - goto yy207; + if (yyaccept == 0) { + goto yy172; } else { - goto yy239; + goto yy191; } -yy216: +yy180: yych = *++YYCURSOR; - if (yych == 'r') goto yy272; - goto yy215; -yy217: + if (yych == 'e') goto yy186; + goto yy179; +yy181: yych = *++YYCURSOR; if (yych <= 'm') { - if (yych == 'l') goto yy255; - goto yy215; + if (yych == 'l') goto yy187; + goto yy179; } else { - if (yych <= 'n') goto yy256; - if (yych == 'r') goto yy257; - goto yy215; + if (yych <= 'n') goto yy188; + if (yych == 'r') goto yy189; + goto yy179; } -yy218: +yy182: yych = *++YYCURSOR; - if (yych == 'f') goto yy238; - if (yych == 'n') goto yy237; - goto yy215; -yy219: + if (yych == 'f') goto yy190; + if (yych == 'n') goto yy192; + goto yy179; +yy183: yych = *++YYCURSOR; - if (yych == 'n') goto yy232; - goto yy215; -yy220: + if (yych == 'i') goto yy193; + goto yy179; +yy184: yych = *++YYCURSOR; - if (yych == 'e') goto yy226; - goto yy215; -yy221: + if (yych == 'r') goto yy194; + goto yy179; +yy185: yych = *++YYCURSOR; - if (yych != 'i') goto yy215; + if (yych == 'n') goto yy195; + goto yy179; +yy186: yych = *++YYCURSOR; - if (yych != 'n') goto yy215; + if (yych == 'f') goto yy196; + goto yy179; +yy187: yych = *++YYCURSOR; - if (yych != 'e') goto yy215; - ++YYCURSOR; - { RET(TOKEN_PP_LINE); } -yy226: + if (yych == 'i') goto yy197; + if (yych == 's') goto yy198; + goto yy179; +yy188: yych = *++YYCURSOR; - if (yych != 'f') goto yy215; + if (yych == 'd') goto yy199; + goto yy179; +yy189: yych = *++YYCURSOR; - if (yych != 'i') goto yy215; + if (yych == 'r') goto yy200; + goto yy179; +yy190: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'd') goto yy201; + if (yych == 'n') goto yy202; +yy191: + { RET(TOKEN_PP_IF); } +yy192: yych = *++YYCURSOR; - if (yych != 'n') goto yy215; + if (yych == 'c') goto yy203; + goto yy179; +yy193: yych = *++YYCURSOR; - if (yych != 'e') goto yy215; - ++YYCURSOR; - { RET(TOKEN_PP_DEFINE); } -yy232: + if (yych == 'n') goto yy204; + goto yy179; +yy194: yych = *++YYCURSOR; - if (yych != 'd') goto yy215; + if (yych == 'a') goto yy205; + goto yy179; +yy195: yych = *++YYCURSOR; - if (yych != 'e') goto yy215; + if (yych == 'd') goto yy206; + goto yy179; +yy196: yych = *++YYCURSOR; - if (yych != 'f') goto yy215; - ++YYCURSOR; - { RET(TOKEN_PP_UNDEF); } -yy237: + if (yych == 'i') goto yy207; + goto yy179; +yy197: yych = *++YYCURSOR; - if (yych == 'c') goto yy249; - goto yy215; -yy238: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'd') goto yy241; - if (yych == 'n') goto yy240; -yy239: - { RET(TOKEN_PP_IF); } -yy240: + if (yych == 'f') goto yy208; + goto yy179; +yy198: yych = *++YYCURSOR; - if (yych == 'd') goto yy245; - goto yy215; -yy241: + if (yych == 'e') goto yy210; + goto yy179; +yy199: yych = *++YYCURSOR; - if (yych != 'e') goto yy215; + if (yych == 'i') goto yy212; + goto yy179; +yy200: yych = *++YYCURSOR; - if (yych != 'f') goto yy215; - ++YYCURSOR; - { RET(TOKEN_PP_IFDEF); } -yy245: + if (yych == 'o') goto yy213; + goto yy179; +yy201: yych = *++YYCURSOR; - if (yych != 'e') goto yy215; + if (yych == 'e') goto yy214; + goto yy179; +yy202: yych = *++YYCURSOR; - if (yych != 'f') goto yy215; - ++YYCURSOR; - { RET(TOKEN_PP_IFNDEF); } -yy249: + if (yych == 'd') goto yy215; + goto yy179; +yy203: yych = *++YYCURSOR; - if (yych != 'l') goto yy215; + if (yych == 'l') goto yy216; + goto yy179; +yy204: + yych = *++YYCURSOR; + if (yych == 'e') goto yy217; + goto yy179; +yy205: yych = *++YYCURSOR; - if (yych != 'u') goto yy215; + if (yych == 'g') goto yy219; + goto yy179; +yy206: yych = *++YYCURSOR; - if (yych != 'd') goto yy215; + if (yych == 'e') goto yy220; + goto yy179; +yy207: yych = *++YYCURSOR; - if (yych != 'e') goto yy215; + if (yych == 'n') goto yy221; + goto yy179; +yy208: ++YYCURSOR; - { RET(TOKEN_PP_INCLUDE); } -yy255: + { RET(TOKEN_PP_ELIF); } +yy210: + ++YYCURSOR; + { RET(TOKEN_PP_ELSE); } +yy212: yych = *++YYCURSOR; - if (yych == 'i') goto yy266; - if (yych == 's') goto yy267; - goto yy215; -yy256: + if (yych == 'f') goto yy222; + goto yy179; +yy213: yych = *++YYCURSOR; - if (yych == 'd') goto yy262; - goto yy215; -yy257: + if (yych == 'r') goto yy224; + goto yy179; +yy214: yych = *++YYCURSOR; - if (yych != 'r') goto yy215; + if (yych == 'f') goto yy226; + goto yy179; +yy215: yych = *++YYCURSOR; - if (yych != 'o') goto yy215; + if (yych == 'e') goto yy228; + goto yy179; +yy216: yych = *++YYCURSOR; - if (yych != 'r') goto yy215; + if (yych == 'u') goto yy229; + goto yy179; +yy217: ++YYCURSOR; - { RET(TOKEN_PP_ERROR); } -yy262: + { RET(TOKEN_PP_LINE); } +yy219: yych = *++YYCURSOR; - if (yych != 'i') goto yy215; + if (yych == 'm') goto yy230; + goto yy179; +yy220: + yych = *++YYCURSOR; + if (yych == 'f') goto yy231; + goto yy179; +yy221: yych = *++YYCURSOR; - if (yych != 'f') goto yy215; + if (yych == 'e') goto yy233; + goto yy179; +yy222: ++YYCURSOR; { RET(TOKEN_PP_ENDIF); } -yy266: - yych = *++YYCURSOR; - if (yych == 'f') goto yy270; - goto yy215; -yy267: - yych = *++YYCURSOR; - if (yych != 'e') goto yy215; +yy224: ++YYCURSOR; - { RET(TOKEN_PP_ELSE); } -yy270: + { RET(TOKEN_PP_ERROR); } +yy226: ++YYCURSOR; - { RET(TOKEN_PP_ELIF); } -yy272: + { RET(TOKEN_PP_IFDEF); } +yy228: yych = *++YYCURSOR; - if (yych != 'a') goto yy215; + if (yych == 'f') goto yy235; + goto yy179; +yy229: yych = *++YYCURSOR; - if (yych != 'g') goto yy215; + if (yych == 'd') goto yy237; + goto yy179; +yy230: yych = *++YYCURSOR; - if (yych != 'm') goto yy215; + if (yych == 'a') goto yy238; + goto yy179; +yy231: + ++YYCURSOR; + { RET(TOKEN_PP_UNDEF); } +yy233: + ++YYCURSOR; + { RET(TOKEN_PP_DEFINE); } +yy235: + ++YYCURSOR; + { RET(TOKEN_PP_IFNDEF); } +yy237: yych = *++YYCURSOR; - if (yych != 'a') goto yy215; + if (yych == 'e') goto yy240; + goto yy179; +yy238: ++YYCURSOR; { RET(TOKEN_PP_PRAGMA); } +yy240: + ++YYCURSOR; + { RET(TOKEN_PP_INCLUDE); } } @@ -1487,24 +1193,26 @@ Token preprocessor_lexer(IncludeState *s) yych = *YYCURSOR; if (yych <= '#') { if (yych <= '\r') { - if (yych <= 0x00) goto yy282; - if (yych <= 0x08) goto yy284; + if (yych <= 0x00) goto yy244; + if (yych <= 0x08) goto yy246; + goto yy248; } else { - if (yych <= 0x1F) goto yy284; - if (yych == '"') goto yy284; + if (yych <= 0x1F) goto yy246; + if (yych == '"') goto yy246; + goto yy248; } } else { if (yych <= '@') { - if (yych <= '$') goto yy284; - if (yych >= '@') goto yy284; + if (yych <= '$') goto yy246; + if (yych <= '?') goto yy248; + goto yy246; } else { - if (yych == '`') goto yy284; - if (yych >= 0x7F) goto yy284; + if (yych == '`') goto yy246; + if (yych <= '~') goto yy248; + goto yy246; } } - ++YYCURSOR; - { cursor--; RET(TOKEN_BAD_CHARS); } -yy282: +yy244: ++YYCURSOR; { if (eoi) @@ -1517,9 +1225,12 @@ Token preprocessor_lexer(IncludeState *s) } goto bad_chars; } -yy284: +yy246: ++YYCURSOR; { goto bad_chars; } +yy248: + ++YYCURSOR; + { cursor--; RET(TOKEN_BAD_CHARS); } }