/* Generated by re2c 0.13.5 on Mon Feb 9 17:52:01 2009 */ /** * MojoShader; generate shader programs from bytecode of compiled * Direct3D shaders. * * Please see the file LICENSE.txt in the source's root directory. * * This file written by Ryan C. Gordon. */ // This was originally based on examples/pp-c.re from re2c: http://re2c.org/ // re2c is public domain code. // // You build mojoshader_lexer_preprocessor.c from the .re file with re2c... // re2c -is -o mojoshader_lexer_preprocessor.c mojoshader_lexer_preprocessor.re // // Changes to the lexer are done to the .re file, not the C code! // // Please note that this isn't a perfect C lexer, since it is used for both // HLSL and shader assembly language, and follows the quirks of Microsoft's // tools. #define __MOJOSHADER_INTERNAL__ 1 #include "mojoshader_internal.h" typedef unsigned char uchar; #define RET(t) { update_state(s, cursor, token); return t; } #define YYCTYPE uchar #define YYCURSOR cursor #define YYLIMIT limit #define YYMARKER s->lexer_marker #define YYFILL(n) { if ((n) == 1) { RET(TOKEN_EOI); } } static void update_state(IncludeState *s, const uchar *cur, const uchar *tok) { s->bytes_left -= (unsigned int) (cur - ((const uchar *) s->source)); s->source = (const char *) cur; s->token = (const char *) tok; } // update_state Token preprocessor_internal_lexer(IncludeState *s) { const uchar *cursor = (const uchar *) s->source; const uchar *token; const uchar *limit = cursor + s->bytes_left; scanner_loop: token = cursor; if (YYLIMIT == YYCURSOR) RET(TOKEN_EOI); { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); yych = *YYCURSOR; switch (yych) { case '\t': case '\v': case '\f': case ' ': goto yy62; case '\n': goto yy64; case '\r': goto yy66; case '!': goto yy24; case '"': goto yy13; case '#': goto yy26; case '%': goto yy46; case '&': goto yy18; case '\'': goto yy9; case '(': goto yy28; case ')': goto yy30; case '*': goto yy44; case '+': goto yy42; case ',': goto yy36; case '-': goto yy40; case '.': goto yy11; case '/': goto yy2; case '0': goto yy6; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy8; case ':': goto yy50; case ';': goto yy52; case '<': goto yy16; case '=': goto yy22; case '>': goto yy14; case '?': goto yy58; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy4; case '[': goto yy32; case '\\': goto yy60; case ']': goto yy34; case '^': goto yy48; case '{': goto yy54; case '|': goto yy20; case '}': goto yy56; case '~': goto yy38; default: goto yy67; } yy2: ++YYCURSOR; if ((yych = *YYCURSOR) == '*') goto yy209; if (yych == '/') goto yy207; { RET('/'); } yy4: ++YYCURSOR; yych = *YYCURSOR; goto yy206; yy5: { RET(TOKEN_IDENTIFIER); } yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= 'T') { if (yych == 'L') goto yy181; goto yy197; } else { if (yych <= 'U') goto yy181; if (yych <= 'W') goto yy197; goto yy198; } } else { if (yych <= 't') { if (yych == 'l') goto yy181; goto yy197; } else { if (yych <= 'u') goto yy181; if (yych == 'x') goto yy198; goto yy197; } } yy7: { RET(TOKEN_INT_LITERAL); } yy8: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy179; yy9: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych != '\n') goto yy169; yy10: { printf("bad char\n"); goto scanner_loop; } yy11: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych == '.') goto yy157; if (yych <= '/') goto yy12; if (yych <= '9') goto yy158; yy12: { RET('.'); } yy13: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy10; goto yy148; yy14: ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') goto yy15; if (yych <= '=') goto yy143; if (yych <= '>') goto yy145; yy15: { RET('>'); } yy16: ++YYCURSOR; if ((yych = *YYCURSOR) <= ';') goto yy17; if (yych <= '<') goto yy141; if (yych <= '=') goto yy139; yy17: { RET('<'); } yy18: ++YYCURSOR; if ((yych = *YYCURSOR) == '&') goto yy137; { RET('&'); } yy20: ++YYCURSOR; if ((yych = *YYCURSOR) == '|') goto yy135; { RET('|'); } yy22: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy133; { RET('='); } yy24: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy131; { RET('!'); } yy26: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'c') { if (yych <= 0x1F) { if (yych == '\t') goto yy72; } else { if (yych <= ' ') goto yy72; if (yych == '#') goto yy79; } } else { if (yych <= 'k') { if (yych <= 'e') goto yy72; if (yych == 'i') goto yy72; } else { if (yych <= 'l') goto yy72; if (yych == 'u') goto yy72; } } yy27: { RET('#'); } yy28: ++YYCURSOR; { RET('('); } yy30: ++YYCURSOR; { RET(')'); } yy32: ++YYCURSOR; { RET('['); } yy34: ++YYCURSOR; { RET(']'); } yy36: ++YYCURSOR; { RET(','); } yy38: ++YYCURSOR; { RET('~'); } yy40: ++YYCURSOR; { RET('-'); } yy42: ++YYCURSOR; { RET('+'); } yy44: ++YYCURSOR; { RET('*'); } yy46: ++YYCURSOR; { RET('%'); } yy48: ++YYCURSOR; { RET('^'); } yy50: ++YYCURSOR; { RET(':'); } yy52: ++YYCURSOR; { RET(';'); } yy54: ++YYCURSOR; { RET('{'); } yy56: ++YYCURSOR; { RET('}'); } yy58: ++YYCURSOR; { RET('?'); } yy60: ++YYCURSOR; { RET('\\'); } yy62: ++YYCURSOR; yych = *YYCURSOR; goto yy70; yy63: { goto scanner_loop; } yy64: ++YYCURSOR; yy65: { s->line++; goto scanner_loop; } yy66: yych = *++YYCURSOR; if (yych == '\n') goto yy68; goto yy65; yy67: yych = *++YYCURSOR; goto yy10; yy68: yych = *++YYCURSOR; goto yy65; yy69: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy70: if (yych <= '\n') { if (yych == '\t') goto yy69; goto yy63; } else { if (yych <= '\f') goto yy69; if (yych == ' ') goto yy69; 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 <= 2) { if (yyaccept <= 1) { if (yyaccept <= 0) { goto yy7; } else { goto yy10; } } else { goto yy12; } } else { if (yyaccept <= 4) { if (yyaccept <= 3) { goto yy27; } else { goto yy98; } } else { goto yy160; } } 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 = 4; 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: ++YYCURSOR; { RET(TOKEN_NEQ); } yy133: ++YYCURSOR; { RET(TOKEN_EQL); } yy135: ++YYCURSOR; { RET(TOKEN_OROR); } yy137: ++YYCURSOR; { RET(TOKEN_ANDAND); } yy139: ++YYCURSOR; { RET(TOKEN_LEQ); } yy141: ++YYCURSOR; { RET(TOKEN_LSHIFT); } yy143: ++YYCURSOR; { RET(TOKEN_GEQ); } yy145: ++YYCURSOR; { RET(TOKEN_RSHIFT); } yy147: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy148: if (yych <= '!') { if (yych == '\n') goto yy73; goto yy147; } else { if (yych <= '"') goto yy150; if (yych != '\\') goto yy147; } yy149: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { if (yych == '"') goto yy147; goto yy73; } else { if (yych <= '\'') goto yy147; if (yych <= '/') goto yy73; goto yy153; } } else { if (yych <= '[') { if (yych == '?') goto yy147; goto yy73; } else { if (yych <= '\\') goto yy147; if (yych <= '`') goto yy73; goto yy147; } } } else { if (yych <= 'r') { if (yych <= 'm') { if (yych == 'f') goto yy147; goto yy73; } else { if (yych <= 'n') goto yy147; if (yych <= 'q') goto yy73; goto yy147; } } else { if (yych <= 'u') { if (yych == 't') goto yy147; goto yy73; } else { if (yych <= 'v') goto yy147; if (yych == 'x') goto yy152; goto yy73; } } } yy150: ++YYCURSOR; { RET(TOKEN_STRING_LITERAL); } yy152: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy73; if (yych <= '9') goto yy155; goto yy73; } else { if (yych <= 'F') goto yy155; if (yych <= '`') goto yy73; if (yych <= 'f') goto yy155; goto yy73; } yy153: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '"') { if (yych == '\n') goto yy73; if (yych <= '!') goto yy147; goto yy150; } else { if (yych <= '7') { if (yych <= '/') goto yy147; goto yy153; } else { if (yych == '\\') goto yy149; goto yy147; } } yy155: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '9') { if (yych <= '!') { if (yych == '\n') goto yy73; goto yy147; } else { if (yych <= '"') goto yy150; if (yych <= '/') goto yy147; goto yy155; } } else { if (yych <= '[') { if (yych <= '@') goto yy147; if (yych <= 'F') goto yy155; goto yy147; } else { if (yych <= '\\') goto yy149; if (yych <= '`') goto yy147; if (yych <= 'f') goto yy155; goto yy147; } } yy157: yych = *++YYCURSOR; if (yych == '.') goto yy166; goto yy73; yy158: yyaccept = 5; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= 'D') { if (yych <= '/') goto yy160; if (yych <= '9') goto yy158; } else { if (yych <= 'E') goto yy161; if (yych <= 'F') goto yy162; } } else { if (yych <= 'e') { if (yych <= 'L') goto yy162; if (yych >= 'e') goto yy161; } else { if (yych <= 'f') goto yy162; if (yych == 'l') goto yy162; } } yy160: { RET(TOKEN_FLOAT_LITERAL); } yy161: yych = *++YYCURSOR; if (yych <= ',') { if (yych == '+') goto yy163; goto yy73; } else { if (yych <= '-') goto yy163; if (yych <= '/') goto yy73; if (yych <= '9') goto yy164; goto yy73; } yy162: yych = *++YYCURSOR; goto yy160; yy163: yych = *++YYCURSOR; if (yych <= '/') goto yy73; if (yych >= ':') goto yy73; yy164: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { if (yych <= '/') goto yy160; goto yy164; } else { if (yych == 'F') goto yy162; goto yy160; } } else { if (yych <= 'f') { if (yych <= 'L') goto yy162; if (yych <= 'e') goto yy160; goto yy162; } else { if (yych == 'l') goto yy162; goto yy160; } } yy166: ++YYCURSOR; { RET(TOKEN_ELLIPSIS); } yy168: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy169: if (yych <= '&') { if (yych == '\n') goto yy73; goto yy168; } else { if (yych <= '\'') goto yy171; if (yych != '\\') goto yy168; } yy170: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { if (yych == '"') goto yy168; goto yy73; } else { if (yych <= '\'') goto yy168; if (yych <= '/') goto yy73; goto yy173; } } else { if (yych <= '[') { if (yych == '?') goto yy168; goto yy73; } else { if (yych <= '\\') goto yy168; if (yych <= '`') goto yy73; goto yy168; } } } else { if (yych <= 'r') { if (yych <= 'm') { if (yych == 'f') goto yy168; goto yy73; } else { if (yych <= 'n') goto yy168; if (yych <= 'q') goto yy73; goto yy168; } } else { if (yych <= 'u') { if (yych == 't') goto yy168; goto yy73; } else { if (yych <= 'v') goto yy168; if (yych == 'x') goto yy172; goto yy73; } } } yy171: yych = *++YYCURSOR; goto yy7; yy172: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy73; if (yych <= '9') goto yy175; goto yy73; } else { if (yych <= 'F') goto yy175; if (yych <= '`') goto yy73; if (yych <= 'f') goto yy175; goto yy73; } yy173: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '\'') { if (yych == '\n') goto yy73; if (yych <= '&') goto yy168; goto yy171; } else { if (yych <= '7') { if (yych <= '/') goto yy168; goto yy173; } else { if (yych == '\\') goto yy170; goto yy168; } } yy175: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '9') { if (yych <= '&') { if (yych == '\n') goto yy73; goto yy168; } else { if (yych <= '\'') goto yy171; if (yych <= '/') goto yy168; goto yy175; } } else { if (yych <= '[') { if (yych <= '@') goto yy168; if (yych <= 'F') goto yy175; goto yy168; } else { if (yych <= '\\') goto yy170; if (yych <= '`') goto yy168; if (yych <= 'f') goto yy175; goto yy168; } } yy177: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'E') goto yy188; if (yych == 'e') goto yy188; goto yy187; yy178: yyaccept = 0; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; yy179: if (yych <= 'L') { if (yych <= '9') { if (yych == '.') goto yy177; if (yych <= '/') goto yy7; goto yy178; } else { if (yych == 'E') goto yy180; if (yych <= 'K') goto yy7; goto yy181; } } else { if (yych <= 'e') { if (yych == 'U') goto yy181; if (yych <= 'd') goto yy7; } else { if (yych <= 'l') { if (yych <= 'k') goto yy7; goto yy181; } else { if (yych == 'u') goto yy181; goto yy7; } } } yy180: yych = *++YYCURSOR; if (yych <= ',') { if (yych == '+') goto yy183; goto yy73; } else { if (yych <= '-') goto yy183; if (yych <= '/') goto yy73; if (yych <= '9') goto yy184; goto yy73; } yy181: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { if (yych == 'L') goto yy181; if (yych <= 'T') goto yy7; goto yy181; } else { if (yych <= 'l') { if (yych <= 'k') goto yy7; goto yy181; } else { if (yych == 'u') goto yy181; goto yy7; } } yy183: yych = *++YYCURSOR; if (yych <= '/') goto yy73; if (yych >= ':') goto yy73; yy184: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { if (yych <= '/') goto yy160; goto yy184; } else { if (yych == 'F') goto yy162; goto yy160; } } else { if (yych <= 'f') { if (yych <= 'L') goto yy162; if (yych <= 'e') goto yy160; goto yy162; } else { if (yych == 'l') goto yy162; goto yy160; } } yy186: yyaccept = 5; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; yy187: if (yych <= 'K') { if (yych <= 'D') { if (yych <= '/') goto yy160; if (yych <= '9') goto yy186; goto yy160; } else { if (yych <= 'E') goto yy192; if (yych <= 'F') goto yy162; goto yy160; } } else { if (yych <= 'e') { if (yych <= 'L') goto yy162; if (yych <= 'd') goto yy160; goto yy192; } else { if (yych <= 'f') goto yy162; if (yych == 'l') goto yy162; goto yy160; } } yy188: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy73; } else { if (yych <= '-') goto yy189; if (yych <= '/') goto yy73; if (yych <= '9') goto yy190; goto yy73; } yy189: yych = *++YYCURSOR; if (yych <= '/') goto yy73; if (yych >= ':') goto yy73; yy190: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { if (yych <= '/') goto yy160; goto yy190; } else { if (yych == 'F') goto yy162; goto yy160; } } else { if (yych <= 'f') { if (yych <= 'L') goto yy162; if (yych <= 'e') goto yy160; goto yy162; } else { if (yych == 'l') goto yy162; goto yy160; } } yy192: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy73; } else { if (yych <= '-') goto yy193; if (yych <= '/') goto yy73; if (yych <= '9') goto yy194; goto yy73; } yy193: yych = *++YYCURSOR; if (yych <= '/') goto yy73; if (yych >= ':') goto yy73; yy194: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'K') { if (yych <= '9') { if (yych <= '/') goto yy160; goto yy194; } else { if (yych == 'F') goto yy162; goto yy160; } } else { if (yych <= 'f') { if (yych <= 'L') goto yy162; if (yych <= 'e') goto yy160; goto yy162; } else { if (yych == 'l') goto yy162; goto yy160; } } yy196: yyaccept = 0; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; yy197: if (yych <= 'L') { if (yych <= '9') { if (yych == '.') goto yy177; if (yych <= '/') goto yy7; goto yy196; } else { if (yych == 'E') goto yy180; if (yych <= 'K') goto yy7; goto yy203; } } else { if (yych <= 'e') { if (yych == 'U') goto yy203; if (yych <= 'd') goto yy7; goto yy180; } else { if (yych <= 'l') { if (yych <= 'k') goto yy7; goto yy203; } else { if (yych == 'u') goto yy203; goto yy7; } } } yy198: yych = *++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy73; if (yych >= ':') goto yy73; } else { if (yych <= 'F') goto yy199; if (yych <= '`') goto yy73; if (yych >= 'g') goto yy73; } yy199: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'T') { if (yych <= '@') { if (yych <= '/') goto yy7; if (yych <= '9') goto yy199; goto yy7; } else { if (yych <= 'F') goto yy199; if (yych != 'L') goto yy7; } } else { if (yych <= 'k') { if (yych <= 'U') goto yy201; if (yych <= '`') goto yy7; if (yych <= 'f') goto yy199; goto yy7; } else { if (yych <= 'l') goto yy201; if (yych != 'u') goto yy7; } } yy201: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { if (yych == 'L') goto yy201; if (yych <= 'T') goto yy7; goto yy201; } else { if (yych <= 'l') { if (yych <= 'k') goto yy7; goto yy201; } else { if (yych == 'u') goto yy201; goto yy7; } } yy203: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { if (yych == 'L') goto yy203; if (yych <= 'T') goto yy7; goto yy203; } else { if (yych <= 'l') { if (yych <= 'k') goto yy7; goto yy203; } else { if (yych == 'u') goto yy203; goto yy7; } } yy205: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy206: if (yych <= 'Z') { if (yych <= '/') goto yy5; if (yych <= '9') goto yy205; if (yych <= '@') goto yy5; goto yy205; } else { if (yych <= '_') { if (yych <= '^') goto yy5; goto yy205; } else { if (yych <= '`') goto yy5; if (yych <= 'z') goto yy205; goto yy5; } } yy207: ++YYCURSOR; { goto singlelinecomment; } yy209: ++YYCURSOR; { goto multilinecomment; } } multilinecomment: if (YYLIMIT == YYCURSOR) RET(TOKEN_PP_INCOMPLETE_COMMENT); // The "*\/" is just to avoid screwing up text editor syntax highlighting. { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\f') { if (yych == '\n') goto yy215; goto yy218; } else { if (yych <= '\r') goto yy217; if (yych != '*') goto yy218; } ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy220; yy214: { goto multilinecomment; } yy215: ++YYCURSOR; yy216: { s->line++; goto multilinecomment; } yy217: yych = *++YYCURSOR; if (yych == '\n') goto yy219; goto yy216; yy218: yych = *++YYCURSOR; goto yy214; yy219: yych = *++YYCURSOR; goto yy216; yy220: ++YYCURSOR; { goto scanner_loop; } } singlelinecomment: if (YYLIMIT == YYCURSOR) RET(TOKEN_EOI); { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych == '\n') goto yy224; if (yych == '\r') goto yy226; goto yy227; yy224: ++YYCURSOR; yy225: { s->line++; goto scanner_loop; } yy226: yych = *++YYCURSOR; if (yych == '\n') goto yy229; goto yy225; yy227: ++YYCURSOR; { goto singlelinecomment; } yy229: ++YYCURSOR; yych = *YYCURSOR; goto yy225; } // !!! FIXME /* bad_chars: if (YYLIMIT == YYCURSOR) RET(TOKEN_BAD_TOKEN); */ { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\f') { if (yych <= 0x08) goto yy237; if (yych != '\n') goto yy235; } else { if (yych <= '\r') goto yy234; if (yych == ' ') goto yy235; goto yy237; } ++YYCURSOR; yy233: { s->line++; goto scanner_loop; } yy234: yych = *++YYCURSOR; if (yych == '\n') goto yy241; goto yy233; yy235: ++YYCURSOR; yych = *YYCURSOR; goto yy240; yy236: { goto scanner_loop; } yy237: ++YYCURSOR; { goto singlelinecomment; } yy239: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy240: if (yych <= '\n') { if (yych == '\t') goto yy239; goto yy236; } else { if (yych <= '\f') goto yy239; if (yych == ' ') goto yy239; goto yy236; } yy241: ++YYCURSOR; yych = *YYCURSOR; goto yy233; } assert(0 && "Shouldn't hit this code"); RET(TOKEN_UNKNOWN); } // preprocessor_internal_lexer // end of mojoshader_lexer_preprocessor.re (or .c) ...