Urho3D/Source/ThirdParty/MojoShader/mojoshader_lexer.c

1505 lines
29 KiB
C

/* Generated by re2c 0.13.5 */
/**
* 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 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;
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) < 5) YYFILL(5);
yych = *YYCURSOR;
switch (yych) {
case 0x00: goto yy61;
case '\t':
case '\v':
case '\f':
case ' ': goto yy63;
case '\n': goto yy65;
case '\r': goto yy67;
case '!': goto yy35;
case '"': goto yy14;
case '#': goto yy37;
case '%': goto yy25;
case '&': goto yy29;
case '\'': goto yy11;
case '(': goto yy39;
case ')': goto yy41;
case '*': goto yy23;
case '+': goto yy19;
case ',': goto yy47;
case '-': goto yy21;
case '.': goto yy12;
case '/': goto yy4;
case '0': goto yy8;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy10;
case ':': goto yy51;
case ';': goto yy59;
case '<': goto yy17;
case '=': goto yy33;
case '>': goto yy15;
case '?': goto yy57;
case '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 yy6;
case '[': goto yy43;
case '\\': goto yy2;
case ']': goto yy45;
case '^': goto yy27;
case '{': goto yy53;
case '|': goto yy31;
case '}': goto yy55;
case '~': goto yy49;
default: goto yy68;
}
yy2:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 0x08) goto yy3;
if (yych <= '\r') goto yy177;
if (yych == ' ') goto yy177;
yy3:
{ goto bad_chars; }
yy4:
++YYCURSOR;
if ((yych = *YYCURSOR) <= '.') {
if (yych == '*') goto yy174;
} else {
if (yych <= '/') goto yy172;
if (yych == '=') goto yy170;
}
{ RET('/'); }
yy6:
++YYCURSOR;
yych = *YYCURSOR;
goto yy169;
yy7:
{ RET(TOKEN_IDENTIFIER); }
yy8:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'X') {
if (yych <= 'T') {
if (yych == 'L') goto yy144;
goto yy160;
} else {
if (yych <= 'U') goto yy144;
if (yych <= 'W') goto yy160;
goto yy161;
}
} else {
if (yych <= 't') {
if (yych == 'l') goto yy144;
goto yy160;
} else {
if (yych <= 'u') goto yy144;
if (yych == 'x') goto yy161;
goto yy160;
}
}
yy9:
{ RET(TOKEN_INT_LITERAL); }
yy10:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
goto yy142;
yy11:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == '\n') goto yy3;
if (yych == '\r') goto yy3;
goto yy132;
yy12:
++YYCURSOR;
if ((yych = *YYCURSOR) <= '/') goto yy13;
if (yych <= '9') goto yy123;
yy13:
{ RET('.'); }
yy14:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == '\n') goto yy3;
if (yych == '\r') goto yy3;
goto yy113;
yy15:
++YYCURSOR;
if ((yych = *YYCURSOR) <= '<') goto yy16;
if (yych <= '=') goto yy106;
if (yych <= '>') goto yy108;
yy16:
{ RET('>'); }
yy17:
++YYCURSOR;
if ((yych = *YYCURSOR) <= ';') goto yy18;
if (yych <= '<') goto yy102;
if (yych <= '=') goto yy100;
yy18:
{ RET('<'); }
yy19:
++YYCURSOR;
if ((yych = *YYCURSOR) == '+') goto yy96;
if (yych == '=') goto yy98;
{ RET('+'); }
yy21:
++YYCURSOR;
if ((yych = *YYCURSOR) == '-') goto yy92;
if (yych == '=') goto yy94;
{ RET('-'); }
yy23:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy90;
{ RET('*'); }
yy25:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy88;
{ RET('%'); }
yy27:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy86;
{ RET('^'); }
yy29:
++YYCURSOR;
if ((yych = *YYCURSOR) == '&') goto yy82;
if (yych == '=') goto yy84;
{ RET('&'); }
yy31:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy80;
if (yych == '|') goto yy78;
{ RET('|'); }
yy33:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy76;
{ RET('='); }
yy35:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy74;
{ RET('!'); }
yy37:
++YYCURSOR;
if ((yych = *YYCURSOR) == '#') goto yy72;
{ RET(TOKEN_HASH); }
yy39:
++YYCURSOR;
{ RET('('); }
yy41:
++YYCURSOR;
{ RET(')'); }
yy43:
++YYCURSOR;
{ RET('['); }
yy45:
++YYCURSOR;
{ RET(']'); }
yy47:
++YYCURSOR;
{ RET(','); }
yy49:
++YYCURSOR;
{ RET('~'); }
yy51:
++YYCURSOR;
{ RET(':'); }
yy53:
++YYCURSOR;
{ RET('{'); }
yy55:
++YYCURSOR;
{ RET('}'); }
yy57:
++YYCURSOR;
{ RET('?'); }
yy59:
++YYCURSOR;
{ if (s->asm_comments) goto singlelinecomment; RET(';'); }
yy61:
++YYCURSOR;
{ if (eoi) { RET(TOKEN_EOI); } goto bad_chars; }
yy63:
++YYCURSOR;
yych = *YYCURSOR;
goto yy71;
yy64:
{ if (s->report_whitespace) RET(' '); goto scanner_loop; }
yy65:
++YYCURSOR;
yy66:
{ s->line++; RET('\n'); }
yy67:
yych = *++YYCURSOR;
if (yych == '\n') goto yy69;
goto yy66;
yy68:
yych = *++YYCURSOR;
goto yy3;
yy69:
yych = *++YYCURSOR;
goto yy66;
yy70:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy71:
if (yych <= '\n') {
if (yych == '\t') goto yy70;
goto yy64;
} else {
if (yych <= '\f') goto yy70;
if (yych == ' ') goto yy70;
goto yy64;
}
yy72:
++YYCURSOR;
{ RET(TOKEN_HASHHASH); }
yy74:
++YYCURSOR;
{ RET(TOKEN_NEQ); }
yy76:
++YYCURSOR;
{ RET(TOKEN_EQL); }
yy78:
++YYCURSOR;
{ RET(TOKEN_OROR); }
yy80:
++YYCURSOR;
{ RET(TOKEN_ORASSIGN); }
yy82:
++YYCURSOR;
{ RET(TOKEN_ANDAND); }
yy84:
++YYCURSOR;
{ RET(TOKEN_ANDASSIGN); }
yy86:
++YYCURSOR;
{ RET(TOKEN_XORASSIGN); }
yy88:
++YYCURSOR;
{ RET(TOKEN_MODASSIGN); }
yy90:
++YYCURSOR;
{ RET(TOKEN_MULTASSIGN); }
yy92:
++YYCURSOR;
{ RET(TOKEN_DECREMENT); }
yy94:
++YYCURSOR;
{ RET(TOKEN_SUBASSIGN); }
yy96:
++YYCURSOR;
{ RET(TOKEN_INCREMENT); }
yy98:
++YYCURSOR;
{ RET(TOKEN_ADDASSIGN); }
yy100:
++YYCURSOR;
{ RET(TOKEN_LEQ); }
yy102:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy104;
{ RET(TOKEN_LSHIFT); }
yy104:
++YYCURSOR;
{ RET(TOKEN_LSHIFTASSIGN); }
yy106:
++YYCURSOR;
{ RET(TOKEN_GEQ); }
yy108:
++YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy110;
{ RET(TOKEN_RSHIFT); }
yy110:
++YYCURSOR;
{ RET(TOKEN_RSHIFTASSIGN); }
yy112:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy113:
if (yych <= '\r') {
if (yych == '\n') goto yy114;
if (yych <= '\f') goto yy112;
} else {
if (yych <= '"') {
if (yych <= '!') goto yy112;
goto yy116;
} else {
if (yych == '\\') goto yy115;
goto yy112;
}
}
yy114:
YYCURSOR = YYMARKER;
if (yyaccept <= 1) {
if (yyaccept <= 0) {
goto yy3;
} else {
goto yy9;
}
} else {
goto yy125;
}
yy115:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'b') {
if (yych <= '7') {
if (yych <= '&') {
if (yych == '"') goto yy112;
goto yy114;
} else {
if (yych <= '\'') goto yy112;
if (yych <= '/') goto yy114;
goto yy119;
}
} else {
if (yych <= '[') {
if (yych == '?') goto yy112;
goto yy114;
} else {
if (yych <= '\\') goto yy112;
if (yych <= '`') goto yy114;
goto yy112;
}
}
} else {
if (yych <= 'r') {
if (yych <= 'm') {
if (yych == 'f') goto yy112;
goto yy114;
} else {
if (yych <= 'n') goto yy112;
if (yych <= 'q') goto yy114;
goto yy112;
}
} else {
if (yych <= 'u') {
if (yych == 't') goto yy112;
goto yy114;
} else {
if (yych <= 'v') goto yy112;
if (yych == 'x') goto yy118;
goto yy114;
}
}
}
yy116:
++YYCURSOR;
{ RET(TOKEN_STRING_LITERAL); }
yy118:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy114;
if (yych <= '9') goto yy121;
goto yy114;
} else {
if (yych <= 'F') goto yy121;
if (yych <= '`') goto yy114;
if (yych <= 'f') goto yy121;
goto yy114;
}
yy119:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '!') {
if (yych <= '\n') {
if (yych <= '\t') goto yy112;
goto yy114;
} else {
if (yych == '\r') goto yy114;
goto yy112;
}
} else {
if (yych <= '7') {
if (yych <= '"') goto yy116;
if (yych <= '/') goto yy112;
goto yy119;
} else {
if (yych == '\\') goto yy115;
goto yy112;
}
}
yy121:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '/') {
if (yych <= '\f') {
if (yych == '\n') goto yy114;
goto yy112;
} else {
if (yych <= '\r') goto yy114;
if (yych == '"') goto yy116;
goto yy112;
}
} else {
if (yych <= '[') {
if (yych <= '9') goto yy121;
if (yych <= '@') goto yy112;
if (yych <= 'F') goto yy121;
goto yy112;
} else {
if (yych <= '\\') goto yy115;
if (yych <= '`') goto yy112;
if (yych <= 'f') goto yy121;
goto yy112;
}
}
yy123:
yyaccept = 2;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= 'D') {
if (yych <= '/') goto yy125;
if (yych <= '9') goto yy123;
} else {
if (yych <= 'E') goto yy126;
if (yych <= 'F') goto yy127;
}
} else {
if (yych <= 'e') {
if (yych <= 'H') goto yy127;
if (yych >= 'e') goto yy126;
} else {
if (yych == 'g') goto yy125;
if (yych <= 'h') goto yy127;
}
}
yy125:
{ RET(TOKEN_FLOAT_LITERAL); }
yy126:
yych = *++YYCURSOR;
if (yych <= ',') {
if (yych == '+') goto yy128;
goto yy114;
} else {
if (yych <= '-') goto yy128;
if (yych <= '/') goto yy114;
if (yych <= '9') goto yy129;
goto yy114;
}
yy127:
yych = *++YYCURSOR;
goto yy125;
yy128:
yych = *++YYCURSOR;
if (yych <= '/') goto yy114;
if (yych >= ':') goto yy114;
yy129:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= '9') {
if (yych <= '/') goto yy125;
goto yy129;
} else {
if (yych == 'F') goto yy127;
goto yy125;
}
} else {
if (yych <= 'f') {
if (yych <= 'H') goto yy127;
if (yych <= 'e') goto yy125;
goto yy127;
} else {
if (yych == 'h') goto yy127;
goto yy125;
}
}
yy131:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy132:
if (yych <= '\r') {
if (yych == '\n') goto yy114;
if (yych <= '\f') goto yy131;
goto yy114;
} else {
if (yych <= '\'') {
if (yych <= '&') goto yy131;
goto yy134;
} else {
if (yych != '\\') goto yy131;
}
}
yy133:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'b') {
if (yych <= '7') {
if (yych <= '&') {
if (yych == '"') goto yy131;
goto yy114;
} else {
if (yych <= '\'') goto yy131;
if (yych <= '/') goto yy114;
goto yy136;
}
} else {
if (yych <= '[') {
if (yych == '?') goto yy131;
goto yy114;
} else {
if (yych <= '\\') goto yy131;
if (yych <= '`') goto yy114;
goto yy131;
}
}
} else {
if (yych <= 'r') {
if (yych <= 'm') {
if (yych == 'f') goto yy131;
goto yy114;
} else {
if (yych <= 'n') goto yy131;
if (yych <= 'q') goto yy114;
goto yy131;
}
} else {
if (yych <= 'u') {
if (yych == 't') goto yy131;
goto yy114;
} else {
if (yych <= 'v') goto yy131;
if (yych == 'x') goto yy135;
goto yy114;
}
}
}
yy134:
yych = *++YYCURSOR;
goto yy9;
yy135:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy114;
if (yych <= '9') goto yy138;
goto yy114;
} else {
if (yych <= 'F') goto yy138;
if (yych <= '`') goto yy114;
if (yych <= 'f') goto yy138;
goto yy114;
}
yy136:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '&') {
if (yych <= '\n') {
if (yych <= '\t') goto yy131;
goto yy114;
} else {
if (yych == '\r') goto yy114;
goto yy131;
}
} else {
if (yych <= '7') {
if (yych <= '\'') goto yy134;
if (yych <= '/') goto yy131;
goto yy136;
} else {
if (yych == '\\') goto yy133;
goto yy131;
}
}
yy138:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '/') {
if (yych <= '\f') {
if (yych == '\n') goto yy114;
goto yy131;
} else {
if (yych <= '\r') goto yy114;
if (yych == '\'') goto yy134;
goto yy131;
}
} else {
if (yych <= '[') {
if (yych <= '9') goto yy138;
if (yych <= '@') goto yy131;
if (yych <= 'F') goto yy138;
goto yy131;
} else {
if (yych <= '\\') goto yy133;
if (yych <= '`') goto yy131;
if (yych <= 'f') goto yy138;
goto yy131;
}
}
yy140:
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == 'E') goto yy151;
if (yych == 'e') goto yy151;
goto yy150;
yy141:
yyaccept = 1;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
yy142:
if (yych <= 'L') {
if (yych <= '9') {
if (yych == '.') goto yy140;
if (yych <= '/') goto yy9;
goto yy141;
} else {
if (yych == 'E') goto yy143;
if (yych <= 'K') goto yy9;
goto yy144;
}
} else {
if (yych <= 'e') {
if (yych == 'U') goto yy144;
if (yych <= 'd') goto yy9;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy9;
goto yy144;
} else {
if (yych == 'u') goto yy144;
goto yy9;
}
}
}
yy143:
yych = *++YYCURSOR;
if (yych <= ',') {
if (yych == '+') goto yy146;
goto yy114;
} else {
if (yych <= '-') goto yy146;
if (yych <= '/') goto yy114;
if (yych <= '9') goto yy147;
goto yy114;
}
yy144:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'U') {
if (yych == 'L') goto yy144;
if (yych <= 'T') goto yy9;
goto yy144;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy9;
goto yy144;
} else {
if (yych == 'u') goto yy144;
goto yy9;
}
}
yy146:
yych = *++YYCURSOR;
if (yych <= '/') goto yy114;
if (yych >= ':') goto yy114;
yy147:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= '9') {
if (yych <= '/') goto yy125;
goto yy147;
} else {
if (yych == 'F') goto yy127;
goto yy125;
}
} else {
if (yych <= 'f') {
if (yych <= 'H') goto yy127;
if (yych <= 'e') goto yy125;
goto yy127;
} else {
if (yych == 'h') goto yy127;
goto yy125;
}
}
yy149:
yyaccept = 2;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
yy150:
if (yych <= 'G') {
if (yych <= 'D') {
if (yych <= '/') goto yy125;
if (yych <= '9') goto yy149;
goto yy125;
} else {
if (yych <= 'E') goto yy155;
if (yych <= 'F') goto yy127;
goto yy125;
}
} else {
if (yych <= 'e') {
if (yych <= 'H') goto yy127;
if (yych <= 'd') goto yy125;
goto yy155;
} else {
if (yych == 'g') goto yy125;
if (yych <= 'h') goto yy127;
goto yy125;
}
}
yy151:
yych = *++YYCURSOR;
if (yych <= ',') {
if (yych != '+') goto yy114;
} else {
if (yych <= '-') goto yy152;
if (yych <= '/') goto yy114;
if (yych <= '9') goto yy153;
goto yy114;
}
yy152:
yych = *++YYCURSOR;
if (yych <= '/') goto yy114;
if (yych >= ':') goto yy114;
yy153:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= '9') {
if (yych <= '/') goto yy125;
goto yy153;
} else {
if (yych == 'F') goto yy127;
goto yy125;
}
} else {
if (yych <= 'f') {
if (yych <= 'H') goto yy127;
if (yych <= 'e') goto yy125;
goto yy127;
} else {
if (yych == 'h') goto yy127;
goto yy125;
}
}
yy155:
yych = *++YYCURSOR;
if (yych <= ',') {
if (yych != '+') goto yy114;
} else {
if (yych <= '-') goto yy156;
if (yych <= '/') goto yy114;
if (yych <= '9') goto yy157;
goto yy114;
}
yy156:
yych = *++YYCURSOR;
if (yych <= '/') goto yy114;
if (yych >= ':') goto yy114;
yy157:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'G') {
if (yych <= '9') {
if (yych <= '/') goto yy125;
goto yy157;
} else {
if (yych == 'F') goto yy127;
goto yy125;
}
} else {
if (yych <= 'f') {
if (yych <= 'H') goto yy127;
if (yych <= 'e') goto yy125;
goto yy127;
} else {
if (yych == 'h') goto yy127;
goto yy125;
}
}
yy159:
yyaccept = 1;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
yy160:
if (yych <= 'L') {
if (yych <= '9') {
if (yych == '.') goto yy140;
if (yych <= '/') goto yy9;
goto yy159;
} else {
if (yych == 'E') goto yy143;
if (yych <= 'K') goto yy9;
goto yy166;
}
} else {
if (yych <= 'e') {
if (yych == 'U') goto yy166;
if (yych <= 'd') goto yy9;
goto yy143;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy9;
goto yy166;
} else {
if (yych == 'u') goto yy166;
goto yy9;
}
}
}
yy161:
yych = *++YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy114;
if (yych >= ':') goto yy114;
} else {
if (yych <= 'F') goto yy162;
if (yych <= '`') goto yy114;
if (yych >= 'g') goto yy114;
}
yy162:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'T') {
if (yych <= '@') {
if (yych <= '/') goto yy9;
if (yych <= '9') goto yy162;
goto yy9;
} else {
if (yych <= 'F') goto yy162;
if (yych != 'L') goto yy9;
}
} else {
if (yych <= 'k') {
if (yych <= 'U') goto yy164;
if (yych <= '`') goto yy9;
if (yych <= 'f') goto yy162;
goto yy9;
} else {
if (yych <= 'l') goto yy164;
if (yych != 'u') goto yy9;
}
}
yy164:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'U') {
if (yych == 'L') goto yy164;
if (yych <= 'T') goto yy9;
goto yy164;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy9;
goto yy164;
} else {
if (yych == 'u') goto yy164;
goto yy9;
}
}
yy166:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'U') {
if (yych == 'L') goto yy166;
if (yych <= 'T') goto yy9;
goto yy166;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy9;
goto yy166;
} else {
if (yych == 'u') goto yy166;
goto yy9;
}
}
yy168:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy169:
if (yych <= 'Z') {
if (yych <= '/') goto yy7;
if (yych <= '9') goto yy168;
if (yych <= '@') goto yy7;
goto yy168;
} else {
if (yych <= '_') {
if (yych <= '^') goto yy7;
goto yy168;
} else {
if (yych <= '`') goto yy7;
if (yych <= 'z') goto yy168;
goto yy7;
}
}
yy170:
++YYCURSOR;
{ RET(TOKEN_DIVASSIGN); }
yy172:
++YYCURSOR;
{ goto singlelinecomment; }
yy174:
++YYCURSOR;
{ goto multilinecomment; }
yy176:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
yy177:
if (yych <= '\f') {
if (yych <= 0x08) goto yy114;
if (yych != '\n') goto yy176;
} else {
if (yych <= '\r') goto yy180;
if (yych == ' ') goto yy176;
goto yy114;
}
yy178:
++YYCURSOR;
yy179:
{ s->line++; goto scanner_loop; }
yy180:
++YYCURSOR;
if ((yych = *YYCURSOR) == '\n') goto yy178;
goto yy179;
}
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 yy188;
if (yych == '\n') goto yy185;
goto yy190;
} else {
if (yych <= '\r') goto yy187;
if (yych != '*') goto yy190;
}
++YYCURSOR;
if ((yych = *YYCURSOR) == '/') goto yy192;
yy184:
{ goto multilinecomment; }
yy185:
++YYCURSOR;
yy186:
{
s->line++;
token = matchptr;
saw_newline = 1;
goto multilinecomment;
}
yy187:
yych = *++YYCURSOR;
if (yych == '\n') goto yy191;
goto yy186;
yy188:
++YYCURSOR;
{
if (eoi)
RET(TOKEN_INCOMPLETE_COMMENT);
goto multilinecomment;
}
yy190:
yych = *++YYCURSOR;
goto yy184;
yy191:
yych = *++YYCURSOR;
goto yy186;
yy192:
++YYCURSOR;
{
if (saw_newline)
RET('\n');
else if (s->report_whitespace)
RET(' ');
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 yy199;
if (yych <= '\t') goto yy201;
} else {
if (yych == '\r') goto yy198;
goto yy201;
}
++YYCURSOR;
yy197:
{ s->line++; token = matchptr; RET('\n'); }
yy198:
yych = *++YYCURSOR;
if (yych == '\n') goto yy203;
goto yy197;
yy199:
++YYCURSOR;
{ if (eoi) { RET(TOKEN_EOI); } goto singlelinecomment; }
yy201:
++YYCURSOR;
{ goto singlelinecomment; }
yy203:
++YYCURSOR;
yych = *YYCURSOR;
goto yy197;
}
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 yy208;
if (yych <= '\n') goto yy210;
goto yy208;
} else {
if (yych <= ' ') {
if (yych <= 0x1F) goto yy210;
goto yy208;
} else {
if (yych != '#') goto yy210;
}
}
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'h') {
if (yych <= 0x1F) {
if (yych == '\t') goto yy214;
} else {
if (yych <= ' ') goto yy214;
if (yych <= 'c') goto yy207;
if (yych <= 'e') goto yy214;
}
} else {
if (yych <= 'o') {
if (yych <= 'i') goto yy214;
if (yych == 'l') goto yy214;
} else {
if (yych <= 'p') goto yy214;
if (yych == 'u') goto yy214;
}
}
yy207:
{
token = cursor = (const uchar *) s->source;
limit = cursor + s->bytes_left;
goto scanner_loop;
}
yy208:
++YYCURSOR;
yych = *YYCURSOR;
goto yy212;
yy209:
{ goto ppdirective; }
yy210:
yych = *++YYCURSOR;
goto yy207;
yy211:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy212:
if (yych <= '\n') {
if (yych == '\t') goto yy211;
goto yy209;
} else {
if (yych <= '\f') goto yy211;
if (yych == ' ') goto yy211;
goto yy209;
}
yy213:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
yy214:
if (yych <= 'h') {
if (yych <= ' ') {
if (yych == '\t') goto yy213;
if (yych >= ' ') goto yy213;
} else {
if (yych <= 'c') goto yy215;
if (yych <= 'd') goto yy220;
if (yych <= 'e') goto yy217;
}
} else {
if (yych <= 'o') {
if (yych <= 'i') goto yy218;
if (yych == 'l') goto yy221;
} else {
if (yych <= 'p') goto yy216;
if (yych == 'u') goto yy219;
}
}
yy215:
YYCURSOR = YYMARKER;
if (yyaccept <= 0) {
goto yy207;
} else {
goto yy239;
}
yy216:
yych = *++YYCURSOR;
if (yych == 'r') goto yy272;
goto yy215;
yy217:
yych = *++YYCURSOR;
if (yych <= 'm') {
if (yych == 'l') goto yy255;
goto yy215;
} else {
if (yych <= 'n') goto yy256;
if (yych == 'r') goto yy257;
goto yy215;
}
yy218:
yych = *++YYCURSOR;
if (yych == 'f') goto yy238;
if (yych == 'n') goto yy237;
goto yy215;
yy219:
yych = *++YYCURSOR;
if (yych == 'n') goto yy232;
goto yy215;
yy220:
yych = *++YYCURSOR;
if (yych == 'e') goto yy226;
goto yy215;
yy221:
yych = *++YYCURSOR;
if (yych != 'i') goto yy215;
yych = *++YYCURSOR;
if (yych != 'n') goto yy215;
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_LINE); }
yy226:
yych = *++YYCURSOR;
if (yych != 'f') goto yy215;
yych = *++YYCURSOR;
if (yych != 'i') goto yy215;
yych = *++YYCURSOR;
if (yych != 'n') goto yy215;
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_DEFINE); }
yy232:
yych = *++YYCURSOR;
if (yych != 'd') goto yy215;
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
yych = *++YYCURSOR;
if (yych != 'f') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_UNDEF); }
yy237:
yych = *++YYCURSOR;
if (yych == 'c') goto yy249;
goto yy215;
yy238:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == 'd') goto yy241;
if (yych == 'n') goto yy240;
yy239:
{ RET(TOKEN_PP_IF); }
yy240:
yych = *++YYCURSOR;
if (yych == 'd') goto yy245;
goto yy215;
yy241:
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
yych = *++YYCURSOR;
if (yych != 'f') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_IFDEF); }
yy245:
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
yych = *++YYCURSOR;
if (yych != 'f') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_IFNDEF); }
yy249:
yych = *++YYCURSOR;
if (yych != 'l') goto yy215;
yych = *++YYCURSOR;
if (yych != 'u') goto yy215;
yych = *++YYCURSOR;
if (yych != 'd') goto yy215;
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_INCLUDE); }
yy255:
yych = *++YYCURSOR;
if (yych == 'i') goto yy266;
if (yych == 's') goto yy267;
goto yy215;
yy256:
yych = *++YYCURSOR;
if (yych == 'd') goto yy262;
goto yy215;
yy257:
yych = *++YYCURSOR;
if (yych != 'r') goto yy215;
yych = *++YYCURSOR;
if (yych != 'o') goto yy215;
yych = *++YYCURSOR;
if (yych != 'r') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_ERROR); }
yy262:
yych = *++YYCURSOR;
if (yych != 'i') goto yy215;
yych = *++YYCURSOR;
if (yych != 'f') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_ENDIF); }
yy266:
yych = *++YYCURSOR;
if (yych == 'f') goto yy270;
goto yy215;
yy267:
yych = *++YYCURSOR;
if (yych != 'e') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_ELSE); }
yy270:
++YYCURSOR;
{ RET(TOKEN_PP_ELIF); }
yy272:
yych = *++YYCURSOR;
if (yych != 'a') goto yy215;
yych = *++YYCURSOR;
if (yych != 'g') goto yy215;
yych = *++YYCURSOR;
if (yych != 'm') goto yy215;
yych = *++YYCURSOR;
if (yych != 'a') goto yy215;
++YYCURSOR;
{ RET(TOKEN_PP_PRAGMA); }
}
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 yy282;
if (yych <= 0x08) goto yy284;
} else {
if (yych <= 0x1F) goto yy284;
if (yych == '"') goto yy284;
}
} else {
if (yych <= '@') {
if (yych <= '$') goto yy284;
if (yych >= '@') goto yy284;
} else {
if (yych == '`') goto yy284;
if (yych >= 0x7F) goto yy284;
}
}
++YYCURSOR;
{ cursor--; RET(TOKEN_BAD_CHARS); }
yy282:
++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;
}
yy284:
++YYCURSOR;
{ goto bad_chars; }
}
assert(0 && "Shouldn't hit this code");
RET(TOKEN_UNKNOWN);
} // preprocessor_lexer
// end of mojoshader_lexer_preprocessor.re (or .c) ...