aboutsummaryrefslogtreecommitdiff
path: root/Externals/mojoshader/1067/mojoshader_lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'Externals/mojoshader/1067/mojoshader_lexer.c')
-rw-r--r--Externals/mojoshader/1067/mojoshader_lexer.c1504
1 files changed, 1504 insertions, 0 deletions
diff --git a/Externals/mojoshader/1067/mojoshader_lexer.c b/Externals/mojoshader/1067/mojoshader_lexer.c
new file mode 100644
index 00000000..53361788
--- /dev/null
+++ b/Externals/mojoshader/1067/mojoshader_lexer.c
@@ -0,0 +1,1504 @@
+/* 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) ...
+