Show More
Commit Description:
Tweak calculations....
Commit Description:
Tweak calculations. Prevent a negative number of visitors and separate visitors from donors.
File last commit:
Show/Diff file:
Action:
FNA/lib/FNA3D/MojoShader/mojoshader_lexer.c
1242 lines | 23.7 KiB | text/x-c | CLexer
/* Generated by re2c 3.0 */
/**
* 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.c from the .re file with re2c...
// re2c -is -o mojoshader_lexer.c mojoshader_lexer.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 YYMAXFILL 8
#define RET(t) return update_state(s, eoi, cursor, token, (Token) t)
#define YYCTYPE uchar
#define YYCURSOR cursor
#define YYLIMIT limit
#define YYMARKER s->lexer_marker
#define YYFILL(n) { if ((n) == 1) { cursor = sentinel; limit = cursor + YYMAXFILL; eoi = 1; } }
static uchar sentinel[YYMAXFILL];
static Token update_state(IncludeState *s, int eoi, const uchar *cur,
const uchar *tok, const Token val)
{
if (eoi)
{
s->bytes_left = 0;
s->source = (const char *) s->source_base + s->orig_length;
if ( (tok >= sentinel) && (tok < (sentinel+YYMAXFILL)) )
s->token = s->source;
else
s->token = (const char *) tok;
} // if
else
{
s->bytes_left -= (unsigned int) (cur - ((const uchar *) s->source));
s->source = (const char *) cur;
s->token = (const char *) tok;
} // else
s->tokenlen = (unsigned int) (s->source - s->token);
s->tokenval = val;
return val;
} // update_state
Token preprocessor_lexer(IncludeState *s)
{
const uchar *cursor = (const uchar *) s->source;
const uchar *token = cursor;
const uchar *matchptr;
const uchar *limit = cursor + s->bytes_left;
int eoi = 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) < 4) YYFILL(4);
yych = *YYCURSOR;
switch (yych) {
case 0x00: goto yy1;
case '\t':
case '\v':
case '\f':
case ' ': goto yy4;
case '\n': goto yy5;
case '\r': goto yy7;
case '!': goto yy8;
case '"': goto yy9;
case '#': goto yy10;
case '%': goto yy11;
case '&': goto yy12;
case '\'': goto yy13;
case '(': goto yy14;
case ')': goto yy15;
case '*': goto yy16;
case '+': goto yy17;
case ',': goto yy18;
case '-': goto yy19;
case '.': goto yy20;
case '/': goto yy22;
case '0': goto yy23;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy25;
case ':': goto yy27;
case ';': goto yy28;
case '<': goto yy29;
case '=': goto yy31;
case '>': goto yy32;
case '?': goto yy34;
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 yy35;
case '[': goto yy37;
case '\\': goto yy38;
case ']': goto yy39;
case '^': goto yy40;
case '{': goto yy41;
case '|': goto yy42;
case '}': goto yy43;
case '~': goto yy44;
default: goto yy2;
}
yy1:
++YYCURSOR;
{ if (eoi) { RET(TOKEN_EOI); } goto bad_chars; }
yy2:
++YYCURSOR;
yy3:
{ goto bad_chars; }
yy4:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\n') {
if (yych == '\t') goto yy4;
} else {
if (yych <= '\f') goto yy4;
if (yych == ' ') goto yy4;
}
{ if (s->report_whitespace) RET(' '); goto scanner_loop; }
yy5:
++YYCURSOR;
yy6:
{ s->line++; RET('\n'); }
yy7:
yych = *++YYCURSOR;
if (yych == '\n') goto yy5;
goto yy6;
yy8:
yych = *++YYCURSOR;
if (yych == '=') goto yy45;
{ RET('!'); }
yy9:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == '\n') goto yy3;
if (yych == '\r') goto yy3;
goto yy47;
yy10:
yych = *++YYCURSOR;
if (yych == '#') goto yy51;
{ RET(TOKEN_HASH); }
yy11:
yych = *++YYCURSOR;
if (yych == '=') goto yy52;
{ RET('%'); }
yy12:
yych = *++YYCURSOR;
if (yych == '&') goto yy53;
if (yych == '=') goto yy54;
{ RET('&'); }
yy13:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == '\n') goto yy3;
if (yych == '\r') goto yy3;
goto yy56;
yy14:
++YYCURSOR;
{ RET('('); }
yy15:
++YYCURSOR;
{ RET(')'); }
yy16:
yych = *++YYCURSOR;
if (yych == '=') goto yy58;
{ RET('*'); }
yy17:
yych = *++YYCURSOR;
if (yych == '+') goto yy59;
if (yych == '=') goto yy60;
{ RET('+'); }
yy18:
++YYCURSOR;
{ RET(','); }
yy19:
yych = *++YYCURSOR;
if (yych == '-') goto yy61;
if (yych == '=') goto yy62;
{ RET('-'); }
yy20:
yych = *++YYCURSOR;
if (yych <= '/') goto yy21;
if (yych <= '9') goto yy63;
yy21:
{ RET('.'); }
yy22:
yych = *++YYCURSOR;
if (yych <= '.') {
if (yych == '*') goto yy65;
} else {
if (yych <= '/') goto yy66;
if (yych == '=') goto yy67;
}
{ RET('/'); }
yy23:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == 'X') goto yy70;
if (yych == 'x') goto yy70;
goto yy26;
yy24:
{ RET(TOKEN_INT_LITERAL); }
yy25:
yyaccept = 1;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
yy26:
if (yych <= 'L') {
if (yych <= '9') {
if (yych == '.') goto yy63;
if (yych <= '/') goto yy24;
goto yy25;
} else {
if (yych == 'E') goto yy68;
if (yych <= 'K') goto yy24;
goto yy69;
}
} else {
if (yych <= 'e') {
if (yych == 'U') goto yy69;
if (yych <= 'd') goto yy24;
goto yy68;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy24;
goto yy69;
} else {
if (yych == 'u') goto yy69;
goto yy24;
}
}
}
yy27:
++YYCURSOR;
{ RET(':'); }
yy28:
++YYCURSOR;
{ if (s->asm_comments) goto singlelinecomment; RET(';'); }
yy29:
yych = *++YYCURSOR;
if (yych <= ';') goto yy30;
if (yych <= '<') goto yy71;
if (yych <= '=') goto yy72;
yy30:
{ RET('<'); }
yy31:
yych = *++YYCURSOR;
if (yych == '=') goto yy73;
{ RET('='); }
yy32:
yych = *++YYCURSOR;
if (yych <= '<') goto yy33;
if (yych <= '=') goto yy74;
if (yych <= '>') goto yy75;
yy33:
{ RET('>'); }
yy34:
++YYCURSOR;
{ RET('?'); }
yy35:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'Z') {
if (yych <= '/') goto yy36;
if (yych <= '9') goto yy35;
if (yych >= 'A') goto yy35;
} else {
if (yych <= '_') {
if (yych >= '_') goto yy35;
} else {
if (yych <= '`') goto yy36;
if (yych <= 'z') goto yy35;
}
}
yy36:
{ RET(TOKEN_IDENTIFIER); }
yy37:
++YYCURSOR;
{ RET('['); }
yy38:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 0x08) goto yy3;
if (yych <= '\r') goto yy77;
if (yych == ' ') goto yy77;
goto yy3;
yy39:
++YYCURSOR;
{ RET(']'); }
yy40:
yych = *++YYCURSOR;
if (yych == '=') goto yy81;
{ RET('^'); }
yy41:
++YYCURSOR;
{ RET('{'); }
yy42:
yych = *++YYCURSOR;
if (yych == '=') goto yy82;
if (yych == '|') goto yy83;
{ RET('|'); }
yy43:
++YYCURSOR;
{ RET('}'); }
yy44:
++YYCURSOR;
{ RET('~'); }
yy45:
++YYCURSOR;
{ RET(TOKEN_NEQ); }
yy46:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy47:
if (yych <= '\r') {
if (yych == '\n') goto yy48;
if (yych <= '\f') goto yy46;
} else {
if (yych <= '"') {
if (yych <= '!') goto yy46;
goto yy49;
} else {
if (yych == '\\') goto yy50;
goto yy46;
}
}
yy48:
YYCURSOR = YYMARKER;
if (yyaccept <= 1) {
if (yyaccept == 0) {
goto yy3;
} else {
goto yy24;
}
} else {
goto yy64;
}
yy49:
++YYCURSOR;
{ RET(TOKEN_STRING_LITERAL); }
yy50:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'b') {
if (yych <= '7') {
if (yych <= '&') {
if (yych == '"') goto yy46;
goto yy48;
} else {
if (yych <= '\'') goto yy46;
if (yych <= '/') goto yy48;
goto yy46;
}
} else {
if (yych <= '[') {
if (yych == '?') goto yy46;
goto yy48;
} else {
if (yych <= '\\') goto yy46;
if (yych <= '`') goto yy48;
goto yy46;
}
}
} else {
if (yych <= 'r') {
if (yych <= 'm') {
if (yych == 'f') goto yy46;
goto yy48;
} else {
if (yych <= 'n') goto yy46;
if (yych <= 'q') goto yy48;
goto yy46;
}
} else {
if (yych <= 'u') {
if (yych == 't') goto yy46;
goto yy48;
} else {
if (yych <= 'v') goto yy46;
if (yych == 'x') goto yy84;
goto yy48;
}
}
}
yy51:
++YYCURSOR;
{ RET(TOKEN_HASHHASH); }
yy52:
++YYCURSOR;
{ RET(TOKEN_MODASSIGN); }
yy53:
++YYCURSOR;
{ RET(TOKEN_ANDAND); }
yy54:
++YYCURSOR;
{ RET(TOKEN_ANDASSIGN); }
yy55:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy56:
if (yych <= '\r') {
if (yych == '\n') goto yy48;
if (yych <= '\f') goto yy55;
goto yy48;
} else {
if (yych <= '\'') {
if (yych <= '&') goto yy55;
} else {
if (yych == '\\') goto yy57;
goto yy55;
}
}
++YYCURSOR;
goto yy24;
yy57:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'b') {
if (yych <= '7') {
if (yych <= '&') {
if (yych == '"') goto yy55;
goto yy48;
} else {
if (yych <= '\'') goto yy55;
if (yych <= '/') goto yy48;
goto yy55;
}
} else {
if (yych <= '[') {
if (yych == '?') goto yy55;
goto yy48;
} else {
if (yych <= '\\') goto yy55;
if (yych <= '`') goto yy48;
goto yy55;
}
}
} else {
if (yych <= 'r') {
if (yych <= 'm') {
if (yych == 'f') goto yy55;
goto yy48;
} else {
if (yych <= 'n') goto yy55;
if (yych <= 'q') goto yy48;
goto yy55;
}
} else {
if (yych <= 'u') {
if (yych == 't') goto yy55;
goto yy48;
} else {
if (yych <= 'v') goto yy55;
if (yych == 'x') goto yy85;
goto yy48;
}
}
}
yy58:
++YYCURSOR;
{ RET(TOKEN_MULTASSIGN); }
yy59:
++YYCURSOR;
{ RET(TOKEN_INCREMENT); }
yy60:
++YYCURSOR;
{ RET(TOKEN_ADDASSIGN); }
yy61:
++YYCURSOR;
{ RET(TOKEN_DECREMENT); }
yy62:
++YYCURSOR;
{ RET(TOKEN_SUBASSIGN); }
yy63:
yyaccept = 2;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= 'D') {
if (yych <= '/') goto yy64;
if (yych <= '9') goto yy63;
} else {
if (yych <= 'E') goto yy68;
if (yych <= 'F') goto yy86;
}
} else {
if (yych <= 'e') {
if (yych <= 'H') goto yy86;
if (yych >= 'e') goto yy68;
} else {
if (yych == 'g') goto yy64;
if (yych <= 'h') goto yy86;
}
}
yy64:
{ RET(TOKEN_FLOAT_LITERAL); }
yy65:
++YYCURSOR;
{ goto multilinecomment; }
yy66:
++YYCURSOR;
{ goto singlelinecomment; }
yy67:
++YYCURSOR;
{ RET(TOKEN_DIVASSIGN); }
yy68:
yych = *++YYCURSOR;
if (yych <= ',') {
if (yych == '+') goto yy87;
goto yy48;
} else {
if (yych <= '-') goto yy87;
if (yych <= '/') goto yy48;
if (yych <= '9') goto yy88;
goto yy48;
}
yy69:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'U') {
if (yych == 'L') goto yy69;
if (yych <= 'T') goto yy24;
goto yy69;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy24;
goto yy69;
} else {
if (yych == 'u') goto yy69;
goto yy24;
}
}
yy70:
yych = *++YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy48;
if (yych <= '9') goto yy89;
goto yy48;
} else {
if (yych <= 'F') goto yy89;
if (yych <= '`') goto yy48;
if (yych <= 'f') goto yy89;
goto yy48;
}
yy71:
yych = *++YYCURSOR;
if (yych == '=') goto yy90;
{ RET(TOKEN_LSHIFT); }
yy72:
++YYCURSOR;
{ RET(TOKEN_LEQ); }
yy73:
++YYCURSOR;
{ RET(TOKEN_EQL); }
yy74:
++YYCURSOR;
{ RET(TOKEN_GEQ); }
yy75:
yych = *++YYCURSOR;
if (yych == '=') goto yy91;
{ RET(TOKEN_RSHIFT); }
yy76:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
yy77:
if (yych <= '\f') {
if (yych <= 0x08) goto yy48;
if (yych != '\n') goto yy76;
} else {
if (yych <= '\r') goto yy80;
if (yych == ' ') goto yy76;
goto yy48;
}
yy78:
++YYCURSOR;
yy79:
{ s->line++; goto scanner_loop; }
yy80:
yych = *++YYCURSOR;
if (yych == '\n') goto yy78;
goto yy79;
yy81:
++YYCURSOR;
{ RET(TOKEN_XORASSIGN); }
yy82:
++YYCURSOR;
{ RET(TOKEN_ORASSIGN); }
yy83:
++YYCURSOR;
{ RET(TOKEN_OROR); }
yy84:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy48;
if (yych <= '9') goto yy46;
goto yy48;
} else {
if (yych <= 'F') goto yy46;
if (yych <= '`') goto yy48;
if (yych <= 'f') goto yy46;
goto yy48;
}
yy85:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy48;
if (yych <= '9') goto yy55;
goto yy48;
} else {
if (yych <= 'F') goto yy55;
if (yych <= '`') goto yy48;
if (yych <= 'f') goto yy55;
goto yy48;
}
yy86:
++YYCURSOR;
goto yy64;
yy87:
yych = *++YYCURSOR;
if (yych <= '/') goto yy48;
if (yych >= ':') goto yy48;
yy88:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= '9') {
if (yych <= '/') goto yy64;
goto yy88;
} else {
if (yych == 'F') goto yy86;
goto yy64;
}
} else {
if (yych <= 'f') {
if (yych <= 'H') goto yy86;
if (yych <= 'e') goto yy64;
goto yy86;
} else {
if (yych == 'h') goto yy86;
goto yy64;
}
}
yy89:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'T') {
if (yych <= '@') {
if (yych <= '/') goto yy24;
if (yych <= '9') goto yy89;
goto yy24;
} else {
if (yych <= 'F') goto yy89;
if (yych == 'L') goto yy69;
goto yy24;
}
} else {
if (yych <= 'k') {
if (yych <= 'U') goto yy69;
if (yych <= '`') goto yy24;
if (yych <= 'f') goto yy89;
goto yy24;
} else {
if (yych <= 'l') goto yy69;
if (yych == 'u') goto yy69;
goto yy24;
}
}
yy90:
++YYCURSOR;
{ RET(TOKEN_LSHIFTASSIGN); }
yy91:
++YYCURSOR;
{ RET(TOKEN_RSHIFTASSIGN); }
}
multilinecomment:
if (YYLIMIT == YYCURSOR) YYFILL(1);
matchptr = cursor;
// 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 <= 0x00) goto yy93;
if (yych == '\n') goto yy96;
goto yy94;
} else {
if (yych <= '\r') goto yy98;
if (yych == '*') goto yy99;
goto yy94;
}
yy93:
++YYCURSOR;
{
if (eoi)
RET(TOKEN_INCOMPLETE_COMMENT);
goto multilinecomment;
}
yy94:
++YYCURSOR;
yy95:
{ goto multilinecomment; }
yy96:
++YYCURSOR;
yy97:
{
s->line++;
goto multilinecomment;
}
yy98:
yych = *++YYCURSOR;
if (yych == '\n') goto yy96;
goto yy97;
yy99:
yych = *++YYCURSOR;
if (yych != '/') goto yy95;
++YYCURSOR;
{
if (s->report_comments)
RET(TOKEN_MULTI_COMMENT);
else if (s->report_whitespace)
RET(' ');
// Microsoft's preprocessor allows multiline comments
// before a preprocessor directive, even though C/C++
// doesn't. See if we've hit this case.
#if MATCH_MICROSOFT_PREPROCESSOR
if (s->tokenval == ((Token) '\n')) // was start of line?
{
update_state(s, eoi, cursor, token, (Token) '\n');
goto ppdirective; // may jump back to scanner_loop.
}
#endif
goto scanner_loop;
}
}
singlelinecomment:
if (YYLIMIT == YYCURSOR) YYFILL(1);
matchptr = cursor;
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if (yych <= '\n') {
if (yych <= 0x00) goto yy101;
if (yych <= '\t') goto yy102;
goto yy103;
} else {
if (yych == '\r') goto yy105;
goto yy102;
}
yy101:
++YYCURSOR;
{
if (eoi)
{
if (s->report_comments)
RET(TOKEN_SINGLE_COMMENT);
else
RET(TOKEN_EOI);
}
goto singlelinecomment;
}
yy102:
++YYCURSOR;
{ goto singlelinecomment; }
yy103:
++YYCURSOR;
yy104:
{
if (s->report_comments)
{
cursor = matchptr; // so we RET('\n') next.
RET(TOKEN_SINGLE_COMMENT);
}
s->line++;
token = matchptr;
RET('\n');
}
yy105:
yych = *++YYCURSOR;
if (yych == '\n') goto yy103;
goto yy104;
}
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 yy108;
if (yych >= '\v') goto yy108;
} else {
if (yych <= ' ') {
if (yych >= ' ') goto yy108;
} else {
if (yych == '#') goto yy109;
}
}
++YYCURSOR;
yy107:
{
token = cursor = (const uchar *) s->source;
limit = cursor + s->bytes_left;
goto scanner_loop;
}
yy108:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\n') {
if (yych == '\t') goto yy108;
} else {
if (yych <= '\f') goto yy108;
if (yych == ' ') goto yy108;
}
{ goto ppdirective; }
yy109:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'h') {
if (yych <= 0x1F) {
if (yych == '\t') goto yy111;
goto yy107;
} else {
if (yych <= ' ') goto yy111;
if (yych <= 'c') goto yy107;
if (yych <= 'e') goto yy111;
goto yy107;
}
} else {
if (yych <= 'o') {
if (yych <= 'i') goto yy111;
if (yych == 'l') goto yy111;
goto yy107;
} else {
if (yych <= 'p') goto yy111;
if (yych == 'u') goto yy111;
goto yy107;
}
}
yy110:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
yy111:
if (yych <= 'h') {
if (yych <= ' ') {
if (yych == '\t') goto yy110;
if (yych >= ' ') goto yy110;
} else {
if (yych <= 'c') goto yy112;
if (yych <= 'd') goto yy113;
if (yych <= 'e') goto yy114;
}
} else {
if (yych <= 'o') {
if (yych <= 'i') goto yy115;
if (yych == 'l') goto yy116;
} else {
if (yych <= 'p') goto yy117;
if (yych == 'u') goto yy118;
}
}
yy112:
YYCURSOR = YYMARKER;
if (yyaccept == 0) {
goto yy107;
} else {
goto yy124;
}
yy113:
yych = *++YYCURSOR;
if (yych == 'e') goto yy119;
goto yy112;
yy114:
yych = *++YYCURSOR;
if (yych <= 'm') {
if (yych == 'l') goto yy120;
goto yy112;
} else {
if (yych <= 'n') goto yy121;
if (yych == 'r') goto yy122;
goto yy112;
}
yy115:
yych = *++YYCURSOR;
if (yych == 'f') goto yy123;
if (yych == 'n') goto yy125;
goto yy112;
yy116:
yych = *++YYCURSOR;
if (yych == 'i') goto yy126;
goto yy112;
yy117:
yych = *++YYCURSOR;
if (yych == 'r') goto yy127;
goto yy112;
yy118:
yych = *++YYCURSOR;
if (yych == 'n') goto yy128;
goto yy112;
yy119:
yych = *++YYCURSOR;
if (yych == 'f') goto yy129;
goto yy112;
yy120:
yych = *++YYCURSOR;
if (yych == 'i') goto yy130;
if (yych == 's') goto yy131;
goto yy112;
yy121:
yych = *++YYCURSOR;
if (yych == 'd') goto yy132;
goto yy112;
yy122:
yych = *++YYCURSOR;
if (yych == 'r') goto yy133;
goto yy112;
yy123:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == 'd') goto yy134;
if (yych == 'n') goto yy135;
yy124:
{ RET(TOKEN_PP_IF); }
yy125:
yych = *++YYCURSOR;
if (yych == 'c') goto yy136;
goto yy112;
yy126:
yych = *++YYCURSOR;
if (yych == 'n') goto yy137;
goto yy112;
yy127:
yych = *++YYCURSOR;
if (yych == 'a') goto yy138;
goto yy112;
yy128:
yych = *++YYCURSOR;
if (yych == 'd') goto yy139;
goto yy112;
yy129:
yych = *++YYCURSOR;
if (yych == 'i') goto yy140;
goto yy112;
yy130:
yych = *++YYCURSOR;
if (yych == 'f') goto yy141;
goto yy112;
yy131:
yych = *++YYCURSOR;
if (yych == 'e') goto yy142;
goto yy112;
yy132:
yych = *++YYCURSOR;
if (yych == 'i') goto yy143;
goto yy112;
yy133:
yych = *++YYCURSOR;
if (yych == 'o') goto yy144;
goto yy112;
yy134:
yych = *++YYCURSOR;
if (yych == 'e') goto yy145;
goto yy112;
yy135:
yych = *++YYCURSOR;
if (yych == 'd') goto yy146;
goto yy112;
yy136:
yych = *++YYCURSOR;
if (yych == 'l') goto yy147;
goto yy112;
yy137:
yych = *++YYCURSOR;
if (yych == 'e') goto yy148;
goto yy112;
yy138:
yych = *++YYCURSOR;
if (yych == 'g') goto yy149;
goto yy112;
yy139:
yych = *++YYCURSOR;
if (yych == 'e') goto yy150;
goto yy112;
yy140:
yych = *++YYCURSOR;
if (yych == 'n') goto yy151;
goto yy112;
yy141:
++YYCURSOR;
{ RET(TOKEN_PP_ELIF); }
yy142:
++YYCURSOR;
{ RET(TOKEN_PP_ELSE); }
yy143:
yych = *++YYCURSOR;
if (yych == 'f') goto yy152;
goto yy112;
yy144:
yych = *++YYCURSOR;
if (yych == 'r') goto yy153;
goto yy112;
yy145:
yych = *++YYCURSOR;
if (yych == 'f') goto yy154;
goto yy112;
yy146:
yych = *++YYCURSOR;
if (yych == 'e') goto yy155;
goto yy112;
yy147:
yych = *++YYCURSOR;
if (yych == 'u') goto yy156;
goto yy112;
yy148:
++YYCURSOR;
{ RET(TOKEN_PP_LINE); }
yy149:
yych = *++YYCURSOR;
if (yych == 'm') goto yy157;
goto yy112;
yy150:
yych = *++YYCURSOR;
if (yych == 'f') goto yy158;
goto yy112;
yy151:
yych = *++YYCURSOR;
if (yych == 'e') goto yy159;
goto yy112;
yy152:
++YYCURSOR;
{ RET(TOKEN_PP_ENDIF); }
yy153:
++YYCURSOR;
{ RET(TOKEN_PP_ERROR); }
yy154:
++YYCURSOR;
{ RET(TOKEN_PP_IFDEF); }
yy155:
yych = *++YYCURSOR;
if (yych == 'f') goto yy160;
goto yy112;
yy156:
yych = *++YYCURSOR;
if (yych == 'd') goto yy161;
goto yy112;
yy157:
yych = *++YYCURSOR;
if (yych == 'a') goto yy162;
goto yy112;
yy158:
++YYCURSOR;
{ RET(TOKEN_PP_UNDEF); }
yy159:
++YYCURSOR;
{ RET(TOKEN_PP_DEFINE); }
yy160:
++YYCURSOR;
{ RET(TOKEN_PP_IFNDEF); }
yy161:
yych = *++YYCURSOR;
if (yych == 'e') goto yy163;
goto yy112;
yy162:
++YYCURSOR;
{ RET(TOKEN_PP_PRAGMA); }
yy163:
++YYCURSOR;
{ RET(TOKEN_PP_INCLUDE); }
}
bad_chars:
if (YYLIMIT == YYCURSOR) YYFILL(1);
{
YYCTYPE yych;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '#') {
if (yych <= '\r') {
if (yych <= 0x00) goto yy165;
if (yych <= 0x08) goto yy166;
goto yy167;
} else {
if (yych <= 0x1F) goto yy166;
if (yych == '"') goto yy166;
goto yy167;
}
} else {
if (yych <= '@') {
if (yych <= '$') goto yy166;
if (yych <= '?') goto yy167;
goto yy166;
} else {
if (yych == '`') goto yy166;
if (yych <= '~') goto yy167;
goto yy166;
}
}
yy165:
++YYCURSOR;
{
if (eoi)
{
assert( !((token >= sentinel) &&
(token < sentinel+YYMAXFILL)) );
eoi = 0;
cursor = (uchar *) s->source_base + s->orig_length;
RET(TOKEN_BAD_CHARS); // next call will be EOI.
}
goto bad_chars;
}
yy166:
++YYCURSOR;
{ goto bad_chars; }
yy167:
++YYCURSOR;
{ cursor--; RET(TOKEN_BAD_CHARS); }
}
assert(0 && "Shouldn't hit this code");
RET(TOKEN_UNKNOWN);
} // preprocessor_lexer
// end of mojoshader_lexer.re (or .c) ...