mojoshader_lexer.c 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504
  1. /* Generated by re2c 0.13.5 */
  2. /**
  3. * MojoShader; generate shader programs from bytecode of compiled
  4. * Direct3D shaders.
  5. *
  6. * Please see the file LICENSE.txt in the source's root directory.
  7. *
  8. * This file written by Ryan C. Gordon.
  9. */
  10. // This was originally based on examples/pp-c.re from re2c: http://re2c.org/
  11. // re2c is public domain code.
  12. //
  13. // You build mojoshader_lexer_preprocessor.c from the .re file with re2c...
  14. // re2c -is -o mojoshader_lexer_preprocessor.c mojoshader_lexer_preprocessor.re
  15. //
  16. // Changes to the lexer are done to the .re file, not the C code!
  17. //
  18. // Please note that this isn't a perfect C lexer, since it is used for both
  19. // HLSL and shader assembly language, and follows the quirks of Microsoft's
  20. // tools.
  21. #define __MOJOSHADER_INTERNAL__ 1
  22. #include "mojoshader_internal.h"
  23. typedef unsigned char uchar;
  24. #define YYMAXFILL 8
  25. #define RET(t) return update_state(s, eoi, cursor, token, (Token) t)
  26. #define YYCTYPE uchar
  27. #define YYCURSOR cursor
  28. #define YYLIMIT limit
  29. #define YYMARKER s->lexer_marker
  30. #define YYFILL(n) { if ((n) == 1) { cursor = sentinel; limit = cursor + YYMAXFILL; eoi = 1; } }
  31. static uchar sentinel[YYMAXFILL];
  32. static Token update_state(IncludeState *s, int eoi, const uchar *cur,
  33. const uchar *tok, const Token val)
  34. {
  35. if (eoi)
  36. {
  37. s->bytes_left = 0;
  38. s->source = (const char *) s->source_base + s->orig_length;
  39. if ( (tok >= sentinel) && (tok < (sentinel+YYMAXFILL)) )
  40. s->token = s->source;
  41. else
  42. s->token = (const char *) tok;
  43. } // if
  44. else
  45. {
  46. s->bytes_left -= (unsigned int) (cur - ((const uchar *) s->source));
  47. s->source = (const char *) cur;
  48. s->token = (const char *) tok;
  49. } // else
  50. s->tokenlen = (unsigned int) (s->source - s->token);
  51. s->tokenval = val;
  52. return val;
  53. } // update_state
  54. Token preprocessor_lexer(IncludeState *s)
  55. {
  56. const uchar *cursor = (const uchar *) s->source;
  57. const uchar *token = cursor;
  58. const uchar *matchptr;
  59. const uchar *limit = cursor + s->bytes_left;
  60. int eoi = 0;
  61. int saw_newline = 0;
  62. // preprocessor directives are only valid at start of line.
  63. if (s->tokenval == ((Token) '\n'))
  64. goto ppdirective; // may jump back to scanner_loop.
  65. scanner_loop:
  66. if (YYLIMIT == YYCURSOR) YYFILL(1);
  67. token = cursor;
  68. {
  69. YYCTYPE yych;
  70. unsigned int yyaccept = 0;
  71. if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  72. yych = *YYCURSOR;
  73. switch (yych) {
  74. case 0x00: goto yy61;
  75. case '\t':
  76. case '\v':
  77. case '\f':
  78. case ' ': goto yy63;
  79. case '\n': goto yy65;
  80. case '\r': goto yy67;
  81. case '!': goto yy35;
  82. case '"': goto yy14;
  83. case '#': goto yy37;
  84. case '%': goto yy25;
  85. case '&': goto yy29;
  86. case '\'': goto yy11;
  87. case '(': goto yy39;
  88. case ')': goto yy41;
  89. case '*': goto yy23;
  90. case '+': goto yy19;
  91. case ',': goto yy47;
  92. case '-': goto yy21;
  93. case '.': goto yy12;
  94. case '/': goto yy4;
  95. case '0': goto yy8;
  96. case '1':
  97. case '2':
  98. case '3':
  99. case '4':
  100. case '5':
  101. case '6':
  102. case '7':
  103. case '8':
  104. case '9': goto yy10;
  105. case ':': goto yy51;
  106. case ';': goto yy59;
  107. case '<': goto yy17;
  108. case '=': goto yy33;
  109. case '>': goto yy15;
  110. case '?': goto yy57;
  111. case 'A':
  112. case 'B':
  113. case 'C':
  114. case 'D':
  115. case 'E':
  116. case 'F':
  117. case 'G':
  118. case 'H':
  119. case 'I':
  120. case 'J':
  121. case 'K':
  122. case 'L':
  123. case 'M':
  124. case 'N':
  125. case 'O':
  126. case 'P':
  127. case 'Q':
  128. case 'R':
  129. case 'S':
  130. case 'T':
  131. case 'U':
  132. case 'V':
  133. case 'W':
  134. case 'X':
  135. case 'Y':
  136. case 'Z':
  137. case '_':
  138. case 'a':
  139. case 'b':
  140. case 'c':
  141. case 'd':
  142. case 'e':
  143. case 'f':
  144. case 'g':
  145. case 'h':
  146. case 'i':
  147. case 'j':
  148. case 'k':
  149. case 'l':
  150. case 'm':
  151. case 'n':
  152. case 'o':
  153. case 'p':
  154. case 'q':
  155. case 'r':
  156. case 's':
  157. case 't':
  158. case 'u':
  159. case 'v':
  160. case 'w':
  161. case 'x':
  162. case 'y':
  163. case 'z': goto yy6;
  164. case '[': goto yy43;
  165. case '\\': goto yy2;
  166. case ']': goto yy45;
  167. case '^': goto yy27;
  168. case '{': goto yy53;
  169. case '|': goto yy31;
  170. case '}': goto yy55;
  171. case '~': goto yy49;
  172. default: goto yy68;
  173. }
  174. yy2:
  175. yyaccept = 0;
  176. yych = *(YYMARKER = ++YYCURSOR);
  177. if (yych <= 0x08) goto yy3;
  178. if (yych <= '\r') goto yy177;
  179. if (yych == ' ') goto yy177;
  180. yy3:
  181. { goto bad_chars; }
  182. yy4:
  183. ++YYCURSOR;
  184. if ((yych = *YYCURSOR) <= '.') {
  185. if (yych == '*') goto yy174;
  186. } else {
  187. if (yych <= '/') goto yy172;
  188. if (yych == '=') goto yy170;
  189. }
  190. { RET('/'); }
  191. yy6:
  192. ++YYCURSOR;
  193. yych = *YYCURSOR;
  194. goto yy169;
  195. yy7:
  196. { RET(TOKEN_IDENTIFIER); }
  197. yy8:
  198. yyaccept = 1;
  199. yych = *(YYMARKER = ++YYCURSOR);
  200. if (yych <= 'X') {
  201. if (yych <= 'T') {
  202. if (yych == 'L') goto yy144;
  203. goto yy160;
  204. } else {
  205. if (yych <= 'U') goto yy144;
  206. if (yych <= 'W') goto yy160;
  207. goto yy161;
  208. }
  209. } else {
  210. if (yych <= 't') {
  211. if (yych == 'l') goto yy144;
  212. goto yy160;
  213. } else {
  214. if (yych <= 'u') goto yy144;
  215. if (yych == 'x') goto yy161;
  216. goto yy160;
  217. }
  218. }
  219. yy9:
  220. { RET(TOKEN_INT_LITERAL); }
  221. yy10:
  222. yyaccept = 1;
  223. yych = *(YYMARKER = ++YYCURSOR);
  224. goto yy142;
  225. yy11:
  226. yyaccept = 0;
  227. yych = *(YYMARKER = ++YYCURSOR);
  228. if (yych == '\n') goto yy3;
  229. if (yych == '\r') goto yy3;
  230. goto yy132;
  231. yy12:
  232. ++YYCURSOR;
  233. if ((yych = *YYCURSOR) <= '/') goto yy13;
  234. if (yych <= '9') goto yy123;
  235. yy13:
  236. { RET('.'); }
  237. yy14:
  238. yyaccept = 0;
  239. yych = *(YYMARKER = ++YYCURSOR);
  240. if (yych == '\n') goto yy3;
  241. if (yych == '\r') goto yy3;
  242. goto yy113;
  243. yy15:
  244. ++YYCURSOR;
  245. if ((yych = *YYCURSOR) <= '<') goto yy16;
  246. if (yych <= '=') goto yy106;
  247. if (yych <= '>') goto yy108;
  248. yy16:
  249. { RET('>'); }
  250. yy17:
  251. ++YYCURSOR;
  252. if ((yych = *YYCURSOR) <= ';') goto yy18;
  253. if (yych <= '<') goto yy102;
  254. if (yych <= '=') goto yy100;
  255. yy18:
  256. { RET('<'); }
  257. yy19:
  258. ++YYCURSOR;
  259. if ((yych = *YYCURSOR) == '+') goto yy96;
  260. if (yych == '=') goto yy98;
  261. { RET('+'); }
  262. yy21:
  263. ++YYCURSOR;
  264. if ((yych = *YYCURSOR) == '-') goto yy92;
  265. if (yych == '=') goto yy94;
  266. { RET('-'); }
  267. yy23:
  268. ++YYCURSOR;
  269. if ((yych = *YYCURSOR) == '=') goto yy90;
  270. { RET('*'); }
  271. yy25:
  272. ++YYCURSOR;
  273. if ((yych = *YYCURSOR) == '=') goto yy88;
  274. { RET('%'); }
  275. yy27:
  276. ++YYCURSOR;
  277. if ((yych = *YYCURSOR) == '=') goto yy86;
  278. { RET('^'); }
  279. yy29:
  280. ++YYCURSOR;
  281. if ((yych = *YYCURSOR) == '&') goto yy82;
  282. if (yych == '=') goto yy84;
  283. { RET('&'); }
  284. yy31:
  285. ++YYCURSOR;
  286. if ((yych = *YYCURSOR) == '=') goto yy80;
  287. if (yych == '|') goto yy78;
  288. { RET('|'); }
  289. yy33:
  290. ++YYCURSOR;
  291. if ((yych = *YYCURSOR) == '=') goto yy76;
  292. { RET('='); }
  293. yy35:
  294. ++YYCURSOR;
  295. if ((yych = *YYCURSOR) == '=') goto yy74;
  296. { RET('!'); }
  297. yy37:
  298. ++YYCURSOR;
  299. if ((yych = *YYCURSOR) == '#') goto yy72;
  300. { RET(TOKEN_HASH); }
  301. yy39:
  302. ++YYCURSOR;
  303. { RET('('); }
  304. yy41:
  305. ++YYCURSOR;
  306. { RET(')'); }
  307. yy43:
  308. ++YYCURSOR;
  309. { RET('['); }
  310. yy45:
  311. ++YYCURSOR;
  312. { RET(']'); }
  313. yy47:
  314. ++YYCURSOR;
  315. { RET(','); }
  316. yy49:
  317. ++YYCURSOR;
  318. { RET('~'); }
  319. yy51:
  320. ++YYCURSOR;
  321. { RET(':'); }
  322. yy53:
  323. ++YYCURSOR;
  324. { RET('{'); }
  325. yy55:
  326. ++YYCURSOR;
  327. { RET('}'); }
  328. yy57:
  329. ++YYCURSOR;
  330. { RET('?'); }
  331. yy59:
  332. ++YYCURSOR;
  333. { if (s->asm_comments) goto singlelinecomment; RET(';'); }
  334. yy61:
  335. ++YYCURSOR;
  336. { if (eoi) { RET(TOKEN_EOI); } goto bad_chars; }
  337. yy63:
  338. ++YYCURSOR;
  339. yych = *YYCURSOR;
  340. goto yy71;
  341. yy64:
  342. { if (s->report_whitespace) RET(' '); goto scanner_loop; }
  343. yy65:
  344. ++YYCURSOR;
  345. yy66:
  346. { s->line++; RET('\n'); }
  347. yy67:
  348. yych = *++YYCURSOR;
  349. if (yych == '\n') goto yy69;
  350. goto yy66;
  351. yy68:
  352. yych = *++YYCURSOR;
  353. goto yy3;
  354. yy69:
  355. yych = *++YYCURSOR;
  356. goto yy66;
  357. yy70:
  358. ++YYCURSOR;
  359. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  360. yych = *YYCURSOR;
  361. yy71:
  362. if (yych <= '\n') {
  363. if (yych == '\t') goto yy70;
  364. goto yy64;
  365. } else {
  366. if (yych <= '\f') goto yy70;
  367. if (yych == ' ') goto yy70;
  368. goto yy64;
  369. }
  370. yy72:
  371. ++YYCURSOR;
  372. { RET(TOKEN_HASHHASH); }
  373. yy74:
  374. ++YYCURSOR;
  375. { RET(TOKEN_NEQ); }
  376. yy76:
  377. ++YYCURSOR;
  378. { RET(TOKEN_EQL); }
  379. yy78:
  380. ++YYCURSOR;
  381. { RET(TOKEN_OROR); }
  382. yy80:
  383. ++YYCURSOR;
  384. { RET(TOKEN_ORASSIGN); }
  385. yy82:
  386. ++YYCURSOR;
  387. { RET(TOKEN_ANDAND); }
  388. yy84:
  389. ++YYCURSOR;
  390. { RET(TOKEN_ANDASSIGN); }
  391. yy86:
  392. ++YYCURSOR;
  393. { RET(TOKEN_XORASSIGN); }
  394. yy88:
  395. ++YYCURSOR;
  396. { RET(TOKEN_MODASSIGN); }
  397. yy90:
  398. ++YYCURSOR;
  399. { RET(TOKEN_MULTASSIGN); }
  400. yy92:
  401. ++YYCURSOR;
  402. { RET(TOKEN_DECREMENT); }
  403. yy94:
  404. ++YYCURSOR;
  405. { RET(TOKEN_SUBASSIGN); }
  406. yy96:
  407. ++YYCURSOR;
  408. { RET(TOKEN_INCREMENT); }
  409. yy98:
  410. ++YYCURSOR;
  411. { RET(TOKEN_ADDASSIGN); }
  412. yy100:
  413. ++YYCURSOR;
  414. { RET(TOKEN_LEQ); }
  415. yy102:
  416. ++YYCURSOR;
  417. if ((yych = *YYCURSOR) == '=') goto yy104;
  418. { RET(TOKEN_LSHIFT); }
  419. yy104:
  420. ++YYCURSOR;
  421. { RET(TOKEN_LSHIFTASSIGN); }
  422. yy106:
  423. ++YYCURSOR;
  424. { RET(TOKEN_GEQ); }
  425. yy108:
  426. ++YYCURSOR;
  427. if ((yych = *YYCURSOR) == '=') goto yy110;
  428. { RET(TOKEN_RSHIFT); }
  429. yy110:
  430. ++YYCURSOR;
  431. { RET(TOKEN_RSHIFTASSIGN); }
  432. yy112:
  433. ++YYCURSOR;
  434. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  435. yych = *YYCURSOR;
  436. yy113:
  437. if (yych <= '\r') {
  438. if (yych == '\n') goto yy114;
  439. if (yych <= '\f') goto yy112;
  440. } else {
  441. if (yych <= '"') {
  442. if (yych <= '!') goto yy112;
  443. goto yy116;
  444. } else {
  445. if (yych == '\\') goto yy115;
  446. goto yy112;
  447. }
  448. }
  449. yy114:
  450. YYCURSOR = YYMARKER;
  451. if (yyaccept <= 1) {
  452. if (yyaccept <= 0) {
  453. goto yy3;
  454. } else {
  455. goto yy9;
  456. }
  457. } else {
  458. goto yy125;
  459. }
  460. yy115:
  461. ++YYCURSOR;
  462. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  463. yych = *YYCURSOR;
  464. if (yych <= 'b') {
  465. if (yych <= '7') {
  466. if (yych <= '&') {
  467. if (yych == '"') goto yy112;
  468. goto yy114;
  469. } else {
  470. if (yych <= '\'') goto yy112;
  471. if (yych <= '/') goto yy114;
  472. goto yy119;
  473. }
  474. } else {
  475. if (yych <= '[') {
  476. if (yych == '?') goto yy112;
  477. goto yy114;
  478. } else {
  479. if (yych <= '\\') goto yy112;
  480. if (yych <= '`') goto yy114;
  481. goto yy112;
  482. }
  483. }
  484. } else {
  485. if (yych <= 'r') {
  486. if (yych <= 'm') {
  487. if (yych == 'f') goto yy112;
  488. goto yy114;
  489. } else {
  490. if (yych <= 'n') goto yy112;
  491. if (yych <= 'q') goto yy114;
  492. goto yy112;
  493. }
  494. } else {
  495. if (yych <= 'u') {
  496. if (yych == 't') goto yy112;
  497. goto yy114;
  498. } else {
  499. if (yych <= 'v') goto yy112;
  500. if (yych == 'x') goto yy118;
  501. goto yy114;
  502. }
  503. }
  504. }
  505. yy116:
  506. ++YYCURSOR;
  507. { RET(TOKEN_STRING_LITERAL); }
  508. yy118:
  509. ++YYCURSOR;
  510. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  511. yych = *YYCURSOR;
  512. if (yych <= '@') {
  513. if (yych <= '/') goto yy114;
  514. if (yych <= '9') goto yy121;
  515. goto yy114;
  516. } else {
  517. if (yych <= 'F') goto yy121;
  518. if (yych <= '`') goto yy114;
  519. if (yych <= 'f') goto yy121;
  520. goto yy114;
  521. }
  522. yy119:
  523. ++YYCURSOR;
  524. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  525. yych = *YYCURSOR;
  526. if (yych <= '!') {
  527. if (yych <= '\n') {
  528. if (yych <= '\t') goto yy112;
  529. goto yy114;
  530. } else {
  531. if (yych == '\r') goto yy114;
  532. goto yy112;
  533. }
  534. } else {
  535. if (yych <= '7') {
  536. if (yych <= '"') goto yy116;
  537. if (yych <= '/') goto yy112;
  538. goto yy119;
  539. } else {
  540. if (yych == '\\') goto yy115;
  541. goto yy112;
  542. }
  543. }
  544. yy121:
  545. ++YYCURSOR;
  546. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  547. yych = *YYCURSOR;
  548. if (yych <= '/') {
  549. if (yych <= '\f') {
  550. if (yych == '\n') goto yy114;
  551. goto yy112;
  552. } else {
  553. if (yych <= '\r') goto yy114;
  554. if (yych == '"') goto yy116;
  555. goto yy112;
  556. }
  557. } else {
  558. if (yych <= '[') {
  559. if (yych <= '9') goto yy121;
  560. if (yych <= '@') goto yy112;
  561. if (yych <= 'F') goto yy121;
  562. goto yy112;
  563. } else {
  564. if (yych <= '\\') goto yy115;
  565. if (yych <= '`') goto yy112;
  566. if (yych <= 'f') goto yy121;
  567. goto yy112;
  568. }
  569. }
  570. yy123:
  571. yyaccept = 2;
  572. YYMARKER = ++YYCURSOR;
  573. if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  574. yych = *YYCURSOR;
  575. if (yych <= 'G') {
  576. if (yych <= 'D') {
  577. if (yych <= '/') goto yy125;
  578. if (yych <= '9') goto yy123;
  579. } else {
  580. if (yych <= 'E') goto yy126;
  581. if (yych <= 'F') goto yy127;
  582. }
  583. } else {
  584. if (yych <= 'e') {
  585. if (yych <= 'H') goto yy127;
  586. if (yych >= 'e') goto yy126;
  587. } else {
  588. if (yych == 'g') goto yy125;
  589. if (yych <= 'h') goto yy127;
  590. }
  591. }
  592. yy125:
  593. { RET(TOKEN_FLOAT_LITERAL); }
  594. yy126:
  595. yych = *++YYCURSOR;
  596. if (yych <= ',') {
  597. if (yych == '+') goto yy128;
  598. goto yy114;
  599. } else {
  600. if (yych <= '-') goto yy128;
  601. if (yych <= '/') goto yy114;
  602. if (yych <= '9') goto yy129;
  603. goto yy114;
  604. }
  605. yy127:
  606. yych = *++YYCURSOR;
  607. goto yy125;
  608. yy128:
  609. yych = *++YYCURSOR;
  610. if (yych <= '/') goto yy114;
  611. if (yych >= ':') goto yy114;
  612. yy129:
  613. ++YYCURSOR;
  614. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  615. yych = *YYCURSOR;
  616. if (yych <= 'G') {
  617. if (yych <= '9') {
  618. if (yych <= '/') goto yy125;
  619. goto yy129;
  620. } else {
  621. if (yych == 'F') goto yy127;
  622. goto yy125;
  623. }
  624. } else {
  625. if (yych <= 'f') {
  626. if (yych <= 'H') goto yy127;
  627. if (yych <= 'e') goto yy125;
  628. goto yy127;
  629. } else {
  630. if (yych == 'h') goto yy127;
  631. goto yy125;
  632. }
  633. }
  634. yy131:
  635. ++YYCURSOR;
  636. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  637. yych = *YYCURSOR;
  638. yy132:
  639. if (yych <= '\r') {
  640. if (yych == '\n') goto yy114;
  641. if (yych <= '\f') goto yy131;
  642. goto yy114;
  643. } else {
  644. if (yych <= '\'') {
  645. if (yych <= '&') goto yy131;
  646. goto yy134;
  647. } else {
  648. if (yych != '\\') goto yy131;
  649. }
  650. }
  651. yy133:
  652. ++YYCURSOR;
  653. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  654. yych = *YYCURSOR;
  655. if (yych <= 'b') {
  656. if (yych <= '7') {
  657. if (yych <= '&') {
  658. if (yych == '"') goto yy131;
  659. goto yy114;
  660. } else {
  661. if (yych <= '\'') goto yy131;
  662. if (yych <= '/') goto yy114;
  663. goto yy136;
  664. }
  665. } else {
  666. if (yych <= '[') {
  667. if (yych == '?') goto yy131;
  668. goto yy114;
  669. } else {
  670. if (yych <= '\\') goto yy131;
  671. if (yych <= '`') goto yy114;
  672. goto yy131;
  673. }
  674. }
  675. } else {
  676. if (yych <= 'r') {
  677. if (yych <= 'm') {
  678. if (yych == 'f') goto yy131;
  679. goto yy114;
  680. } else {
  681. if (yych <= 'n') goto yy131;
  682. if (yych <= 'q') goto yy114;
  683. goto yy131;
  684. }
  685. } else {
  686. if (yych <= 'u') {
  687. if (yych == 't') goto yy131;
  688. goto yy114;
  689. } else {
  690. if (yych <= 'v') goto yy131;
  691. if (yych == 'x') goto yy135;
  692. goto yy114;
  693. }
  694. }
  695. }
  696. yy134:
  697. yych = *++YYCURSOR;
  698. goto yy9;
  699. yy135:
  700. ++YYCURSOR;
  701. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  702. yych = *YYCURSOR;
  703. if (yych <= '@') {
  704. if (yych <= '/') goto yy114;
  705. if (yych <= '9') goto yy138;
  706. goto yy114;
  707. } else {
  708. if (yych <= 'F') goto yy138;
  709. if (yych <= '`') goto yy114;
  710. if (yych <= 'f') goto yy138;
  711. goto yy114;
  712. }
  713. yy136:
  714. ++YYCURSOR;
  715. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  716. yych = *YYCURSOR;
  717. if (yych <= '&') {
  718. if (yych <= '\n') {
  719. if (yych <= '\t') goto yy131;
  720. goto yy114;
  721. } else {
  722. if (yych == '\r') goto yy114;
  723. goto yy131;
  724. }
  725. } else {
  726. if (yych <= '7') {
  727. if (yych <= '\'') goto yy134;
  728. if (yych <= '/') goto yy131;
  729. goto yy136;
  730. } else {
  731. if (yych == '\\') goto yy133;
  732. goto yy131;
  733. }
  734. }
  735. yy138:
  736. ++YYCURSOR;
  737. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  738. yych = *YYCURSOR;
  739. if (yych <= '/') {
  740. if (yych <= '\f') {
  741. if (yych == '\n') goto yy114;
  742. goto yy131;
  743. } else {
  744. if (yych <= '\r') goto yy114;
  745. if (yych == '\'') goto yy134;
  746. goto yy131;
  747. }
  748. } else {
  749. if (yych <= '[') {
  750. if (yych <= '9') goto yy138;
  751. if (yych <= '@') goto yy131;
  752. if (yych <= 'F') goto yy138;
  753. goto yy131;
  754. } else {
  755. if (yych <= '\\') goto yy133;
  756. if (yych <= '`') goto yy131;
  757. if (yych <= 'f') goto yy138;
  758. goto yy131;
  759. }
  760. }
  761. yy140:
  762. yyaccept = 2;
  763. yych = *(YYMARKER = ++YYCURSOR);
  764. if (yych == 'E') goto yy151;
  765. if (yych == 'e') goto yy151;
  766. goto yy150;
  767. yy141:
  768. yyaccept = 1;
  769. YYMARKER = ++YYCURSOR;
  770. if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  771. yych = *YYCURSOR;
  772. yy142:
  773. if (yych <= 'L') {
  774. if (yych <= '9') {
  775. if (yych == '.') goto yy140;
  776. if (yych <= '/') goto yy9;
  777. goto yy141;
  778. } else {
  779. if (yych == 'E') goto yy143;
  780. if (yych <= 'K') goto yy9;
  781. goto yy144;
  782. }
  783. } else {
  784. if (yych <= 'e') {
  785. if (yych == 'U') goto yy144;
  786. if (yych <= 'd') goto yy9;
  787. } else {
  788. if (yych <= 'l') {
  789. if (yych <= 'k') goto yy9;
  790. goto yy144;
  791. } else {
  792. if (yych == 'u') goto yy144;
  793. goto yy9;
  794. }
  795. }
  796. }
  797. yy143:
  798. yych = *++YYCURSOR;
  799. if (yych <= ',') {
  800. if (yych == '+') goto yy146;
  801. goto yy114;
  802. } else {
  803. if (yych <= '-') goto yy146;
  804. if (yych <= '/') goto yy114;
  805. if (yych <= '9') goto yy147;
  806. goto yy114;
  807. }
  808. yy144:
  809. ++YYCURSOR;
  810. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  811. yych = *YYCURSOR;
  812. if (yych <= 'U') {
  813. if (yych == 'L') goto yy144;
  814. if (yych <= 'T') goto yy9;
  815. goto yy144;
  816. } else {
  817. if (yych <= 'l') {
  818. if (yych <= 'k') goto yy9;
  819. goto yy144;
  820. } else {
  821. if (yych == 'u') goto yy144;
  822. goto yy9;
  823. }
  824. }
  825. yy146:
  826. yych = *++YYCURSOR;
  827. if (yych <= '/') goto yy114;
  828. if (yych >= ':') goto yy114;
  829. yy147:
  830. ++YYCURSOR;
  831. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  832. yych = *YYCURSOR;
  833. if (yych <= 'G') {
  834. if (yych <= '9') {
  835. if (yych <= '/') goto yy125;
  836. goto yy147;
  837. } else {
  838. if (yych == 'F') goto yy127;
  839. goto yy125;
  840. }
  841. } else {
  842. if (yych <= 'f') {
  843. if (yych <= 'H') goto yy127;
  844. if (yych <= 'e') goto yy125;
  845. goto yy127;
  846. } else {
  847. if (yych == 'h') goto yy127;
  848. goto yy125;
  849. }
  850. }
  851. yy149:
  852. yyaccept = 2;
  853. YYMARKER = ++YYCURSOR;
  854. if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  855. yych = *YYCURSOR;
  856. yy150:
  857. if (yych <= 'G') {
  858. if (yych <= 'D') {
  859. if (yych <= '/') goto yy125;
  860. if (yych <= '9') goto yy149;
  861. goto yy125;
  862. } else {
  863. if (yych <= 'E') goto yy155;
  864. if (yych <= 'F') goto yy127;
  865. goto yy125;
  866. }
  867. } else {
  868. if (yych <= 'e') {
  869. if (yych <= 'H') goto yy127;
  870. if (yych <= 'd') goto yy125;
  871. goto yy155;
  872. } else {
  873. if (yych == 'g') goto yy125;
  874. if (yych <= 'h') goto yy127;
  875. goto yy125;
  876. }
  877. }
  878. yy151:
  879. yych = *++YYCURSOR;
  880. if (yych <= ',') {
  881. if (yych != '+') goto yy114;
  882. } else {
  883. if (yych <= '-') goto yy152;
  884. if (yych <= '/') goto yy114;
  885. if (yych <= '9') goto yy153;
  886. goto yy114;
  887. }
  888. yy152:
  889. yych = *++YYCURSOR;
  890. if (yych <= '/') goto yy114;
  891. if (yych >= ':') goto yy114;
  892. yy153:
  893. ++YYCURSOR;
  894. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  895. yych = *YYCURSOR;
  896. if (yych <= 'G') {
  897. if (yych <= '9') {
  898. if (yych <= '/') goto yy125;
  899. goto yy153;
  900. } else {
  901. if (yych == 'F') goto yy127;
  902. goto yy125;
  903. }
  904. } else {
  905. if (yych <= 'f') {
  906. if (yych <= 'H') goto yy127;
  907. if (yych <= 'e') goto yy125;
  908. goto yy127;
  909. } else {
  910. if (yych == 'h') goto yy127;
  911. goto yy125;
  912. }
  913. }
  914. yy155:
  915. yych = *++YYCURSOR;
  916. if (yych <= ',') {
  917. if (yych != '+') goto yy114;
  918. } else {
  919. if (yych <= '-') goto yy156;
  920. if (yych <= '/') goto yy114;
  921. if (yych <= '9') goto yy157;
  922. goto yy114;
  923. }
  924. yy156:
  925. yych = *++YYCURSOR;
  926. if (yych <= '/') goto yy114;
  927. if (yych >= ':') goto yy114;
  928. yy157:
  929. ++YYCURSOR;
  930. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  931. yych = *YYCURSOR;
  932. if (yych <= 'G') {
  933. if (yych <= '9') {
  934. if (yych <= '/') goto yy125;
  935. goto yy157;
  936. } else {
  937. if (yych == 'F') goto yy127;
  938. goto yy125;
  939. }
  940. } else {
  941. if (yych <= 'f') {
  942. if (yych <= 'H') goto yy127;
  943. if (yych <= 'e') goto yy125;
  944. goto yy127;
  945. } else {
  946. if (yych == 'h') goto yy127;
  947. goto yy125;
  948. }
  949. }
  950. yy159:
  951. yyaccept = 1;
  952. YYMARKER = ++YYCURSOR;
  953. if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  954. yych = *YYCURSOR;
  955. yy160:
  956. if (yych <= 'L') {
  957. if (yych <= '9') {
  958. if (yych == '.') goto yy140;
  959. if (yych <= '/') goto yy9;
  960. goto yy159;
  961. } else {
  962. if (yych == 'E') goto yy143;
  963. if (yych <= 'K') goto yy9;
  964. goto yy166;
  965. }
  966. } else {
  967. if (yych <= 'e') {
  968. if (yych == 'U') goto yy166;
  969. if (yych <= 'd') goto yy9;
  970. goto yy143;
  971. } else {
  972. if (yych <= 'l') {
  973. if (yych <= 'k') goto yy9;
  974. goto yy166;
  975. } else {
  976. if (yych == 'u') goto yy166;
  977. goto yy9;
  978. }
  979. }
  980. }
  981. yy161:
  982. yych = *++YYCURSOR;
  983. if (yych <= '@') {
  984. if (yych <= '/') goto yy114;
  985. if (yych >= ':') goto yy114;
  986. } else {
  987. if (yych <= 'F') goto yy162;
  988. if (yych <= '`') goto yy114;
  989. if (yych >= 'g') goto yy114;
  990. }
  991. yy162:
  992. ++YYCURSOR;
  993. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  994. yych = *YYCURSOR;
  995. if (yych <= 'T') {
  996. if (yych <= '@') {
  997. if (yych <= '/') goto yy9;
  998. if (yych <= '9') goto yy162;
  999. goto yy9;
  1000. } else {
  1001. if (yych <= 'F') goto yy162;
  1002. if (yych != 'L') goto yy9;
  1003. }
  1004. } else {
  1005. if (yych <= 'k') {
  1006. if (yych <= 'U') goto yy164;
  1007. if (yych <= '`') goto yy9;
  1008. if (yych <= 'f') goto yy162;
  1009. goto yy9;
  1010. } else {
  1011. if (yych <= 'l') goto yy164;
  1012. if (yych != 'u') goto yy9;
  1013. }
  1014. }
  1015. yy164:
  1016. ++YYCURSOR;
  1017. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  1018. yych = *YYCURSOR;
  1019. if (yych <= 'U') {
  1020. if (yych == 'L') goto yy164;
  1021. if (yych <= 'T') goto yy9;
  1022. goto yy164;
  1023. } else {
  1024. if (yych <= 'l') {
  1025. if (yych <= 'k') goto yy9;
  1026. goto yy164;
  1027. } else {
  1028. if (yych == 'u') goto yy164;
  1029. goto yy9;
  1030. }
  1031. }
  1032. yy166:
  1033. ++YYCURSOR;
  1034. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  1035. yych = *YYCURSOR;
  1036. if (yych <= 'U') {
  1037. if (yych == 'L') goto yy166;
  1038. if (yych <= 'T') goto yy9;
  1039. goto yy166;
  1040. } else {
  1041. if (yych <= 'l') {
  1042. if (yych <= 'k') goto yy9;
  1043. goto yy166;
  1044. } else {
  1045. if (yych == 'u') goto yy166;
  1046. goto yy9;
  1047. }
  1048. }
  1049. yy168:
  1050. ++YYCURSOR;
  1051. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  1052. yych = *YYCURSOR;
  1053. yy169:
  1054. if (yych <= 'Z') {
  1055. if (yych <= '/') goto yy7;
  1056. if (yych <= '9') goto yy168;
  1057. if (yych <= '@') goto yy7;
  1058. goto yy168;
  1059. } else {
  1060. if (yych <= '_') {
  1061. if (yych <= '^') goto yy7;
  1062. goto yy168;
  1063. } else {
  1064. if (yych <= '`') goto yy7;
  1065. if (yych <= 'z') goto yy168;
  1066. goto yy7;
  1067. }
  1068. }
  1069. yy170:
  1070. ++YYCURSOR;
  1071. { RET(TOKEN_DIVASSIGN); }
  1072. yy172:
  1073. ++YYCURSOR;
  1074. { goto singlelinecomment; }
  1075. yy174:
  1076. ++YYCURSOR;
  1077. { goto multilinecomment; }
  1078. yy176:
  1079. ++YYCURSOR;
  1080. if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  1081. yych = *YYCURSOR;
  1082. yy177:
  1083. if (yych <= '\f') {
  1084. if (yych <= 0x08) goto yy114;
  1085. if (yych != '\n') goto yy176;
  1086. } else {
  1087. if (yych <= '\r') goto yy180;
  1088. if (yych == ' ') goto yy176;
  1089. goto yy114;
  1090. }
  1091. yy178:
  1092. ++YYCURSOR;
  1093. yy179:
  1094. { s->line++; goto scanner_loop; }
  1095. yy180:
  1096. ++YYCURSOR;
  1097. if ((yych = *YYCURSOR) == '\n') goto yy178;
  1098. goto yy179;
  1099. }
  1100. multilinecomment:
  1101. if (YYLIMIT == YYCURSOR) YYFILL(1);
  1102. matchptr = cursor;
  1103. // The "*\/" is just to avoid screwing up text editor syntax highlighting.
  1104. {
  1105. YYCTYPE yych;
  1106. if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  1107. yych = *YYCURSOR;
  1108. if (yych <= '\f') {
  1109. if (yych <= 0x00) goto yy188;
  1110. if (yych == '\n') goto yy185;
  1111. goto yy190;
  1112. } else {
  1113. if (yych <= '\r') goto yy187;
  1114. if (yych != '*') goto yy190;
  1115. }
  1116. ++YYCURSOR;
  1117. if ((yych = *YYCURSOR) == '/') goto yy192;
  1118. yy184:
  1119. { goto multilinecomment; }
  1120. yy185:
  1121. ++YYCURSOR;
  1122. yy186:
  1123. {
  1124. s->line++;
  1125. token = matchptr;
  1126. saw_newline = 1;
  1127. goto multilinecomment;
  1128. }
  1129. yy187:
  1130. yych = *++YYCURSOR;
  1131. if (yych == '\n') goto yy191;
  1132. goto yy186;
  1133. yy188:
  1134. ++YYCURSOR;
  1135. {
  1136. if (eoi)
  1137. RET(TOKEN_INCOMPLETE_COMMENT);
  1138. goto multilinecomment;
  1139. }
  1140. yy190:
  1141. yych = *++YYCURSOR;
  1142. goto yy184;
  1143. yy191:
  1144. yych = *++YYCURSOR;
  1145. goto yy186;
  1146. yy192:
  1147. ++YYCURSOR;
  1148. {
  1149. if (saw_newline)
  1150. RET('\n');
  1151. else if (s->report_whitespace)
  1152. RET(' ');
  1153. goto scanner_loop;
  1154. }
  1155. }
  1156. singlelinecomment:
  1157. if (YYLIMIT == YYCURSOR) YYFILL(1);
  1158. matchptr = cursor;
  1159. {
  1160. YYCTYPE yych;
  1161. if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  1162. yych = *YYCURSOR;
  1163. if (yych <= '\n') {
  1164. if (yych <= 0x00) goto yy199;
  1165. if (yych <= '\t') goto yy201;
  1166. } else {
  1167. if (yych == '\r') goto yy198;
  1168. goto yy201;
  1169. }
  1170. ++YYCURSOR;
  1171. yy197:
  1172. { s->line++; token = matchptr; RET('\n'); }
  1173. yy198:
  1174. yych = *++YYCURSOR;
  1175. if (yych == '\n') goto yy203;
  1176. goto yy197;
  1177. yy199:
  1178. ++YYCURSOR;
  1179. { if (eoi) { RET(TOKEN_EOI); } goto singlelinecomment; }
  1180. yy201:
  1181. ++YYCURSOR;
  1182. { goto singlelinecomment; }
  1183. yy203:
  1184. ++YYCURSOR;
  1185. yych = *YYCURSOR;
  1186. goto yy197;
  1187. }
  1188. ppdirective:
  1189. if (YYLIMIT == YYCURSOR) YYFILL(1);
  1190. {
  1191. YYCTYPE yych;
  1192. unsigned int yyaccept = 0;
  1193. if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
  1194. yych = *YYCURSOR;
  1195. if (yych <= '\f') {
  1196. if (yych == '\t') goto yy208;
  1197. if (yych <= '\n') goto yy210;
  1198. goto yy208;
  1199. } else {
  1200. if (yych <= ' ') {
  1201. if (yych <= 0x1F) goto yy210;
  1202. goto yy208;
  1203. } else {
  1204. if (yych != '#') goto yy210;
  1205. }
  1206. }
  1207. yyaccept = 0;
  1208. yych = *(YYMARKER = ++YYCURSOR);
  1209. if (yych <= 'h') {
  1210. if (yych <= 0x1F) {
  1211. if (yych == '\t') goto yy214;
  1212. } else {
  1213. if (yych <= ' ') goto yy214;
  1214. if (yych <= 'c') goto yy207;
  1215. if (yych <= 'e') goto yy214;
  1216. }
  1217. } else {
  1218. if (yych <= 'o') {
  1219. if (yych <= 'i') goto yy214;
  1220. if (yych == 'l') goto yy214;
  1221. } else {
  1222. if (yych <= 'p') goto yy214;
  1223. if (yych == 'u') goto yy214;
  1224. }
  1225. }
  1226. yy207:
  1227. {
  1228. token = cursor = (const uchar *) s->source;
  1229. limit = cursor + s->bytes_left;
  1230. goto scanner_loop;
  1231. }
  1232. yy208:
  1233. ++YYCURSOR;
  1234. yych = *YYCURSOR;
  1235. goto yy212;
  1236. yy209:
  1237. { goto ppdirective; }
  1238. yy210:
  1239. yych = *++YYCURSOR;
  1240. goto yy207;
  1241. yy211:
  1242. ++YYCURSOR;
  1243. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  1244. yych = *YYCURSOR;
  1245. yy212:
  1246. if (yych <= '\n') {
  1247. if (yych == '\t') goto yy211;
  1248. goto yy209;
  1249. } else {
  1250. if (yych <= '\f') goto yy211;
  1251. if (yych == ' ') goto yy211;
  1252. goto yy209;
  1253. }
  1254. yy213:
  1255. ++YYCURSOR;
  1256. if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  1257. yych = *YYCURSOR;
  1258. yy214:
  1259. if (yych <= 'h') {
  1260. if (yych <= ' ') {
  1261. if (yych == '\t') goto yy213;
  1262. if (yych >= ' ') goto yy213;
  1263. } else {
  1264. if (yych <= 'c') goto yy215;
  1265. if (yych <= 'd') goto yy220;
  1266. if (yych <= 'e') goto yy217;
  1267. }
  1268. } else {
  1269. if (yych <= 'o') {
  1270. if (yych <= 'i') goto yy218;
  1271. if (yych == 'l') goto yy221;
  1272. } else {
  1273. if (yych <= 'p') goto yy216;
  1274. if (yych == 'u') goto yy219;
  1275. }
  1276. }
  1277. yy215:
  1278. YYCURSOR = YYMARKER;
  1279. if (yyaccept <= 0) {
  1280. goto yy207;
  1281. } else {
  1282. goto yy239;
  1283. }
  1284. yy216:
  1285. yych = *++YYCURSOR;
  1286. if (yych == 'r') goto yy272;
  1287. goto yy215;
  1288. yy217:
  1289. yych = *++YYCURSOR;
  1290. if (yych <= 'm') {
  1291. if (yych == 'l') goto yy255;
  1292. goto yy215;
  1293. } else {
  1294. if (yych <= 'n') goto yy256;
  1295. if (yych == 'r') goto yy257;
  1296. goto yy215;
  1297. }
  1298. yy218:
  1299. yych = *++YYCURSOR;
  1300. if (yych == 'f') goto yy238;
  1301. if (yych == 'n') goto yy237;
  1302. goto yy215;
  1303. yy219:
  1304. yych = *++YYCURSOR;
  1305. if (yych == 'n') goto yy232;
  1306. goto yy215;
  1307. yy220:
  1308. yych = *++YYCURSOR;
  1309. if (yych == 'e') goto yy226;
  1310. goto yy215;
  1311. yy221:
  1312. yych = *++YYCURSOR;
  1313. if (yych != 'i') goto yy215;
  1314. yych = *++YYCURSOR;
  1315. if (yych != 'n') goto yy215;
  1316. yych = *++YYCURSOR;
  1317. if (yych != 'e') goto yy215;
  1318. ++YYCURSOR;
  1319. { RET(TOKEN_PP_LINE); }
  1320. yy226:
  1321. yych = *++YYCURSOR;
  1322. if (yych != 'f') goto yy215;
  1323. yych = *++YYCURSOR;
  1324. if (yych != 'i') goto yy215;
  1325. yych = *++YYCURSOR;
  1326. if (yych != 'n') goto yy215;
  1327. yych = *++YYCURSOR;
  1328. if (yych != 'e') goto yy215;
  1329. ++YYCURSOR;
  1330. { RET(TOKEN_PP_DEFINE); }
  1331. yy232:
  1332. yych = *++YYCURSOR;
  1333. if (yych != 'd') goto yy215;
  1334. yych = *++YYCURSOR;
  1335. if (yych != 'e') goto yy215;
  1336. yych = *++YYCURSOR;
  1337. if (yych != 'f') goto yy215;
  1338. ++YYCURSOR;
  1339. { RET(TOKEN_PP_UNDEF); }
  1340. yy237:
  1341. yych = *++YYCURSOR;
  1342. if (yych == 'c') goto yy249;
  1343. goto yy215;
  1344. yy238:
  1345. yyaccept = 1;
  1346. yych = *(YYMARKER = ++YYCURSOR);
  1347. if (yych == 'd') goto yy241;
  1348. if (yych == 'n') goto yy240;
  1349. yy239:
  1350. { RET(TOKEN_PP_IF); }
  1351. yy240:
  1352. yych = *++YYCURSOR;
  1353. if (yych == 'd') goto yy245;
  1354. goto yy215;
  1355. yy241:
  1356. yych = *++YYCURSOR;
  1357. if (yych != 'e') goto yy215;
  1358. yych = *++YYCURSOR;
  1359. if (yych != 'f') goto yy215;
  1360. ++YYCURSOR;
  1361. { RET(TOKEN_PP_IFDEF); }
  1362. yy245:
  1363. yych = *++YYCURSOR;
  1364. if (yych != 'e') goto yy215;
  1365. yych = *++YYCURSOR;
  1366. if (yych != 'f') goto yy215;
  1367. ++YYCURSOR;
  1368. { RET(TOKEN_PP_IFNDEF); }
  1369. yy249:
  1370. yych = *++YYCURSOR;
  1371. if (yych != 'l') goto yy215;
  1372. yych = *++YYCURSOR;
  1373. if (yych != 'u') goto yy215;
  1374. yych = *++YYCURSOR;
  1375. if (yych != 'd') goto yy215;
  1376. yych = *++YYCURSOR;
  1377. if (yych != 'e') goto yy215;
  1378. ++YYCURSOR;
  1379. { RET(TOKEN_PP_INCLUDE); }
  1380. yy255:
  1381. yych = *++YYCURSOR;
  1382. if (yych == 'i') goto yy266;
  1383. if (yych == 's') goto yy267;
  1384. goto yy215;
  1385. yy256:
  1386. yych = *++YYCURSOR;
  1387. if (yych == 'd') goto yy262;
  1388. goto yy215;
  1389. yy257:
  1390. yych = *++YYCURSOR;
  1391. if (yych != 'r') goto yy215;
  1392. yych = *++YYCURSOR;
  1393. if (yych != 'o') goto yy215;
  1394. yych = *++YYCURSOR;
  1395. if (yych != 'r') goto yy215;
  1396. ++YYCURSOR;
  1397. { RET(TOKEN_PP_ERROR); }
  1398. yy262:
  1399. yych = *++YYCURSOR;
  1400. if (yych != 'i') goto yy215;
  1401. yych = *++YYCURSOR;
  1402. if (yych != 'f') goto yy215;
  1403. ++YYCURSOR;
  1404. { RET(TOKEN_PP_ENDIF); }
  1405. yy266:
  1406. yych = *++YYCURSOR;
  1407. if (yych == 'f') goto yy270;
  1408. goto yy215;
  1409. yy267:
  1410. yych = *++YYCURSOR;
  1411. if (yych != 'e') goto yy215;
  1412. ++YYCURSOR;
  1413. { RET(TOKEN_PP_ELSE); }
  1414. yy270:
  1415. ++YYCURSOR;
  1416. { RET(TOKEN_PP_ELIF); }
  1417. yy272:
  1418. yych = *++YYCURSOR;
  1419. if (yych != 'a') goto yy215;
  1420. yych = *++YYCURSOR;
  1421. if (yych != 'g') goto yy215;
  1422. yych = *++YYCURSOR;
  1423. if (yych != 'm') goto yy215;
  1424. yych = *++YYCURSOR;
  1425. if (yych != 'a') goto yy215;
  1426. ++YYCURSOR;
  1427. { RET(TOKEN_PP_PRAGMA); }
  1428. }
  1429. bad_chars:
  1430. if (YYLIMIT == YYCURSOR) YYFILL(1);
  1431. {
  1432. YYCTYPE yych;
  1433. if (YYLIMIT <= YYCURSOR) YYFILL(1);
  1434. yych = *YYCURSOR;
  1435. if (yych <= '#') {
  1436. if (yych <= '\r') {
  1437. if (yych <= 0x00) goto yy282;
  1438. if (yych <= 0x08) goto yy284;
  1439. } else {
  1440. if (yych <= 0x1F) goto yy284;
  1441. if (yych == '"') goto yy284;
  1442. }
  1443. } else {
  1444. if (yych <= '@') {
  1445. if (yych <= '$') goto yy284;
  1446. if (yych >= '@') goto yy284;
  1447. } else {
  1448. if (yych == '`') goto yy284;
  1449. if (yych >= 0x7F) goto yy284;
  1450. }
  1451. }
  1452. ++YYCURSOR;
  1453. { cursor--; RET(TOKEN_BAD_CHARS); }
  1454. yy282:
  1455. ++YYCURSOR;
  1456. {
  1457. if (eoi)
  1458. {
  1459. assert( !((token >= sentinel) &&
  1460. (token < sentinel+YYMAXFILL)) );
  1461. eoi = 0;
  1462. cursor = (uchar *) s->source_base + s->orig_length;
  1463. RET(TOKEN_BAD_CHARS); // next call will be EOI.
  1464. }
  1465. goto bad_chars;
  1466. }
  1467. yy284:
  1468. ++YYCURSOR;
  1469. { goto bad_chars; }
  1470. }
  1471. assert(0 && "Shouldn't hit this code");
  1472. RET(TOKEN_UNKNOWN);
  1473. } // preprocessor_lexer
  1474. // end of mojoshader_lexer_preprocessor.re (or .c) ...