From b2eb7b978d7b9601bf61000e77c4e32cb8e14f27 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 21 Feb 2009 21:29:59 -0500 Subject: [PATCH] Updated re2c-generated code. --- mojoshader_lexer.c | 1238 +++++++++++++++++++++++--------------------- 1 file changed, 644 insertions(+), 594 deletions(-) diff --git a/mojoshader_lexer.c b/mojoshader_lexer.c index fd35e21c..7fca27d9 100644 --- a/mojoshader_lexer.c +++ b/mojoshader_lexer.c @@ -61,24 +61,28 @@ static Token update_state(IncludeState *s, int eoi, const uchar *cur, Token preprocessor_lexer(IncludeState *s) { const uchar *cursor = (const uchar *) s->source; - const uchar *token; + const uchar *token = cursor; const uchar *matchptr; const uchar *limit = cursor + s->bytes_left; int eoi = 0; int saw_newline = 0; + + + // preprocessor directives are only valid at start of line. + if (s->tokenval == ((Token) '\n')) + goto ppdirective; // may jump back to scanner_loop. + scanner_loop: if (YYLIMIT == YYCURSOR) YYFILL(1); token = cursor; - - { YYCTYPE yych; unsigned int yyaccept = 0; - if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy60; @@ -185,23 +189,23 @@ Token preprocessor_lexer(IncludeState *s) yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x08) goto yy3; - if (yych <= '\r') goto yy233; - if (yych == ' ') goto yy233; + if (yych <= '\r') goto yy176; + if (yych == ' ') goto yy176; yy3: { goto bad_chars; } yy4: ++YYCURSOR; if ((yych = *YYCURSOR) <= '.') { - if (yych == '*') goto yy230; + if (yych == '*') goto yy173; } else { - if (yych <= '/') goto yy228; - if (yych == '=') goto yy226; + if (yych <= '/') goto yy171; + if (yych == '=') goto yy169; } { RET('/'); } yy6: ++YYCURSOR; yych = *YYCURSOR; - goto yy225; + goto yy168; yy7: { RET(TOKEN_IDENTIFIER); } yy8: @@ -209,21 +213,21 @@ Token preprocessor_lexer(IncludeState *s) yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= 'T') { - if (yych == 'L') goto yy200; - goto yy216; + if (yych == 'L') goto yy143; + goto yy159; } else { - if (yych <= 'U') goto yy200; - if (yych <= 'W') goto yy216; - goto yy217; + if (yych <= 'U') goto yy143; + if (yych <= 'W') goto yy159; + goto yy160; } } else { if (yych <= 't') { - if (yych == 'l') goto yy200; - goto yy216; + if (yych == 'l') goto yy143; + goto yy159; } else { - if (yych <= 'u') goto yy200; - if (yych == 'x') goto yy217; - goto yy216; + if (yych <= 'u') goto yy143; + if (yych == 'x') goto yy160; + goto yy159; } } yy9: @@ -231,17 +235,17 @@ Token preprocessor_lexer(IncludeState *s) yy10: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - goto yy198; + goto yy141; yy11: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy3; if (yych == '\r') goto yy3; - goto yy188; + goto yy131; yy12: ++YYCURSOR; if ((yych = *YYCURSOR) <= '/') goto yy13; - if (yych <= '9') goto yy179; + if (yych <= '9') goto yy122; yy13: { RET('.'); } yy14: @@ -249,84 +253,65 @@ Token preprocessor_lexer(IncludeState *s) yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy3; if (yych == '\r') goto yy3; - goto yy170; + goto yy112; yy15: ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') goto yy16; - if (yych <= '=') goto yy163; - if (yych <= '>') goto yy165; + if (yych <= '=') goto yy105; + if (yych <= '>') goto yy107; yy16: { RET('>'); } yy17: ++YYCURSOR; if ((yych = *YYCURSOR) <= ';') goto yy18; - if (yych <= '<') goto yy159; - if (yych <= '=') goto yy157; + if (yych <= '<') goto yy101; + if (yych <= '=') goto yy99; yy18: { RET('<'); } yy19: ++YYCURSOR; - if ((yych = *YYCURSOR) == '+') goto yy153; - if (yych == '=') goto yy155; + if ((yych = *YYCURSOR) == '+') goto yy95; + if (yych == '=') goto yy97; { RET('+'); } yy21: ++YYCURSOR; - if ((yych = *YYCURSOR) == '-') goto yy149; - if (yych == '=') goto yy151; + if ((yych = *YYCURSOR) == '-') goto yy91; + if (yych == '=') goto yy93; { RET('-'); } yy23: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy147; + if ((yych = *YYCURSOR) == '=') goto yy89; { RET('*'); } yy25: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy145; + if ((yych = *YYCURSOR) == '=') goto yy87; { RET('%'); } yy27: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy143; + if ((yych = *YYCURSOR) == '=') goto yy85; { RET('^'); } yy29: ++YYCURSOR; - if ((yych = *YYCURSOR) == '&') goto yy139; - if (yych == '=') goto yy141; + if ((yych = *YYCURSOR) == '&') goto yy81; + if (yych == '=') goto yy83; { RET('&'); } yy31: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy137; - if (yych == '|') goto yy135; + if ((yych = *YYCURSOR) == '=') goto yy79; + if (yych == '|') goto yy77; { RET('|'); } yy33: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy133; + if ((yych = *YYCURSOR) == '=') goto yy75; { RET('='); } yy35: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy131; + if ((yych = *YYCURSOR) == '=') goto yy73; { RET('!'); } yy37: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'c') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy72; - goto yy3; - } else { - if (yych <= ' ') goto yy72; - if (yych == '#') goto yy79; - goto yy3; - } - } else { - if (yych <= 'k') { - if (yych <= 'e') goto yy72; - if (yych == 'i') goto yy72; - goto yy3; - } else { - if (yych <= 'l') goto yy72; - if (yych == 'u') goto yy72; - goto yy3; - } - } + yych = *++YYCURSOR; + if (yych == '#') goto yy71; + goto yy3; yy38: ++YYCURSOR; { RET('('); } @@ -397,891 +382,734 @@ Token preprocessor_lexer(IncludeState *s) goto yy63; } yy71: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); - yych = *YYCURSOR; -yy72: - if (yych <= 'e') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy71; - } else { - if (yych <= ' ') goto yy71; - if (yych <= 'c') goto yy73; - if (yych <= 'd') goto yy77; - goto yy74; - } - } else { - if (yych <= 'k') { - if (yych == 'i') goto yy75; - } else { - if (yych <= 'l') goto yy78; - if (yych == 'u') goto yy76; - } - } -yy73: - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy3; - } else { - goto yy9; - } - } else { - if (yyaccept <= 2) { - goto yy98; - } else { - goto yy181; - } - } -yy74: - yych = *++YYCURSOR; - if (yych <= 'm') { - if (yych == 'l') goto yy114; - goto yy73; - } else { - if (yych <= 'n') goto yy115; - if (yych == 'r') goto yy116; - goto yy73; - } -yy75: - yych = *++YYCURSOR; - if (yych == 'f') goto yy97; - if (yych == 'n') goto yy96; - goto yy73; -yy76: - yych = *++YYCURSOR; - if (yych == 'n') goto yy91; - goto yy73; -yy77: - yych = *++YYCURSOR; - if (yych == 'e') goto yy85; - goto yy73; -yy78: - yych = *++YYCURSOR; - if (yych == 'i') goto yy81; - goto yy73; -yy79: ++YYCURSOR; { RET(TOKEN_HASHHASH); } -yy81: - yych = *++YYCURSOR; - if (yych != 'n') goto yy73; - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_LINE); } -yy85: - yych = *++YYCURSOR; - if (yych != 'f') goto yy73; - yych = *++YYCURSOR; - if (yych != 'i') goto yy73; - yych = *++YYCURSOR; - if (yych != 'n') goto yy73; - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_DEFINE); } -yy91: - yych = *++YYCURSOR; - if (yych != 'd') goto yy73; - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - yych = *++YYCURSOR; - if (yych != 'f') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_UNDEF); } -yy96: - yych = *++YYCURSOR; - if (yych == 'c') goto yy108; - goto yy73; -yy97: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'd') goto yy100; - if (yych == 'n') goto yy99; -yy98: - { RET(TOKEN_PP_IF); } -yy99: - yych = *++YYCURSOR; - if (yych == 'd') goto yy104; - goto yy73; -yy100: - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - yych = *++YYCURSOR; - if (yych != 'f') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_IFDEF); } -yy104: - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - yych = *++YYCURSOR; - if (yych != 'f') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_IFNDEF); } -yy108: - yych = *++YYCURSOR; - if (yych != 'l') goto yy73; - yych = *++YYCURSOR; - if (yych != 'u') goto yy73; - yych = *++YYCURSOR; - if (yych != 'd') goto yy73; - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_INCLUDE); } -yy114: - yych = *++YYCURSOR; - if (yych == 'i') goto yy125; - if (yych == 's') goto yy126; - goto yy73; -yy115: - yych = *++YYCURSOR; - if (yych == 'd') goto yy121; - goto yy73; -yy116: - yych = *++YYCURSOR; - if (yych != 'r') goto yy73; - yych = *++YYCURSOR; - if (yych != 'o') goto yy73; - yych = *++YYCURSOR; - if (yych != 'r') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_ERROR); } -yy121: - yych = *++YYCURSOR; - if (yych != 'i') goto yy73; - yych = *++YYCURSOR; - if (yych != 'f') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_ENDIF); } -yy125: - yych = *++YYCURSOR; - if (yych == 'f') goto yy129; - goto yy73; -yy126: - yych = *++YYCURSOR; - if (yych != 'e') goto yy73; - ++YYCURSOR; - { RET(TOKEN_PP_ELSE); } -yy129: - ++YYCURSOR; - { RET(TOKEN_PP_ELIF); } -yy131: +yy73: ++YYCURSOR; { RET(TOKEN_NEQ); } -yy133: +yy75: ++YYCURSOR; { RET(TOKEN_EQL); } -yy135: +yy77: ++YYCURSOR; { RET(TOKEN_OROR); } -yy137: +yy79: ++YYCURSOR; { RET(TOKEN_ORASSIGN); } -yy139: +yy81: ++YYCURSOR; { RET(TOKEN_ANDAND); } -yy141: +yy83: ++YYCURSOR; { RET(TOKEN_ANDASSIGN); } -yy143: +yy85: ++YYCURSOR; { RET(TOKEN_XORASSIGN); } -yy145: +yy87: ++YYCURSOR; { RET(TOKEN_MODASSIGN); } -yy147: +yy89: ++YYCURSOR; { RET(TOKEN_MULTASSIGN); } -yy149: +yy91: ++YYCURSOR; { RET(TOKEN_DECREMENT); } -yy151: +yy93: ++YYCURSOR; { RET(TOKEN_SUBASSIGN); } -yy153: +yy95: ++YYCURSOR; { RET(TOKEN_INCREMENT); } -yy155: +yy97: ++YYCURSOR; { RET(TOKEN_ADDASSIGN); } -yy157: +yy99: ++YYCURSOR; { RET(TOKEN_LEQ); } -yy159: +yy101: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy161; + if ((yych = *YYCURSOR) == '=') goto yy103; { RET(TOKEN_LSHIFT); } -yy161: +yy103: ++YYCURSOR; { RET(TOKEN_LSHIFTASSIGN); } -yy163: +yy105: ++YYCURSOR; { RET(TOKEN_GEQ); } -yy165: +yy107: ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy167; + if ((yych = *YYCURSOR) == '=') goto yy109; { RET(TOKEN_RSHIFT); } -yy167: +yy109: ++YYCURSOR; { RET(TOKEN_RSHIFTASSIGN); } -yy169: +yy111: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy170: +yy112: if (yych <= '\r') { - if (yych == '\n') goto yy73; - if (yych <= '\f') goto yy169; - goto yy73; + if (yych == '\n') goto yy113; + if (yych <= '\f') goto yy111; } else { if (yych <= '"') { - if (yych <= '!') goto yy169; - goto yy172; + if (yych <= '!') goto yy111; + goto yy115; } else { - if (yych != '\\') goto yy169; + if (yych == '\\') goto yy114; + goto yy111; } } -yy171: +yy113: + YYCURSOR = YYMARKER; + if (yyaccept <= 1) { + if (yyaccept <= 0) { + goto yy3; + } else { + goto yy9; + } + } else { + goto yy124; + } +yy114: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { - if (yych == '"') goto yy169; - goto yy73; + if (yych == '"') goto yy111; + goto yy113; } else { - if (yych <= '\'') goto yy169; - if (yych <= '/') goto yy73; - goto yy175; + if (yych <= '\'') goto yy111; + if (yych <= '/') goto yy113; + goto yy118; } } else { if (yych <= '[') { - if (yych == '?') goto yy169; - goto yy73; + if (yych == '?') goto yy111; + goto yy113; } else { - if (yych <= '\\') goto yy169; - if (yych <= '`') goto yy73; - goto yy169; + if (yych <= '\\') goto yy111; + if (yych <= '`') goto yy113; + goto yy111; } } } else { if (yych <= 'r') { if (yych <= 'm') { - if (yych == 'f') goto yy169; - goto yy73; + if (yych == 'f') goto yy111; + goto yy113; } else { - if (yych <= 'n') goto yy169; - if (yych <= 'q') goto yy73; - goto yy169; + if (yych <= 'n') goto yy111; + if (yych <= 'q') goto yy113; + goto yy111; } } else { if (yych <= 'u') { - if (yych == 't') goto yy169; - goto yy73; + if (yych == 't') goto yy111; + goto yy113; } else { - if (yych <= 'v') goto yy169; - if (yych == 'x') goto yy174; - goto yy73; + if (yych <= 'v') goto yy111; + if (yych == 'x') goto yy117; + goto yy113; } } } -yy172: +yy115: ++YYCURSOR; { RET(TOKEN_STRING_LITERAL); } -yy174: +yy117: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy73; - if (yych <= '9') goto yy177; - goto yy73; + if (yych <= '/') goto yy113; + if (yych <= '9') goto yy120; + goto yy113; } else { - if (yych <= 'F') goto yy177; - if (yych <= '`') goto yy73; - if (yych <= 'f') goto yy177; - goto yy73; + if (yych <= 'F') goto yy120; + if (yych <= '`') goto yy113; + if (yych <= 'f') goto yy120; + goto yy113; } -yy175: +yy118: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '!') { if (yych <= '\n') { - if (yych <= '\t') goto yy169; - goto yy73; + if (yych <= '\t') goto yy111; + goto yy113; } else { - if (yych == '\r') goto yy73; - goto yy169; + if (yych == '\r') goto yy113; + goto yy111; } } else { if (yych <= '7') { - if (yych <= '"') goto yy172; - if (yych <= '/') goto yy169; - goto yy175; + if (yych <= '"') goto yy115; + if (yych <= '/') goto yy111; + goto yy118; } else { - if (yych == '\\') goto yy171; - goto yy169; + if (yych == '\\') goto yy114; + goto yy111; } } -yy177: +yy120: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') { if (yych <= '\f') { - if (yych == '\n') goto yy73; - goto yy169; + if (yych == '\n') goto yy113; + goto yy111; } else { - if (yych <= '\r') goto yy73; - if (yych == '"') goto yy172; - goto yy169; + if (yych <= '\r') goto yy113; + if (yych == '"') goto yy115; + goto yy111; } } else { if (yych <= '[') { - if (yych <= '9') goto yy177; - if (yych <= '@') goto yy169; - if (yych <= 'F') goto yy177; - goto yy169; + if (yych <= '9') goto yy120; + if (yych <= '@') goto yy111; + if (yych <= 'F') goto yy120; + goto yy111; } else { - if (yych <= '\\') goto yy171; - if (yych <= '`') goto yy169; - if (yych <= 'f') goto yy177; - goto yy169; + if (yych <= '\\') goto yy114; + if (yych <= '`') goto yy111; + if (yych <= 'f') goto yy120; + goto yy111; } } -yy179: - yyaccept = 3; +yy122: + yyaccept = 2; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= 'D') { - if (yych <= '/') goto yy181; - if (yych <= '9') goto yy179; + if (yych <= '/') goto yy124; + if (yych <= '9') goto yy122; } else { - if (yych <= 'E') goto yy182; - if (yych <= 'F') goto yy183; + if (yych <= 'E') goto yy125; + if (yych <= 'F') goto yy126; } } else { if (yych <= 'e') { - if (yych <= 'L') goto yy183; - if (yych >= 'e') goto yy182; + if (yych <= 'L') goto yy126; + if (yych >= 'e') goto yy125; } else { - if (yych <= 'f') goto yy183; - if (yych == 'l') goto yy183; + if (yych <= 'f') goto yy126; + if (yych == 'l') goto yy126; } } -yy181: +yy124: { RET(TOKEN_FLOAT_LITERAL); } -yy182: +yy125: yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy184; - goto yy73; + if (yych == '+') goto yy127; + goto yy113; } else { - if (yych <= '-') goto yy184; - if (yych <= '/') goto yy73; - if (yych <= '9') goto yy185; - goto yy73; + if (yych <= '-') goto yy127; + if (yych <= '/') goto yy113; + if (yych <= '9') goto yy128; + goto yy113; } -yy183: +yy126: yych = *++YYCURSOR; - goto yy181; -yy184: + goto yy124; +yy127: yych = *++YYCURSOR; - if (yych <= '/') goto yy73; - if (yych >= ':') goto yy73; -yy185: + if (yych <= '/') goto yy113; + if (yych >= ':') goto yy113; +yy128: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { - if (yych <= '/') goto yy181; - goto yy185; + if (yych <= '/') goto yy124; + goto yy128; } else { - if (yych == 'F') goto yy183; - goto yy181; + if (yych == 'F') goto yy126; + goto yy124; } } else { if (yych <= 'f') { - if (yych <= 'L') goto yy183; - if (yych <= 'e') goto yy181; - goto yy183; + if (yych <= 'L') goto yy126; + if (yych <= 'e') goto yy124; + goto yy126; } else { - if (yych == 'l') goto yy183; - goto yy181; + if (yych == 'l') goto yy126; + goto yy124; } } -yy187: +yy130: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy188: +yy131: if (yych <= '\r') { - if (yych == '\n') goto yy73; - if (yych <= '\f') goto yy187; - goto yy73; + if (yych == '\n') goto yy113; + if (yych <= '\f') goto yy130; + goto yy113; } else { if (yych <= '\'') { - if (yych <= '&') goto yy187; - goto yy190; + if (yych <= '&') goto yy130; + goto yy133; } else { - if (yych != '\\') goto yy187; + if (yych != '\\') goto yy130; } } -yy189: +yy132: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { - if (yych == '"') goto yy187; - goto yy73; + if (yych == '"') goto yy130; + goto yy113; } else { - if (yych <= '\'') goto yy187; - if (yych <= '/') goto yy73; - goto yy192; + if (yych <= '\'') goto yy130; + if (yych <= '/') goto yy113; + goto yy135; } } else { if (yych <= '[') { - if (yych == '?') goto yy187; - goto yy73; + if (yych == '?') goto yy130; + goto yy113; } else { - if (yych <= '\\') goto yy187; - if (yych <= '`') goto yy73; - goto yy187; + if (yych <= '\\') goto yy130; + if (yych <= '`') goto yy113; + goto yy130; } } } else { if (yych <= 'r') { if (yych <= 'm') { - if (yych == 'f') goto yy187; - goto yy73; + if (yych == 'f') goto yy130; + goto yy113; } else { - if (yych <= 'n') goto yy187; - if (yych <= 'q') goto yy73; - goto yy187; + if (yych <= 'n') goto yy130; + if (yych <= 'q') goto yy113; + goto yy130; } } else { if (yych <= 'u') { - if (yych == 't') goto yy187; - goto yy73; + if (yych == 't') goto yy130; + goto yy113; } else { - if (yych <= 'v') goto yy187; - if (yych == 'x') goto yy191; - goto yy73; + if (yych <= 'v') goto yy130; + if (yych == 'x') goto yy134; + goto yy113; } } } -yy190: +yy133: yych = *++YYCURSOR; goto yy9; -yy191: +yy134: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy73; - if (yych <= '9') goto yy194; - goto yy73; + if (yych <= '/') goto yy113; + if (yych <= '9') goto yy137; + goto yy113; } else { - if (yych <= 'F') goto yy194; - if (yych <= '`') goto yy73; - if (yych <= 'f') goto yy194; - goto yy73; + if (yych <= 'F') goto yy137; + if (yych <= '`') goto yy113; + if (yych <= 'f') goto yy137; + goto yy113; } -yy192: +yy135: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '&') { if (yych <= '\n') { - if (yych <= '\t') goto yy187; - goto yy73; + if (yych <= '\t') goto yy130; + goto yy113; } else { - if (yych == '\r') goto yy73; - goto yy187; + if (yych == '\r') goto yy113; + goto yy130; } } else { if (yych <= '7') { - if (yych <= '\'') goto yy190; - if (yych <= '/') goto yy187; - goto yy192; + if (yych <= '\'') goto yy133; + if (yych <= '/') goto yy130; + goto yy135; } else { - if (yych == '\\') goto yy189; - goto yy187; + if (yych == '\\') goto yy132; + goto yy130; } } -yy194: +yy137: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') { if (yych <= '\f') { - if (yych == '\n') goto yy73; - goto yy187; + if (yych == '\n') goto yy113; + goto yy130; } else { - if (yych <= '\r') goto yy73; - if (yych == '\'') goto yy190; - goto yy187; + if (yych <= '\r') goto yy113; + if (yych == '\'') goto yy133; + goto yy130; } } else { if (yych <= '[') { - if (yych <= '9') goto yy194; - if (yych <= '@') goto yy187; - if (yych <= 'F') goto yy194; - goto yy187; + if (yych <= '9') goto yy137; + if (yych <= '@') goto yy130; + if (yych <= 'F') goto yy137; + goto yy130; } else { - if (yych <= '\\') goto yy189; - if (yych <= '`') goto yy187; - if (yych <= 'f') goto yy194; - goto yy187; + if (yych <= '\\') goto yy132; + if (yych <= '`') goto yy130; + if (yych <= 'f') goto yy137; + goto yy130; } } -yy196: - yyaccept = 3; +yy139: + yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy207; - if (yych == 'e') goto yy207; - goto yy206; -yy197: + if (yych == 'E') goto yy150; + if (yych == 'e') goto yy150; + goto yy149; +yy140: yyaccept = 1; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; -yy198: +yy141: if (yych <= 'L') { if (yych <= '9') { - if (yych == '.') goto yy196; + if (yych == '.') goto yy139; if (yych <= '/') goto yy9; - goto yy197; + goto yy140; } else { - if (yych == 'E') goto yy199; + if (yych == 'E') goto yy142; if (yych <= 'K') goto yy9; - goto yy200; + goto yy143; } } else { if (yych <= 'e') { - if (yych == 'U') goto yy200; + if (yych == 'U') goto yy143; if (yych <= 'd') goto yy9; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; - goto yy200; + goto yy143; } else { - if (yych == 'u') goto yy200; + if (yych == 'u') goto yy143; goto yy9; } } } -yy199: +yy142: yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy202; - goto yy73; + if (yych == '+') goto yy145; + goto yy113; } else { - if (yych <= '-') goto yy202; - if (yych <= '/') goto yy73; - if (yych <= '9') goto yy203; - goto yy73; + if (yych <= '-') goto yy145; + if (yych <= '/') goto yy113; + if (yych <= '9') goto yy146; + goto yy113; } -yy200: +yy143: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { - if (yych == 'L') goto yy200; + if (yych == 'L') goto yy143; if (yych <= 'T') goto yy9; - goto yy200; + goto yy143; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; - goto yy200; + goto yy143; } else { - if (yych == 'u') goto yy200; + if (yych == 'u') goto yy143; goto yy9; } } -yy202: +yy145: yych = *++YYCURSOR; - if (yych <= '/') goto yy73; - if (yych >= ':') goto yy73; -yy203: + if (yych <= '/') goto yy113; + if (yych >= ':') goto yy113; +yy146: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { - if (yych <= '/') goto yy181; - goto yy203; + if (yych <= '/') goto yy124; + goto yy146; } else { - if (yych == 'F') goto yy183; - goto yy181; + if (yych == 'F') goto yy126; + goto yy124; } } else { if (yych <= 'f') { - if (yych <= 'L') goto yy183; - if (yych <= 'e') goto yy181; - goto yy183; + if (yych <= 'L') goto yy126; + if (yych <= 'e') goto yy124; + goto yy126; } else { - if (yych == 'l') goto yy183; - goto yy181; + if (yych == 'l') goto yy126; + goto yy124; } } -yy205: - yyaccept = 3; +yy148: + yyaccept = 2; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; -yy206: +yy149: if (yych <= 'K') { if (yych <= 'D') { - if (yych <= '/') goto yy181; - if (yych <= '9') goto yy205; - goto yy181; + if (yych <= '/') goto yy124; + if (yych <= '9') goto yy148; + goto yy124; } else { - if (yych <= 'E') goto yy211; - if (yych <= 'F') goto yy183; - goto yy181; + if (yych <= 'E') goto yy154; + if (yych <= 'F') goto yy126; + goto yy124; } } else { if (yych <= 'e') { - if (yych <= 'L') goto yy183; - if (yych <= 'd') goto yy181; - goto yy211; + if (yych <= 'L') goto yy126; + if (yych <= 'd') goto yy124; + goto yy154; } else { - if (yych <= 'f') goto yy183; - if (yych == 'l') goto yy183; - goto yy181; + if (yych <= 'f') goto yy126; + if (yych == 'l') goto yy126; + goto yy124; } } -yy207: +yy150: yych = *++YYCURSOR; if (yych <= ',') { - if (yych != '+') goto yy73; + if (yych != '+') goto yy113; } else { - if (yych <= '-') goto yy208; - if (yych <= '/') goto yy73; - if (yych <= '9') goto yy209; - goto yy73; + if (yych <= '-') goto yy151; + if (yych <= '/') goto yy113; + if (yych <= '9') goto yy152; + goto yy113; } -yy208: +yy151: yych = *++YYCURSOR; - if (yych <= '/') goto yy73; - if (yych >= ':') goto yy73; -yy209: + if (yych <= '/') goto yy113; + if (yych >= ':') goto yy113; +yy152: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { - if (yych <= '/') goto yy181; - goto yy209; + if (yych <= '/') goto yy124; + goto yy152; } else { - if (yych == 'F') goto yy183; - goto yy181; + if (yych == 'F') goto yy126; + goto yy124; } } else { if (yych <= 'f') { - if (yych <= 'L') goto yy183; - if (yych <= 'e') goto yy181; - goto yy183; + if (yych <= 'L') goto yy126; + if (yych <= 'e') goto yy124; + goto yy126; } else { - if (yych == 'l') goto yy183; - goto yy181; + if (yych == 'l') goto yy126; + goto yy124; } } -yy211: +yy154: yych = *++YYCURSOR; if (yych <= ',') { - if (yych != '+') goto yy73; + if (yych != '+') goto yy113; } else { - if (yych <= '-') goto yy212; - if (yych <= '/') goto yy73; - if (yych <= '9') goto yy213; - goto yy73; + if (yych <= '-') goto yy155; + if (yych <= '/') goto yy113; + if (yych <= '9') goto yy156; + goto yy113; } -yy212: +yy155: yych = *++YYCURSOR; - if (yych <= '/') goto yy73; - if (yych >= ':') goto yy73; -yy213: + if (yych <= '/') goto yy113; + if (yych >= ':') goto yy113; +yy156: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { - if (yych <= '/') goto yy181; - goto yy213; + if (yych <= '/') goto yy124; + goto yy156; } else { - if (yych == 'F') goto yy183; - goto yy181; + if (yych == 'F') goto yy126; + goto yy124; } } else { if (yych <= 'f') { - if (yych <= 'L') goto yy183; - if (yych <= 'e') goto yy181; - goto yy183; + if (yych <= 'L') goto yy126; + if (yych <= 'e') goto yy124; + goto yy126; } else { - if (yych == 'l') goto yy183; - goto yy181; + if (yych == 'l') goto yy126; + goto yy124; } } -yy215: +yy158: yyaccept = 1; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; -yy216: +yy159: if (yych <= 'L') { if (yych <= '9') { - if (yych == '.') goto yy196; + if (yych == '.') goto yy139; if (yych <= '/') goto yy9; - goto yy215; + goto yy158; } else { - if (yych == 'E') goto yy199; + if (yych == 'E') goto yy142; if (yych <= 'K') goto yy9; - goto yy222; + goto yy165; } } else { if (yych <= 'e') { - if (yych == 'U') goto yy222; + if (yych == 'U') goto yy165; if (yych <= 'd') goto yy9; - goto yy199; + goto yy142; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; - goto yy222; + goto yy165; } else { - if (yych == 'u') goto yy222; + if (yych == 'u') goto yy165; goto yy9; } } } -yy217: +yy160: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy73; - if (yych >= ':') goto yy73; + if (yych <= '/') goto yy113; + if (yych >= ':') goto yy113; } else { - if (yych <= 'F') goto yy218; - if (yych <= '`') goto yy73; - if (yych >= 'g') goto yy73; + if (yych <= 'F') goto yy161; + if (yych <= '`') goto yy113; + if (yych >= 'g') goto yy113; } -yy218: +yy161: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'T') { if (yych <= '@') { if (yych <= '/') goto yy9; - if (yych <= '9') goto yy218; + if (yych <= '9') goto yy161; goto yy9; } else { - if (yych <= 'F') goto yy218; + if (yych <= 'F') goto yy161; if (yych != 'L') goto yy9; } } else { if (yych <= 'k') { - if (yych <= 'U') goto yy220; + if (yych <= 'U') goto yy163; if (yych <= '`') goto yy9; - if (yych <= 'f') goto yy218; + if (yych <= 'f') goto yy161; goto yy9; } else { - if (yych <= 'l') goto yy220; + if (yych <= 'l') goto yy163; if (yych != 'u') goto yy9; } } -yy220: +yy163: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { - if (yych == 'L') goto yy220; + if (yych == 'L') goto yy163; if (yych <= 'T') goto yy9; - goto yy220; + goto yy163; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; - goto yy220; + goto yy163; } else { - if (yych == 'u') goto yy220; + if (yych == 'u') goto yy163; goto yy9; } } -yy222: +yy165: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { - if (yych == 'L') goto yy222; + if (yych == 'L') goto yy165; if (yych <= 'T') goto yy9; - goto yy222; + goto yy165; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; - goto yy222; + goto yy165; } else { - if (yych == 'u') goto yy222; + if (yych == 'u') goto yy165; goto yy9; } } -yy224: +yy167: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy225: +yy168: if (yych <= 'Z') { if (yych <= '/') goto yy7; - if (yych <= '9') goto yy224; + if (yych <= '9') goto yy167; if (yych <= '@') goto yy7; - goto yy224; + goto yy167; } else { if (yych <= '_') { if (yych <= '^') goto yy7; - goto yy224; + goto yy167; } else { if (yych <= '`') goto yy7; - if (yych <= 'z') goto yy224; + if (yych <= 'z') goto yy167; goto yy7; } } -yy226: +yy169: ++YYCURSOR; { RET(TOKEN_DIVASSIGN); } -yy228: +yy171: ++YYCURSOR; { goto singlelinecomment; } -yy230: +yy173: ++YYCURSOR; { goto multilinecomment; } -yy232: +yy175: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; -yy233: +yy176: if (yych <= '\f') { - if (yych <= 0x08) goto yy73; - if (yych != '\n') goto yy232; + if (yych <= 0x08) goto yy113; + if (yych != '\n') goto yy175; } else { - if (yych <= '\r') goto yy236; - if (yych == ' ') goto yy232; - goto yy73; + if (yych <= '\r') goto yy179; + if (yych == ' ') goto yy175; + goto yy113; } -yy234: +yy177: ++YYCURSOR; -yy235: +yy178: { s->line++; goto scanner_loop; } -yy236: +yy179: ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy234; - goto yy235; + if ((yych = *YYCURSOR) == '\n') goto yy177; + goto yy178; } @@ -1295,44 +1123,44 @@ Token preprocessor_lexer(IncludeState *s) if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\f') { - if (yych <= 0x00) goto yy244; - if (yych == '\n') goto yy241; - goto yy246; + if (yych <= 0x00) goto yy187; + if (yych == '\n') goto yy184; + goto yy189; } else { - if (yych <= '\r') goto yy243; - if (yych != '*') goto yy246; + if (yych <= '\r') goto yy186; + if (yych != '*') goto yy189; } ++YYCURSOR; - if ((yych = *YYCURSOR) == '/') goto yy248; -yy240: + if ((yych = *YYCURSOR) == '/') goto yy191; +yy183: { goto multilinecomment; } -yy241: +yy184: ++YYCURSOR; -yy242: +yy185: { s->line++; token = matchptr; saw_newline = 1; goto multilinecomment; } -yy243: +yy186: yych = *++YYCURSOR; - if (yych == '\n') goto yy247; - goto yy242; -yy244: + if (yych == '\n') goto yy190; + goto yy185; +yy187: ++YYCURSOR; { if (eoi) RET(TOKEN_INCOMPLETE_COMMENT); goto multilinecomment; } -yy246: +yy189: yych = *++YYCURSOR; - goto yy240; -yy247: + goto yy183; +yy190: yych = *++YYCURSOR; - goto yy242; -yy248: + goto yy185; +yy191: ++YYCURSOR; { if (saw_newline) @@ -1353,29 +1181,251 @@ Token preprocessor_lexer(IncludeState *s) if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\n') { - if (yych <= 0x00) goto yy255; - if (yych <= '\t') goto yy257; + if (yych <= 0x00) goto yy198; + if (yych <= '\t') goto yy200; } else { - if (yych == '\r') goto yy254; - goto yy257; + if (yych == '\r') goto yy197; + goto yy200; } ++YYCURSOR; -yy253: +yy196: { s->line++; token = matchptr; RET('\n'); } -yy254: +yy197: yych = *++YYCURSOR; - if (yych == '\n') goto yy259; - goto yy253; -yy255: + if (yych == '\n') goto yy202; + goto yy196; +yy198: ++YYCURSOR; { if (eoi) { RET(TOKEN_EOI); } goto singlelinecomment; } -yy257: +yy200: ++YYCURSOR; { goto singlelinecomment; } -yy259: +yy202: + ++YYCURSOR; + yych = *YYCURSOR; + goto yy196; +} + + +ppdirective: + if (YYLIMIT == YYCURSOR) YYFILL(1); + +{ + YYCTYPE yych; + unsigned int yyaccept = 0; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; + if (yych <= '\f') { + if (yych == '\t') goto yy207; + if (yych <= '\n') goto yy209; + goto yy207; + } else { + if (yych <= ' ') { + if (yych <= 0x1F) goto yy209; + goto yy207; + } else { + if (yych != '#') goto yy209; + } + } + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'e') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy213; + } else { + if (yych <= ' ') goto yy213; + if (yych >= 'd') goto yy213; + } + } else { + if (yych <= 'k') { + if (yych == 'i') goto yy213; + } else { + if (yych <= 'l') goto yy213; + if (yych == 'u') goto yy213; + } + } +yy206: + { cursor=(const uchar*)s->source; goto scanner_loop; } +yy207: + ++YYCURSOR; + yych = *YYCURSOR; + goto yy211; +yy208: + { goto ppdirective; } +yy209: + yych = *++YYCURSOR; + goto yy206; +yy210: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy211: + if (yych <= '\n') { + if (yych == '\t') goto yy210; + goto yy208; + } else { + if (yych <= '\f') goto yy210; + if (yych == ' ') goto yy210; + goto yy208; + } +yy212: ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; - goto yy253; +yy213: + if (yych <= 'e') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy212; + } else { + if (yych <= ' ') goto yy212; + if (yych <= 'c') goto yy214; + if (yych <= 'd') goto yy218; + goto yy215; + } + } else { + if (yych <= 'k') { + if (yych == 'i') goto yy216; + } else { + if (yych <= 'l') goto yy219; + if (yych == 'u') goto yy217; + } + } +yy214: + YYCURSOR = YYMARKER; + if (yyaccept <= 0) { + goto yy206; + } else { + goto yy237; + } +yy215: + yych = *++YYCURSOR; + if (yych <= 'm') { + if (yych == 'l') goto yy253; + goto yy214; + } else { + if (yych <= 'n') goto yy254; + if (yych == 'r') goto yy255; + goto yy214; + } +yy216: + yych = *++YYCURSOR; + if (yych == 'f') goto yy236; + if (yych == 'n') goto yy235; + goto yy214; +yy217: + yych = *++YYCURSOR; + if (yych == 'n') goto yy230; + goto yy214; +yy218: + yych = *++YYCURSOR; + if (yych == 'e') goto yy224; + goto yy214; +yy219: + yych = *++YYCURSOR; + if (yych != 'i') goto yy214; + yych = *++YYCURSOR; + if (yych != 'n') goto yy214; + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_LINE); } +yy224: + yych = *++YYCURSOR; + if (yych != 'f') goto yy214; + yych = *++YYCURSOR; + if (yych != 'i') goto yy214; + yych = *++YYCURSOR; + if (yych != 'n') goto yy214; + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_DEFINE); } +yy230: + yych = *++YYCURSOR; + if (yych != 'd') goto yy214; + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + yych = *++YYCURSOR; + if (yych != 'f') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_UNDEF); } +yy235: + yych = *++YYCURSOR; + if (yych == 'c') goto yy247; + goto yy214; +yy236: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'd') goto yy239; + if (yych == 'n') goto yy238; +yy237: + { RET(TOKEN_PP_IF); } +yy238: + yych = *++YYCURSOR; + if (yych == 'd') goto yy243; + goto yy214; +yy239: + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + yych = *++YYCURSOR; + if (yych != 'f') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_IFDEF); } +yy243: + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + yych = *++YYCURSOR; + if (yych != 'f') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_IFNDEF); } +yy247: + yych = *++YYCURSOR; + if (yych != 'l') goto yy214; + yych = *++YYCURSOR; + if (yych != 'u') goto yy214; + yych = *++YYCURSOR; + if (yych != 'd') goto yy214; + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_INCLUDE); } +yy253: + yych = *++YYCURSOR; + if (yych == 'i') goto yy264; + if (yych == 's') goto yy265; + goto yy214; +yy254: + yych = *++YYCURSOR; + if (yych == 'd') goto yy260; + goto yy214; +yy255: + yych = *++YYCURSOR; + if (yych != 'r') goto yy214; + yych = *++YYCURSOR; + if (yych != 'o') goto yy214; + yych = *++YYCURSOR; + if (yych != 'r') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_ERROR); } +yy260: + yych = *++YYCURSOR; + if (yych != 'i') goto yy214; + yych = *++YYCURSOR; + if (yych != 'f') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_ENDIF); } +yy264: + yych = *++YYCURSOR; + if (yych == 'f') goto yy268; + goto yy214; +yy265: + yych = *++YYCURSOR; + if (yych != 'e') goto yy214; + ++YYCURSOR; + { RET(TOKEN_PP_ELSE); } +yy268: + ++YYCURSOR; + { RET(TOKEN_PP_ELIF); } } @@ -1388,24 +1438,24 @@ Token preprocessor_lexer(IncludeState *s) yych = *YYCURSOR; if (yych <= '#') { if (yych <= '\r') { - if (yych <= 0x00) goto yy264; - if (yych <= 0x08) goto yy266; + if (yych <= 0x00) goto yy274; + if (yych <= 0x08) goto yy276; } else { - if (yych <= 0x1F) goto yy266; - if (yych == '"') goto yy266; + if (yych <= 0x1F) goto yy276; + if (yych == '"') goto yy276; } } else { if (yych <= '@') { - if (yych <= '$') goto yy266; - if (yych >= '@') goto yy266; + if (yych <= '$') goto yy276; + if (yych >= '@') goto yy276; } else { - if (yych == '`') goto yy266; - if (yych >= 0x7F) goto yy266; + if (yych == '`') goto yy276; + if (yych >= 0x7F) goto yy276; } } ++YYCURSOR; { cursor--; RET(TOKEN_BAD_CHARS); } -yy264: +yy274: ++YYCURSOR; { if (eoi) @@ -1418,7 +1468,7 @@ Token preprocessor_lexer(IncludeState *s) } goto bad_chars; } -yy266: +yy276: ++YYCURSOR; { goto bad_chars; } }