| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504 |
- /* 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) ...
|