Initial work on preprocessor. Not yet complete!
/* 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) ...