mojoshader_lexer.c
changeset 653 c1eb8cca56f8
parent 649 527cfe6f2d45
child 680 b8db6bedc1bd
--- a/mojoshader_lexer.c	Wed Feb 18 14:12:06 2009 -0500
+++ b/mojoshader_lexer.c	Wed Feb 18 14:43:11 2009 -0500
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.12.1 */
+/* Generated by re2c 0.13.5 */
 /**
  * MojoShader; generate shader programs from bytecode of compiled
  *  Direct3D shaders.
@@ -25,18 +25,37 @@
 
 typedef unsigned char uchar;
 
-#define RET(t) do { update_state(s, cursor, token); return t; } while (0)
+#define YYMAXFILL 8
+#define RET(t) do { return update_state(s, eoi, cursor, token, t); } while (0)
 #define YYCTYPE uchar
 #define YYCURSOR cursor
 #define YYLIMIT limit
 #define YYMARKER s->lexer_marker
-#define YYFILL(n) { if ((n) == 1) { RET(TOKEN_EOI); } }
+#define YYFILL(n) { if ((n) == 1) { cursor = sentinel; limit = cursor + YYMAXFILL; eoi = 1; } }
 
-static void update_state(IncludeState *s, const uchar *cur, const uchar *tok)
+static uchar sentinel[YYMAXFILL];
+
+static Token update_state(IncludeState *s, int eoi, const uchar *cur,
+                          const uchar *tok, const Token val)
 {
-    s->bytes_left -= (unsigned int) (cur - ((const uchar *) s->source));
-    s->source = (const char *) cur;
-    s->token = (const char *) tok;
+    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)
@@ -45,14 +64,13 @@
     const uchar *token;
     const uchar *matchptr;
     const uchar *limit = cursor + s->bytes_left;
+    int eoi = 0;
     int saw_newline = 0;
 
 scanner_loop:
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
     token = cursor;
 
-    if (YYLIMIT == YYCURSOR)
-        RET(TOKEN_EOI);
-
 
 
 
@@ -60,30 +78,31 @@
 	YYCTYPE yych;
 	unsigned int yyaccept = 0;
 
-	if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
+	if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
 	yych = *YYCURSOR;
-	switch(yych) {
-	case 0x09:
-	case 0x0B:
-	case 0x0C:
-	case ' ':	goto yy61;
-	case 0x0A:	goto yy63;
-	case 0x0D:	goto yy65;
-	case '!':	goto yy34;
-	case '"':	goto yy13;
-	case '#':	goto yy36;
-	case '%':	goto yy24;
-	case '&':	goto yy28;
-	case '\'':	goto yy9;
-	case '(':	goto yy37;
-	case ')':	goto yy39;
-	case '*':	goto yy22;
-	case '+':	goto yy18;
-	case ',':	goto yy45;
-	case '-':	goto yy20;
-	case '.':	goto yy11;
-	case '/':	goto yy2;
-	case '0':	goto yy6;
+	switch (yych) {
+	case 0x00:	goto yy60;
+	case '\t':
+	case '\v':
+	case '\f':
+	case ' ':	goto yy62;
+	case '\n':	goto yy64;
+	case '\r':	goto yy66;
+	case '!':	goto yy35;
+	case '"':	goto yy14;
+	case '#':	goto yy37;
+	case '%':	goto yy25;
+	case '&':	goto yy29;
+	case '\'':	goto yy11;
+	case '(':	goto yy38;
+	case ')':	goto yy40;
+	case '*':	goto yy23;
+	case '+':	goto yy19;
+	case ',':	goto yy46;
+	case '-':	goto yy21;
+	case '.':	goto yy12;
+	case '/':	goto yy4;
+	case '0':	goto yy8;
 	case '1':
 	case '2':
 	case '3':
@@ -92,13 +111,13 @@
 	case '6':
 	case '7':
 	case '8':
-	case '9':	goto yy8;
-	case ':':	goto yy49;
-	case ';':	goto yy51;
-	case '<':	goto yy16;
-	case '=':	goto yy32;
-	case '>':	goto yy14;
-	case '?':	goto yy57;
+	case '9':	goto yy10;
+	case ':':	goto yy50;
+	case ';':	goto yy52;
+	case '<':	goto yy17;
+	case '=':	goto yy33;
+	case '>':	goto yy15;
+	case '?':	goto yy58;
 	case 'A':
 	case 'B':
 	case 'C':
@@ -151,1201 +170,1255 @@
 	case 'w':
 	case 'x':
 	case 'y':
-	case 'z':	goto yy4;
-	case '[':	goto yy41;
-	case '\\':	goto yy59;
-	case ']':	goto yy43;
-	case '^':	goto yy26;
-	case '{':	goto yy53;
-	case '|':	goto yy30;
-	case '}':	goto yy55;
-	case '~':	goto yy47;
-	default:	goto yy66;
+	case 'z':	goto yy6;
+	case '[':	goto yy42;
+	case '\\':	goto yy2;
+	case ']':	goto yy44;
+	case '^':	goto yy27;
+	case '{':	goto yy54;
+	case '|':	goto yy31;
+	case '}':	goto yy56;
+	case '~':	goto yy48;
+	default:	goto yy67;
 	}
 yy2:
-	++YYCURSOR;
-	if((yych = *YYCURSOR) <= '.') {
-		if(yych == '*') goto yy229;
-	} else {
-		if(yych <= '/') goto yy227;
-		if(yych == '=') goto yy225;
-	}
-	{ RET('/'); }
-yy4:
-	++YYCURSOR;
-	yych = *YYCURSOR;
-	goto yy224;
-yy5:
-	{ RET(TOKEN_IDENTIFIER); }
-yy6:
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if(yych <= 'X') {
-		if(yych <= 'T') {
-			if(yych == 'L') goto yy199;
-			goto yy215;
+	if (yych <= 0x08) goto yy3;
+	if (yych <= '\r') goto yy233;
+	if (yych == ' ') goto yy233;
+yy3:
+	{ goto bad_chars; }
+yy4:
+	++YYCURSOR;
+	if ((yych = *YYCURSOR) <= '.') {
+		if (yych == '*') goto yy230;
+	} else {
+		if (yych <= '/') goto yy228;
+		if (yych == '=') goto yy226;
+	}
+	{ RET('/'); }
+yy6:
+	++YYCURSOR;
+	yych = *YYCURSOR;
+	goto yy225;
+yy7:
+	{ RET(TOKEN_IDENTIFIER); }
+yy8:
+	yyaccept = 1;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if (yych <= 'X') {
+		if (yych <= 'T') {
+			if (yych == 'L') goto yy200;
+			goto yy216;
 		} else {
-			if(yych <= 'U') goto yy199;
-			if(yych <= 'W') goto yy215;
-			goto yy216;
+			if (yych <= 'U') goto yy200;
+			if (yych <= 'W') goto yy216;
+			goto yy217;
 		}
 	} else {
-		if(yych <= 't') {
-			if(yych == 'l') goto yy199;
-			goto yy215;
+		if (yych <= 't') {
+			if (yych == 'l') goto yy200;
+			goto yy216;
 		} else {
-			if(yych <= 'u') goto yy199;
-			if(yych == 'x') goto yy216;
-			goto yy215;
+			if (yych <= 'u') goto yy200;
+			if (yych == 'x') goto yy217;
+			goto yy216;
 		}
 	}
-yy7:
+yy9:
 	{ RET(TOKEN_INT_LITERAL); }
-yy8:
-	yyaccept = 0;
-	yych = *(YYMARKER = ++YYCURSOR);
-	goto yy197;
-yy9:
-	yyaccept = 1;
-	yych = *(YYMARKER = ++YYCURSOR);
-	if(yych == 0x0A) goto yy10;
-	if(yych != 0x0D) goto yy187;
 yy10:
-	{ goto bad_chars; }
-yy11:
-	++YYCURSOR;
-	if((yych = *YYCURSOR) <= '/') goto yy12;
-	if(yych <= '9') goto yy178;
-yy12:
-	{ RET('.'); }
-yy13:
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if(yych == 0x0A) goto yy10;
-	if(yych == 0x0D) goto yy10;
-	goto yy169;
-yy14:
+	goto yy198;
+yy11:
+	yyaccept = 0;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if (yych == '\n') goto yy3;
+	if (yych == '\r') goto yy3;
+	goto yy188;
+yy12:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) <= '<') goto yy15;
-	if(yych <= '=') goto yy162;
-	if(yych <= '>') goto yy164;
+	if ((yych = *YYCURSOR) <= '/') goto yy13;
+	if (yych <= '9') goto yy179;
+yy13:
+	{ RET('.'); }
+yy14:
+	yyaccept = 0;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if (yych == '\n') goto yy3;
+	if (yych == '\r') goto yy3;
+	goto yy170;
 yy15:
+	++YYCURSOR;
+	if ((yych = *YYCURSOR) <= '<') goto yy16;
+	if (yych <= '=') goto yy163;
+	if (yych <= '>') goto yy165;
+yy16:
 	{ RET('>'); }
-yy16:
-	++YYCURSOR;
-	if((yych = *YYCURSOR) <= ';') goto yy17;
-	if(yych <= '<') goto yy158;
-	if(yych <= '=') goto yy156;
 yy17:
-	{ RET('<'); }
-yy18:
-	++YYCURSOR;
-	if((yych = *YYCURSOR) == '+') goto yy152;
-	if(yych == '=') goto yy154;
-	{ RET('+'); }
-yy20:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '-') goto yy148;
-	if(yych == '=') goto yy150;
-	{ RET('-'); }
-yy22:
+	if ((yych = *YYCURSOR) <= ';') goto yy18;
+	if (yych <= '<') goto yy159;
+	if (yych <= '=') goto yy157;
+yy18:
+	{ RET('<'); }
+yy19:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy146;
-	{ RET('*'); }
-yy24:
+	if ((yych = *YYCURSOR) == '+') goto yy153;
+	if (yych == '=') goto yy155;
+	{ RET('+'); }
+yy21:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy144;
-	{ RET('%'); }
-yy26:
+	if ((yych = *YYCURSOR) == '-') goto yy149;
+	if (yych == '=') goto yy151;
+	{ RET('-'); }
+yy23:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy142;
-	{ RET('^'); }
-yy28:
+	if ((yych = *YYCURSOR) == '=') goto yy147;
+	{ RET('*'); }
+yy25:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '&') goto yy138;
-	if(yych == '=') goto yy140;
-	{ RET('&'); }
-yy30:
+	if ((yych = *YYCURSOR) == '=') goto yy145;
+	{ RET('%'); }
+yy27:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy136;
-	if(yych == '|') goto yy134;
-	{ RET('|'); }
-yy32:
+	if ((yych = *YYCURSOR) == '=') goto yy143;
+	{ RET('^'); }
+yy29:
+	++YYCURSOR;
+	if ((yych = *YYCURSOR) == '&') goto yy139;
+	if (yych == '=') goto yy141;
+	{ RET('&'); }
+yy31:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy132;
-	{ RET('='); }
-yy34:
+	if ((yych = *YYCURSOR) == '=') goto yy137;
+	if (yych == '|') goto yy135;
+	{ RET('|'); }
+yy33:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy130;
+	if ((yych = *YYCURSOR) == '=') goto yy133;
+	{ RET('='); }
+yy35:
+	++YYCURSOR;
+	if ((yych = *YYCURSOR) == '=') goto yy131;
 	{ RET('!'); }
-yy36:
-	yyaccept = 1;
+yy37:
+	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if(yych <= 'c') {
-		if(yych <= 0x1F) {
-			if(yych == 0x09) goto yy71;
-			goto yy10;
+	if (yych <= 'c') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy72;
+			goto yy3;
 		} else {
-			if(yych <= ' ') goto yy71;
-			if(yych == '#') goto yy78;
-			goto yy10;
+			if (yych <= ' ') goto yy72;
+			if (yych == '#') goto yy79;
+			goto yy3;
 		}
 	} else {
-		if(yych <= 'k') {
-			if(yych <= 'e') goto yy71;
-			if(yych == 'i') goto yy71;
-			goto yy10;
+		if (yych <= 'k') {
+			if (yych <= 'e') goto yy72;
+			if (yych == 'i') goto yy72;
+			goto yy3;
 		} else {
-			if(yych <= 'l') goto yy71;
-			if(yych == 'u') goto yy71;
-			goto yy10;
+			if (yych <= 'l') goto yy72;
+			if (yych == 'u') goto yy72;
+			goto yy3;
 		}
 	}
-yy37:
+yy38:
 	++YYCURSOR;
 	{ RET('('); }
-yy39:
+yy40:
 	++YYCURSOR;
 	{ RET(')'); }
-yy41:
+yy42:
 	++YYCURSOR;
 	{ RET('['); }
-yy43:
+yy44:
 	++YYCURSOR;
 	{ RET(']'); }
-yy45:
+yy46:
 	++YYCURSOR;
 	{ RET(','); }
-yy47:
+yy48:
 	++YYCURSOR;
 	{ RET('~'); }
-yy49:
+yy50:
 	++YYCURSOR;
 	{ RET(':'); }
-yy51:
+yy52:
 	++YYCURSOR;
 	{ RET(';'); }
-yy53:
+yy54:
 	++YYCURSOR;
 	{ RET('{'); }
-yy55:
+yy56:
 	++YYCURSOR;
 	{ RET('}'); }
-yy57:
+yy58:
 	++YYCURSOR;
 	{ RET('?'); }
-yy59:
+yy60:
 	++YYCURSOR;
-	{ RET('\\'); }
-yy61:
+	{ if (eoi) { RET(TOKEN_EOI); } goto bad_chars; }
+yy62:
 	++YYCURSOR;
 	yych = *YYCURSOR;
-	goto yy69;
-yy62:
-	{ goto scanner_loop; }
+	goto yy70;
 yy63:
-	++YYCURSOR;
+	{ if (s->report_whitespace) RET(' '); goto scanner_loop; }
 yy64:
-	{ s->line++; RET('\n'); }
+	++YYCURSOR;
 yy65:
-	yych = *++YYCURSOR;
-	if(yych == 0x0A) goto yy67;
-	goto yy64;
+	{ s->line++; RET('\n'); }
 yy66:
 	yych = *++YYCURSOR;
-	goto yy10;
+	if (yych == '\n') goto yy68;
+	goto yy65;
 yy67:
 	yych = *++YYCURSOR;
-	goto yy64;
+	goto yy3;
 yy68:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
+	yych = *++YYCURSOR;
+	goto yy65;
 yy69:
-	if(yych <= 0x0A) {
-		if(yych == 0x09) goto yy68;
-		goto yy62;
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy70:
+	if (yych <= '\n') {
+		if (yych == '\t') goto yy69;
+		goto yy63;
 	} else {
-		if(yych <= 0x0C) goto yy68;
-		if(yych == ' ') goto yy68;
-		goto yy62;
+		if (yych <= '\f') goto yy69;
+		if (yych == ' ') goto yy69;
+		goto yy63;
 	}
-yy70:
+yy71:
 	++YYCURSOR;
-	if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
 	yych = *YYCURSOR;
-yy71:
-	if(yych <= 'e') {
-		if(yych <= 0x1F) {
-			if(yych == 0x09) goto yy70;
+yy72:
+	if (yych <= 'e') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy71;
 		} else {
-			if(yych <= ' ') goto yy70;
-			if(yych <= 'c') goto yy72;
-			if(yych <= 'd') goto yy76;
-			goto yy73;
+			if (yych <= ' ') goto yy71;
+			if (yych <= 'c') goto yy73;
+			if (yych <= 'd') goto yy77;
+			goto yy74;
 		}
 	} else {
-		if(yych <= 'k') {
-			if(yych == 'i') goto yy74;
+		if (yych <= 'k') {
+			if (yych == 'i') goto yy75;
 		} else {
-			if(yych <= 'l') goto yy77;
-			if(yych == 'u') goto yy75;
-		}
-	}
-yy72:
-	YYCURSOR = YYMARKER;
-	if(yyaccept <= 1) {
-		if(yyaccept <= 0) {
-			goto yy7;
-		} else {
-			goto yy10;
-		}
-	} else {
-		if(yyaccept <= 2) {
-			goto yy97;
-		} else {
-			goto yy180;
+			if (yych <= 'l') goto yy78;
+			if (yych == 'u') goto yy76;
 		}
 	}
 yy73:
-	yych = *++YYCURSOR;
-	if(yych <= 'm') {
-		if(yych == 'l') goto yy113;
-		goto yy72;
+	YYCURSOR = YYMARKER;
+	if (yyaccept <= 1) {
+		if (yyaccept <= 0) {
+			goto yy3;
+		} else {
+			goto yy9;
+		}
 	} else {
-		if(yych <= 'n') goto yy114;
-		if(yych == 'r') goto yy115;
-		goto yy72;
+		if (yyaccept <= 2) {
+			goto yy98;
+		} else {
+			goto yy181;
+		}
 	}
 yy74:
 	yych = *++YYCURSOR;
-	if(yych == 'f') goto yy96;
-	if(yych == 'n') goto yy95;
-	goto yy72;
+	if (yych <= 'm') {
+		if (yych == 'l') goto yy114;
+		goto yy73;
+	} else {
+		if (yych <= 'n') goto yy115;
+		if (yych == 'r') goto yy116;
+		goto yy73;
+	}
 yy75:
 	yych = *++YYCURSOR;
-	if(yych == 'n') goto yy90;
-	goto yy72;
+	if (yych == 'f') goto yy97;
+	if (yych == 'n') goto yy96;
+	goto yy73;
 yy76:
 	yych = *++YYCURSOR;
-	if(yych == 'e') goto yy84;
-	goto yy72;
+	if (yych == 'n') goto yy91;
+	goto yy73;
 yy77:
 	yych = *++YYCURSOR;
-	if(yych == 'i') goto yy80;
-	goto yy72;
+	if (yych == 'e') goto yy85;
+	goto yy73;
 yy78:
+	yych = *++YYCURSOR;
+	if (yych == 'i') goto yy81;
+	goto yy73;
+yy79:
 	++YYCURSOR;
 	{ RET(TOKEN_HASHHASH); }
-yy80:
+yy81:
 	yych = *++YYCURSOR;
-	if(yych != 'n') goto yy72;
+	if (yych != 'n') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych != 'e') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_LINE); }
-yy84:
+yy85:
 	yych = *++YYCURSOR;
-	if(yych != 'f') goto yy72;
+	if (yych != 'f') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'i') goto yy72;
+	if (yych != 'i') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'n') goto yy72;
+	if (yych != 'n') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych != 'e') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_DEFINE); }
-yy90:
+yy91:
 	yych = *++YYCURSOR;
-	if(yych != 'd') goto yy72;
+	if (yych != 'd') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych != 'e') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'f') goto yy72;
+	if (yych != 'f') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_UNDEF); }
-yy95:
+yy96:
 	yych = *++YYCURSOR;
-	if(yych == 'c') goto yy107;
-	goto yy72;
-yy96:
+	if (yych == 'c') goto yy108;
+	goto yy73;
+yy97:
 	yyaccept = 2;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if(yych == 'd') goto yy99;
-	if(yych == 'n') goto yy98;
-yy97:
+	if (yych == 'd') goto yy100;
+	if (yych == 'n') goto yy99;
+yy98:
 	{ RET(TOKEN_PP_IF); }
-yy98:
-	yych = *++YYCURSOR;
-	if(yych == 'd') goto yy103;
-	goto yy72;
 yy99:
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych == 'd') goto yy104;
+	goto yy73;
+yy100:
 	yych = *++YYCURSOR;
-	if(yych != 'f') goto yy72;
+	if (yych != 'e') goto yy73;
+	yych = *++YYCURSOR;
+	if (yych != 'f') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_IFDEF); }
-yy103:
+yy104:
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych != 'e') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'f') goto yy72;
+	if (yych != 'f') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_IFNDEF); }
-yy107:
+yy108:
 	yych = *++YYCURSOR;
-	if(yych != 'l') goto yy72;
+	if (yych != 'l') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'u') goto yy72;
+	if (yych != 'u') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'd') goto yy72;
+	if (yych != 'd') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych != 'e') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_INCLUDE); }
-yy113:
-	yych = *++YYCURSOR;
-	if(yych == 'i') goto yy124;
-	if(yych == 's') goto yy125;
-	goto yy72;
 yy114:
 	yych = *++YYCURSOR;
-	if(yych == 'd') goto yy120;
-	goto yy72;
+	if (yych == 'i') goto yy125;
+	if (yych == 's') goto yy126;
+	goto yy73;
 yy115:
 	yych = *++YYCURSOR;
-	if(yych != 'r') goto yy72;
+	if (yych == 'd') goto yy121;
+	goto yy73;
+yy116:
 	yych = *++YYCURSOR;
-	if(yych != 'o') goto yy72;
+	if (yych != 'r') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'r') goto yy72;
+	if (yych != 'o') goto yy73;
+	yych = *++YYCURSOR;
+	if (yych != 'r') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_ERROR); }
-yy120:
+yy121:
 	yych = *++YYCURSOR;
-	if(yych != 'i') goto yy72;
+	if (yych != 'i') goto yy73;
 	yych = *++YYCURSOR;
-	if(yych != 'f') goto yy72;
+	if (yych != 'f') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_ENDIF); }
-yy124:
-	yych = *++YYCURSOR;
-	if(yych == 'f') goto yy128;
-	goto yy72;
 yy125:
 	yych = *++YYCURSOR;
-	if(yych != 'e') goto yy72;
+	if (yych == 'f') goto yy129;
+	goto yy73;
+yy126:
+	yych = *++YYCURSOR;
+	if (yych != 'e') goto yy73;
 	++YYCURSOR;
 	{ RET(TOKEN_PP_ELSE); }
-yy128:
+yy129:
 	++YYCURSOR;
 	{ RET(TOKEN_PP_ELIF); }
-yy130:
+yy131:
 	++YYCURSOR;
 	{ RET(TOKEN_NEQ); }
-yy132:
+yy133:
 	++YYCURSOR;
 	{ RET(TOKEN_EQL); }
-yy134:
+yy135:
 	++YYCURSOR;
 	{ RET(TOKEN_OROR); }
-yy136:
+yy137:
 	++YYCURSOR;
 	{ RET(TOKEN_ORASSIGN); }
-yy138:
+yy139:
 	++YYCURSOR;
 	{ RET(TOKEN_ANDAND); }
-yy140:
+yy141:
 	++YYCURSOR;
 	{ RET(TOKEN_ANDASSIGN); }
-yy142:
+yy143:
 	++YYCURSOR;
 	{ RET(TOKEN_XORASSIGN); }
-yy144:
+yy145:
 	++YYCURSOR;
 	{ RET(TOKEN_MODASSIGN); }
-yy146:
+yy147:
 	++YYCURSOR;
 	{ RET(TOKEN_MULTASSIGN); }
-yy148:
+yy149:
 	++YYCURSOR;
 	{ RET(TOKEN_DECREMENT); }
-yy150:
+yy151:
 	++YYCURSOR;
 	{ RET(TOKEN_SUBASSIGN); }
-yy152:
+yy153:
 	++YYCURSOR;
 	{ RET(TOKEN_INCREMENT); }
-yy154:
+yy155:
 	++YYCURSOR;
 	{ RET(TOKEN_ADDASSIGN); }
-yy156:
+yy157:
 	++YYCURSOR;
 	{ RET(TOKEN_LEQ); }
-yy158:
+yy159:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy160;
+	if ((yych = *YYCURSOR) == '=') goto yy161;
 	{ RET(TOKEN_LSHIFT); }
-yy160:
+yy161:
 	++YYCURSOR;
 	{ RET(TOKEN_LSHIFTASSIGN); }
-yy162:
+yy163:
 	++YYCURSOR;
 	{ RET(TOKEN_GEQ); }
-yy164:
+yy165:
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '=') goto yy166;
+	if ((yych = *YYCURSOR) == '=') goto yy167;
 	{ RET(TOKEN_RSHIFT); }
-yy166:
+yy167:
 	++YYCURSOR;
 	{ RET(TOKEN_RSHIFTASSIGN); }
-yy168:
+yy169:
 	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-yy169:
-	if(yych <= 0x0D) {
-		if(yych == 0x0A) goto yy72;
-		if(yych <= 0x0C) goto yy168;
-		goto yy72;
-	} else {
-		if(yych <= '"') {
-			if(yych <= '!') goto yy168;
-			goto yy171;
-		} else {
-			if(yych != '\\') goto yy168;
-		}
-	}
-yy170:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if(yych <= 'b') {
-		if(yych <= '7') {
-			if(yych <= '&') {
-				if(yych == '"') goto yy168;
-				goto yy72;
-			} else {
-				if(yych <= '\'') goto yy168;
-				if(yych <= '/') goto yy72;
-				goto yy174;
-			}
+yy170:
+	if (yych <= '\r') {
+		if (yych == '\n') goto yy73;
+		if (yych <= '\f') goto yy169;
+		goto yy73;
+	} else {
+		if (yych <= '"') {
+			if (yych <= '!') goto yy169;
+			goto yy172;
 		} else {
-			if(yych <= '[') {
-				if(yych == '?') goto yy168;
-				goto yy72;
-			} else {
-				if(yych <= '\\') goto yy168;
-				if(yych <= '`') goto yy72;
-				goto yy168;
-			}
-		}
-	} else {
-		if(yych <= 'r') {
-			if(yych <= 'm') {
-				if(yych == 'f') goto yy168;
-				goto yy72;
-			} else {
-				if(yych <= 'n') goto yy168;
-				if(yych <= 'q') goto yy72;
-				goto yy168;
-			}
-		} else {
-			if(yych <= 'u') {
-				if(yych == 't') goto yy168;
-				goto yy72;
-			} else {
-				if(yych <= 'v') goto yy168;
-				if(yych == 'x') goto yy173;
-				goto yy72;
-			}
+			if (yych != '\\') goto yy169;
 		}
 	}
 yy171:
 	++YYCURSOR;
-	{ RET(TOKEN_STRING_LITERAL); }
-yy173:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= '@') {
-		if(yych <= '/') goto yy72;
-		if(yych <= '9') goto yy176;
-		goto yy72;
-	} else {
-		if(yych <= 'F') goto yy176;
-		if(yych <= '`') goto yy72;
-		if(yych <= 'f') goto yy176;
-		goto yy72;
-	}
-yy174:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= '!') {
-		if(yych <= 0x0A) {
-			if(yych <= 0x09) goto yy168;
-			goto yy72;
-		} else {
-			if(yych == 0x0D) goto yy72;
-			goto yy168;
-		}
-	} else {
-		if(yych <= '7') {
-			if(yych <= '"') goto yy171;
-			if(yych <= '/') goto yy168;
-			goto yy174;
-		} else {
-			if(yych == '\\') goto yy170;
-			goto yy168;
-		}
-	}
-yy176:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= '/') {
-		if(yych <= 0x0C) {
-			if(yych == 0x0A) goto yy72;
-			goto yy168;
-		} else {
-			if(yych <= 0x0D) goto yy72;
-			if(yych == '"') goto yy171;
-			goto yy168;
-		}
-	} else {
-		if(yych <= '[') {
-			if(yych <= '9') goto yy176;
-			if(yych <= '@') goto yy168;
-			if(yych <= 'F') goto yy176;
-			goto yy168;
-		} else {
-			if(yych <= '\\') goto yy170;
-			if(yych <= '`') goto yy168;
-			if(yych <= 'f') goto yy176;
-			goto yy168;
-		}
-	}
-yy178:
-	yyaccept = 3;
-	YYMARKER = ++YYCURSOR;
-	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if(yych <= 'K') {
-		if(yych <= 'D') {
-			if(yych <= '/') goto yy180;
-			if(yych <= '9') goto yy178;
-		} else {
-			if(yych <= 'E') goto yy181;
-			if(yych <= 'F') goto yy182;
-		}
-	} else {
-		if(yych <= 'e') {
-			if(yych <= 'L') goto yy182;
-			if(yych >= 'e') goto yy181;
-		} else {
-			if(yych <= 'f') goto yy182;
-			if(yych == 'l') goto yy182;
-		}
-	}
-yy180:
-	{ RET(TOKEN_FLOAT_LITERAL); }
-yy181:
-	yych = *++YYCURSOR;
-	if(yych <= ',') {
-		if(yych == '+') goto yy183;
-		goto yy72;
-	} else {
-		if(yych <= '-') goto yy183;
-		if(yych <= '/') goto yy72;
-		if(yych <= '9') goto yy184;
-		goto yy72;
-	}
-yy182:
-	yych = *++YYCURSOR;
-	goto yy180;
-yy183:
-	yych = *++YYCURSOR;
-	if(yych <= '/') goto yy72;
-	if(yych >= ':') goto yy72;
-yy184:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'K') {
-		if(yych <= '9') {
-			if(yych <= '/') goto yy180;
-			goto yy184;
-		} else {
-			if(yych == 'F') goto yy182;
-			goto yy180;
-		}
-	} else {
-		if(yych <= 'f') {
-			if(yych <= 'L') goto yy182;
-			if(yych <= 'e') goto yy180;
-			goto yy182;
-		} else {
-			if(yych == 'l') goto yy182;
-			goto yy180;
-		}
-	}
-yy186:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-yy187:
-	if(yych <= 0x0D) {
-		if(yych == 0x0A) goto yy72;
-		if(yych <= 0x0C) goto yy186;
-		goto yy72;
-	} else {
-		if(yych <= '\'') {
-			if(yych <= '&') goto yy186;
-			goto yy189;
-		} else {
-			if(yych != '\\') goto yy186;
-		}
-	}
-yy188:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'b') {
-		if(yych <= '7') {
-			if(yych <= '&') {
-				if(yych == '"') goto yy186;
-				goto yy72;
+	if (yych <= 'b') {
+		if (yych <= '7') {
+			if (yych <= '&') {
+				if (yych == '"') goto yy169;
+				goto yy73;
 			} else {
-				if(yych <= '\'') goto yy186;
-				if(yych <= '/') goto yy72;
-				goto yy191;
+				if (yych <= '\'') goto yy169;
+				if (yych <= '/') goto yy73;
+				goto yy175;
 			}
 		} else {
-			if(yych <= '[') {
-				if(yych == '?') goto yy186;
-				goto yy72;
+			if (yych <= '[') {
+				if (yych == '?') goto yy169;
+				goto yy73;
 			} else {
-				if(yych <= '\\') goto yy186;
-				if(yych <= '`') goto yy72;
-				goto yy186;
+				if (yych <= '\\') goto yy169;
+				if (yych <= '`') goto yy73;
+				goto yy169;
 			}
 		}
 	} else {
-		if(yych <= 'r') {
-			if(yych <= 'm') {
-				if(yych == 'f') goto yy186;
-				goto yy72;
+		if (yych <= 'r') {
+			if (yych <= 'm') {
+				if (yych == 'f') goto yy169;
+				goto yy73;
 			} else {
-				if(yych <= 'n') goto yy186;
-				if(yych <= 'q') goto yy72;
-				goto yy186;
+				if (yych <= 'n') goto yy169;
+				if (yych <= 'q') goto yy73;
+				goto yy169;
 			}
 		} else {
-			if(yych <= 'u') {
-				if(yych == 't') goto yy186;
-				goto yy72;
+			if (yych <= 'u') {
+				if (yych == 't') goto yy169;
+				goto yy73;
 			} else {
-				if(yych <= 'v') goto yy186;
-				if(yych == 'x') goto yy190;
-				goto yy72;
+				if (yych <= 'v') goto yy169;
+				if (yych == 'x') goto yy174;
+				goto yy73;
 			}
 		}
 	}
+yy172:
+	++YYCURSOR;
+	{ RET(TOKEN_STRING_LITERAL); }
+yy174:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= '@') {
+		if (yych <= '/') goto yy73;
+		if (yych <= '9') goto yy177;
+		goto yy73;
+	} else {
+		if (yych <= 'F') goto yy177;
+		if (yych <= '`') goto yy73;
+		if (yych <= 'f') goto yy177;
+		goto yy73;
+	}
+yy175:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= '!') {
+		if (yych <= '\n') {
+			if (yych <= '\t') goto yy169;
+			goto yy73;
+		} else {
+			if (yych == '\r') goto yy73;
+			goto yy169;
+		}
+	} else {
+		if (yych <= '7') {
+			if (yych <= '"') goto yy172;
+			if (yych <= '/') goto yy169;
+			goto yy175;
+		} else {
+			if (yych == '\\') goto yy171;
+			goto yy169;
+		}
+	}
+yy177:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= '/') {
+		if (yych <= '\f') {
+			if (yych == '\n') goto yy73;
+			goto yy169;
+		} else {
+			if (yych <= '\r') goto yy73;
+			if (yych == '"') goto yy172;
+			goto yy169;
+		}
+	} else {
+		if (yych <= '[') {
+			if (yych <= '9') goto yy177;
+			if (yych <= '@') goto yy169;
+			if (yych <= 'F') goto yy177;
+			goto yy169;
+		} else {
+			if (yych <= '\\') goto yy171;
+			if (yych <= '`') goto yy169;
+			if (yych <= 'f') goto yy177;
+			goto yy169;
+		}
+	}
+yy179:
+	yyaccept = 3;
+	YYMARKER = ++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	yych = *YYCURSOR;
+	if (yych <= 'K') {
+		if (yych <= 'D') {
+			if (yych <= '/') goto yy181;
+			if (yych <= '9') goto yy179;
+		} else {
+			if (yych <= 'E') goto yy182;
+			if (yych <= 'F') goto yy183;
+		}
+	} else {
+		if (yych <= 'e') {
+			if (yych <= 'L') goto yy183;
+			if (yych >= 'e') goto yy182;
+		} else {
+			if (yych <= 'f') goto yy183;
+			if (yych == 'l') goto yy183;
+		}
+	}
+yy181:
+	{ RET(TOKEN_FLOAT_LITERAL); }
+yy182:
+	yych = *++YYCURSOR;
+	if (yych <= ',') {
+		if (yych == '+') goto yy184;
+		goto yy73;
+	} else {
+		if (yych <= '-') goto yy184;
+		if (yych <= '/') goto yy73;
+		if (yych <= '9') goto yy185;
+		goto yy73;
+	}
+yy183:
+	yych = *++YYCURSOR;
+	goto yy181;
+yy184:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy73;
+	if (yych >= ':') goto yy73;
+yy185:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'K') {
+		if (yych <= '9') {
+			if (yych <= '/') goto yy181;
+			goto yy185;
+		} else {
+			if (yych == 'F') goto yy183;
+			goto yy181;
+		}
+	} else {
+		if (yych <= 'f') {
+			if (yych <= 'L') goto yy183;
+			if (yych <= 'e') goto yy181;
+			goto yy183;
+		} else {
+			if (yych == 'l') goto yy183;
+			goto yy181;
+		}
+	}
+yy187:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy188:
+	if (yych <= '\r') {
+		if (yych == '\n') goto yy73;
+		if (yych <= '\f') goto yy187;
+		goto yy73;
+	} else {
+		if (yych <= '\'') {
+			if (yych <= '&') goto yy187;
+			goto yy190;
+		} else {
+			if (yych != '\\') goto yy187;
+		}
+	}
 yy189:
-	yych = *++YYCURSOR;
-	goto yy7;
-yy190:
 	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if(yych <= '@') {
-		if(yych <= '/') goto yy72;
-		if(yych <= '9') goto yy193;
-		goto yy72;
-	} else {
-		if(yych <= 'F') goto yy193;
-		if(yych <= '`') goto yy72;
-		if(yych <= 'f') goto yy193;
-		goto yy72;
-	}
-yy191:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= '&') {
-		if(yych <= 0x0A) {
-			if(yych <= 0x09) goto yy186;
-			goto yy72;
+	if (yych <= 'b') {
+		if (yych <= '7') {
+			if (yych <= '&') {
+				if (yych == '"') goto yy187;
+				goto yy73;
+			} else {
+				if (yych <= '\'') goto yy187;
+				if (yych <= '/') goto yy73;
+				goto yy192;
+			}
 		} else {
-			if(yych == 0x0D) goto yy72;
-			goto yy186;
+			if (yych <= '[') {
+				if (yych == '?') goto yy187;
+				goto yy73;
+			} else {
+				if (yych <= '\\') goto yy187;
+				if (yych <= '`') goto yy73;
+				goto yy187;
+			}
 		}
 	} else {
-		if(yych <= '7') {
-			if(yych <= '\'') goto yy189;
-			if(yych <= '/') goto yy186;
-			goto yy191;
+		if (yych <= 'r') {
+			if (yych <= 'm') {
+				if (yych == 'f') goto yy187;
+				goto yy73;
+			} else {
+				if (yych <= 'n') goto yy187;
+				if (yych <= 'q') goto yy73;
+				goto yy187;
+			}
 		} else {
-			if(yych == '\\') goto yy188;
-			goto yy186;
+			if (yych <= 'u') {
+				if (yych == 't') goto yy187;
+				goto yy73;
+			} else {
+				if (yych <= 'v') goto yy187;
+				if (yych == 'x') goto yy191;
+				goto yy73;
+			}
 		}
 	}
-yy193:
+yy190:
+	yych = *++YYCURSOR;
+	goto yy9;
+yy191:
 	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if(yych <= '/') {
-		if(yych <= 0x0C) {
-			if(yych == 0x0A) goto yy72;
-			goto yy186;
+	if (yych <= '@') {
+		if (yych <= '/') goto yy73;
+		if (yych <= '9') goto yy194;
+		goto yy73;
+	} else {
+		if (yych <= 'F') goto yy194;
+		if (yych <= '`') goto yy73;
+		if (yych <= 'f') goto yy194;
+		goto yy73;
+	}
+yy192:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= '&') {
+		if (yych <= '\n') {
+			if (yych <= '\t') goto yy187;
+			goto yy73;
 		} else {
-			if(yych <= 0x0D) goto yy72;
-			if(yych == '\'') goto yy189;
-			goto yy186;
+			if (yych == '\r') goto yy73;
+			goto yy187;
 		}
 	} else {
-		if(yych <= '[') {
-			if(yych <= '9') goto yy193;
-			if(yych <= '@') goto yy186;
-			if(yych <= 'F') goto yy193;
-			goto yy186;
+		if (yych <= '7') {
+			if (yych <= '\'') goto yy190;
+			if (yych <= '/') goto yy187;
+			goto yy192;
 		} else {
-			if(yych <= '\\') goto yy188;
-			if(yych <= '`') goto yy186;
-			if(yych <= 'f') goto yy193;
-			goto yy186;
+			if (yych == '\\') goto yy189;
+			goto yy187;
 		}
 	}
-yy195:
+yy194:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= '/') {
+		if (yych <= '\f') {
+			if (yych == '\n') goto yy73;
+			goto yy187;
+		} else {
+			if (yych <= '\r') goto yy73;
+			if (yych == '\'') goto yy190;
+			goto yy187;
+		}
+	} else {
+		if (yych <= '[') {
+			if (yych <= '9') goto yy194;
+			if (yych <= '@') goto yy187;
+			if (yych <= 'F') goto yy194;
+			goto yy187;
+		} else {
+			if (yych <= '\\') goto yy189;
+			if (yych <= '`') goto yy187;
+			if (yych <= 'f') goto yy194;
+			goto yy187;
+		}
+	}
+yy196:
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if(yych == 'E') goto yy206;
-	if(yych == 'e') goto yy206;
-	goto yy205;
-yy196:
-	yyaccept = 0;
-	YYMARKER = ++YYCURSOR;
-	if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
-	yych = *YYCURSOR;
+	if (yych == 'E') goto yy207;
+	if (yych == 'e') goto yy207;
+	goto yy206;
 yy197:
-	if(yych <= 'L') {
-		if(yych <= '9') {
-			if(yych == '.') goto yy195;
-			if(yych <= '/') goto yy7;
-			goto yy196;
+	yyaccept = 1;
+	YYMARKER = ++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+	yych = *YYCURSOR;
+yy198:
+	if (yych <= 'L') {
+		if (yych <= '9') {
+			if (yych == '.') goto yy196;
+			if (yych <= '/') goto yy9;
+			goto yy197;
 		} else {
-			if(yych == 'E') goto yy198;
-			if(yych <= 'K') goto yy7;
-			goto yy199;
+			if (yych == 'E') goto yy199;
+			if (yych <= 'K') goto yy9;
+			goto yy200;
 		}
 	} else {
-		if(yych <= 'e') {
-			if(yych == 'U') goto yy199;
-			if(yych <= 'd') goto yy7;
+		if (yych <= 'e') {
+			if (yych == 'U') goto yy200;
+			if (yych <= 'd') goto yy9;
 		} else {
-			if(yych <= 'l') {
-				if(yych <= 'k') goto yy7;
-				goto yy199;
+			if (yych <= 'l') {
+				if (yych <= 'k') goto yy9;
+				goto yy200;
 			} else {
-				if(yych == 'u') goto yy199;
-				goto yy7;
+				if (yych == 'u') goto yy200;
+				goto yy9;
 			}
 		}
 	}
-yy198:
+yy199:
+	yych = *++YYCURSOR;
+	if (yych <= ',') {
+		if (yych == '+') goto yy202;
+		goto yy73;
+	} else {
+		if (yych <= '-') goto yy202;
+		if (yych <= '/') goto yy73;
+		if (yych <= '9') goto yy203;
+		goto yy73;
+	}
+yy200:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'U') {
+		if (yych == 'L') goto yy200;
+		if (yych <= 'T') goto yy9;
+		goto yy200;
+	} else {
+		if (yych <= 'l') {
+			if (yych <= 'k') goto yy9;
+			goto yy200;
+		} else {
+			if (yych == 'u') goto yy200;
+			goto yy9;
+		}
+	}
+yy202:
 	yych = *++YYCURSOR;
-	if(yych <= ',') {
-		if(yych == '+') goto yy201;
-		goto yy72;
+	if (yych <= '/') goto yy73;
+	if (yych >= ':') goto yy73;
+yy203:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'K') {
+		if (yych <= '9') {
+			if (yych <= '/') goto yy181;
+			goto yy203;
+		} else {
+			if (yych == 'F') goto yy183;
+			goto yy181;
+		}
 	} else {
-		if(yych <= '-') goto yy201;
-		if(yych <= '/') goto yy72;
-		if(yych <= '9') goto yy202;
-		goto yy72;
+		if (yych <= 'f') {
+			if (yych <= 'L') goto yy183;
+			if (yych <= 'e') goto yy181;
+			goto yy183;
+		} else {
+			if (yych == 'l') goto yy183;
+			goto yy181;
+		}
+	}
+yy205:
+	yyaccept = 3;
+	YYMARKER = ++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	yych = *YYCURSOR;
+yy206:
+	if (yych <= 'K') {
+		if (yych <= 'D') {
+			if (yych <= '/') goto yy181;
+			if (yych <= '9') goto yy205;
+			goto yy181;
+		} else {
+			if (yych <= 'E') goto yy211;
+			if (yych <= 'F') goto yy183;
+			goto yy181;
+		}
+	} else {
+		if (yych <= 'e') {
+			if (yych <= 'L') goto yy183;
+			if (yych <= 'd') goto yy181;
+			goto yy211;
+		} else {
+			if (yych <= 'f') goto yy183;
+			if (yych == 'l') goto yy183;
+			goto yy181;
+		}
 	}
-yy199:
+yy207:
+	yych = *++YYCURSOR;
+	if (yych <= ',') {
+		if (yych != '+') goto yy73;
+	} else {
+		if (yych <= '-') goto yy208;
+		if (yych <= '/') goto yy73;
+		if (yych <= '9') goto yy209;
+		goto yy73;
+	}
+yy208:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy73;
+	if (yych >= ':') goto yy73;
+yy209:
 	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if(yych <= 'U') {
-		if(yych == 'L') goto yy199;
-		if(yych <= 'T') goto yy7;
-		goto yy199;
+	if (yych <= 'K') {
+		if (yych <= '9') {
+			if (yych <= '/') goto yy181;
+			goto yy209;
+		} else {
+			if (yych == 'F') goto yy183;
+			goto yy181;
+		}
+	} else {
+		if (yych <= 'f') {
+			if (yych <= 'L') goto yy183;
+			if (yych <= 'e') goto yy181;
+			goto yy183;
+		} else {
+			if (yych == 'l') goto yy183;
+			goto yy181;
+		}
+	}
+yy211:
+	yych = *++YYCURSOR;
+	if (yych <= ',') {
+		if (yych != '+') goto yy73;
 	} else {
-		if(yych <= 'l') {
-			if(yych <= 'k') goto yy7;
+		if (yych <= '-') goto yy212;
+		if (yych <= '/') goto yy73;
+		if (yych <= '9') goto yy213;
+		goto yy73;
+	}
+yy212:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy73;
+	if (yych >= ':') goto yy73;
+yy213:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'K') {
+		if (yych <= '9') {
+			if (yych <= '/') goto yy181;
+			goto yy213;
+		} else {
+			if (yych == 'F') goto yy183;
+			goto yy181;
+		}
+	} else {
+		if (yych <= 'f') {
+			if (yych <= 'L') goto yy183;
+			if (yych <= 'e') goto yy181;
+			goto yy183;
+		} else {
+			if (yych == 'l') goto yy183;
+			goto yy181;
+		}
+	}
+yy215:
+	yyaccept = 1;
+	YYMARKER = ++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+	yych = *YYCURSOR;
+yy216:
+	if (yych <= 'L') {
+		if (yych <= '9') {
+			if (yych == '.') goto yy196;
+			if (yych <= '/') goto yy9;
+			goto yy215;
+		} else {
+			if (yych == 'E') goto yy199;
+			if (yych <= 'K') goto yy9;
+			goto yy222;
+		}
+	} else {
+		if (yych <= 'e') {
+			if (yych == 'U') goto yy222;
+			if (yych <= 'd') goto yy9;
 			goto yy199;
 		} else {
-			if(yych == 'u') goto yy199;
+			if (yych <= 'l') {
+				if (yych <= 'k') goto yy9;
+				goto yy222;
+			} else {
+				if (yych == 'u') goto yy222;
+				goto yy9;
+			}
+		}
+	}
+yy217:
+	yych = *++YYCURSOR;
+	if (yych <= '@') {
+		if (yych <= '/') goto yy73;
+		if (yych >= ':') goto yy73;
+	} else {
+		if (yych <= 'F') goto yy218;
+		if (yych <= '`') goto yy73;
+		if (yych >= 'g') goto yy73;
+	}
+yy218:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'T') {
+		if (yych <= '@') {
+			if (yych <= '/') goto yy9;
+			if (yych <= '9') goto yy218;
+			goto yy9;
+		} else {
+			if (yych <= 'F') goto yy218;
+			if (yych != 'L') goto yy9;
+		}
+	} else {
+		if (yych <= 'k') {
+			if (yych <= 'U') goto yy220;
+			if (yych <= '`') goto yy9;
+			if (yych <= 'f') goto yy218;
+			goto yy9;
+		} else {
+			if (yych <= 'l') goto yy220;
+			if (yych != 'u') goto yy9;
+		}
+	}
+yy220:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'U') {
+		if (yych == 'L') goto yy220;
+		if (yych <= 'T') goto yy9;
+		goto yy220;
+	} else {
+		if (yych <= 'l') {
+			if (yych <= 'k') goto yy9;
+			goto yy220;
+		} else {
+			if (yych == 'u') goto yy220;
+			goto yy9;
+		}
+	}
+yy222:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= 'U') {
+		if (yych == 'L') goto yy222;
+		if (yych <= 'T') goto yy9;
+		goto yy222;
+	} else {
+		if (yych <= 'l') {
+			if (yych <= 'k') goto yy9;
+			goto yy222;
+		} else {
+			if (yych == 'u') goto yy222;
+			goto yy9;
+		}
+	}
+yy224:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy225:
+	if (yych <= 'Z') {
+		if (yych <= '/') goto yy7;
+		if (yych <= '9') goto yy224;
+		if (yych <= '@') goto yy7;
+		goto yy224;
+	} else {
+		if (yych <= '_') {
+			if (yych <= '^') goto yy7;
+			goto yy224;
+		} else {
+			if (yych <= '`') goto yy7;
+			if (yych <= 'z') goto yy224;
 			goto yy7;
 		}
 	}
-yy201:
-	yych = *++YYCURSOR;
-	if(yych <= '/') goto yy72;
-	if(yych >= ':') goto yy72;
-yy202:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'K') {
-		if(yych <= '9') {
-			if(yych <= '/') goto yy180;
-			goto yy202;
-		} else {
-			if(yych == 'F') goto yy182;
-			goto yy180;
-		}
-	} else {
-		if(yych <= 'f') {
-			if(yych <= 'L') goto yy182;
-			if(yych <= 'e') goto yy180;
-			goto yy182;
-		} else {
-			if(yych == 'l') goto yy182;
-			goto yy180;
-		}
-	}
-yy204:
-	yyaccept = 3;
-	YYMARKER = ++YYCURSOR;
-	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-	yych = *YYCURSOR;
-yy205:
-	if(yych <= 'K') {
-		if(yych <= 'D') {
-			if(yych <= '/') goto yy180;
-			if(yych <= '9') goto yy204;
-			goto yy180;
-		} else {
-			if(yych <= 'E') goto yy210;
-			if(yych <= 'F') goto yy182;
-			goto yy180;
-		}
-	} else {
-		if(yych <= 'e') {
-			if(yych <= 'L') goto yy182;
-			if(yych <= 'd') goto yy180;
-			goto yy210;
-		} else {
-			if(yych <= 'f') goto yy182;
-			if(yych == 'l') goto yy182;
-			goto yy180;
-		}
-	}
-yy206:
-	yych = *++YYCURSOR;
-	if(yych <= ',') {
-		if(yych != '+') goto yy72;
-	} else {
-		if(yych <= '-') goto yy207;
-		if(yych <= '/') goto yy72;
-		if(yych <= '9') goto yy208;
-		goto yy72;
-	}
-yy207:
-	yych = *++YYCURSOR;
-	if(yych <= '/') goto yy72;
-	if(yych >= ':') goto yy72;
-yy208:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'K') {
-		if(yych <= '9') {
-			if(yych <= '/') goto yy180;
-			goto yy208;
-		} else {
-			if(yych == 'F') goto yy182;
-			goto yy180;
-		}
-	} else {
-		if(yych <= 'f') {
-			if(yych <= 'L') goto yy182;
-			if(yych <= 'e') goto yy180;
-			goto yy182;
-		} else {
-			if(yych == 'l') goto yy182;
-			goto yy180;
-		}
-	}
-yy210:
-	yych = *++YYCURSOR;
-	if(yych <= ',') {
-		if(yych != '+') goto yy72;
-	} else {
-		if(yych <= '-') goto yy211;
-		if(yych <= '/') goto yy72;
-		if(yych <= '9') goto yy212;
-		goto yy72;
-	}
-yy211:
-	yych = *++YYCURSOR;
-	if(yych <= '/') goto yy72;
-	if(yych >= ':') goto yy72;
-yy212:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'K') {
-		if(yych <= '9') {
-			if(yych <= '/') goto yy180;
-			goto yy212;
-		} else {
-			if(yych == 'F') goto yy182;
-			goto yy180;
-		}
-	} else {
-		if(yych <= 'f') {
-			if(yych <= 'L') goto yy182;
-			if(yych <= 'e') goto yy180;
-			goto yy182;
-		} else {
-			if(yych == 'l') goto yy182;
-			goto yy180;
-		}
-	}
-yy214:
-	yyaccept = 0;
-	YYMARKER = ++YYCURSOR;
-	if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
-	yych = *YYCURSOR;
-yy215:
-	if(yych <= 'L') {
-		if(yych <= '9') {
-			if(yych == '.') goto yy195;
-			if(yych <= '/') goto yy7;
-			goto yy214;
-		} else {
-			if(yych == 'E') goto yy198;
-			if(yych <= 'K') goto yy7;
-			goto yy221;
-		}
-	} else {
-		if(yych <= 'e') {
-			if(yych == 'U') goto yy221;
-			if(yych <= 'd') goto yy7;
-			goto yy198;
-		} else {
-			if(yych <= 'l') {
-				if(yych <= 'k') goto yy7;
-				goto yy221;
-			} else {
-				if(yych == 'u') goto yy221;
-				goto yy7;
-			}
-		}
-	}
-yy216:
-	yych = *++YYCURSOR;
-	if(yych <= '@') {
-		if(yych <= '/') goto yy72;
-		if(yych >= ':') goto yy72;
-	} else {
-		if(yych <= 'F') goto yy217;
-		if(yych <= '`') goto yy72;
-		if(yych >= 'g') goto yy72;
-	}
-yy217:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'T') {
-		if(yych <= '@') {
-			if(yych <= '/') goto yy7;
-			if(yych <= '9') goto yy217;
-			goto yy7;
-		} else {
-			if(yych <= 'F') goto yy217;
-			if(yych != 'L') goto yy7;
-		}
-	} else {
-		if(yych <= 'k') {
-			if(yych <= 'U') goto yy219;
-			if(yych <= '`') goto yy7;
-			if(yych <= 'f') goto yy217;
-			goto yy7;
-		} else {
-			if(yych <= 'l') goto yy219;
-			if(yych != 'u') goto yy7;
-		}
-	}
-yy219:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'U') {
-		if(yych == 'L') goto yy219;
-		if(yych <= 'T') goto yy7;
-		goto yy219;
-	} else {
-		if(yych <= 'l') {
-			if(yych <= 'k') goto yy7;
-			goto yy219;
-		} else {
-			if(yych == 'u') goto yy219;
-			goto yy7;
-		}
-	}
-yy221:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if(yych <= 'U') {
-		if(yych == 'L') goto yy221;
-		if(yych <= 'T') goto yy7;
-		goto yy221;
-	} else {
-		if(yych <= 'l') {
-			if(yych <= 'k') goto yy7;
-			goto yy221;
-		} else {
-			if(yych == 'u') goto yy221;
-			goto yy7;
-		}
-	}
-yy223:
-	++YYCURSOR;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-yy224:
-	if(yych <= 'Z') {
-		if(yych <= '/') goto yy5;
-		if(yych <= '9') goto yy223;
-		if(yych <= '@') goto yy5;
-		goto yy223;
-	} else {
-		if(yych <= '_') {
-			if(yych <= '^') goto yy5;
-			goto yy223;
-		} else {
-			if(yych <= '`') goto yy5;
-			if(yych <= 'z') goto yy223;
-			goto yy5;
-		}
-	}
-yy225:
+yy226:
 	++YYCURSOR;
 	{ RET(TOKEN_DIVASSIGN); }
-yy227:
+yy228:
 	++YYCURSOR;
 	{ goto singlelinecomment; }
-yy229:
+yy230:
 	++YYCURSOR;
 	{ goto multilinecomment; }
+yy232:
+	++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	yych = *YYCURSOR;
+yy233:
+	if (yych <= '\f') {
+		if (yych <= 0x08) goto yy73;
+		if (yych != '\n') goto yy232;
+	} else {
+		if (yych <= '\r') goto yy236;
+		if (yych == ' ') goto yy232;
+		goto yy73;
+	}
+yy234:
+	++YYCURSOR;
+yy235:
+	{ s->line++; goto scanner_loop; }
+yy236:
+	++YYCURSOR;
+	if ((yych = *YYCURSOR) == '\n') goto yy234;
+	goto yy235;
 }
 
 
 multilinecomment:
-    if (YYLIMIT == YYCURSOR)
-        RET(TOKEN_INCOMPLETE_COMMENT);
+    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);
+	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
-	if(yych <= 0x0C) {
-		if(yych == 0x0A) goto yy235;
-		goto yy238;
+	if (yych <= '\f') {
+		if (yych <= 0x00) goto yy244;
+		if (yych == '\n') goto yy241;
+		goto yy246;
 	} else {
-		if(yych <= 0x0D) goto yy237;
-		if(yych != '*') goto yy238;
+		if (yych <= '\r') goto yy243;
+		if (yych != '*') goto yy246;
 	}
 	++YYCURSOR;
-	if((yych = *YYCURSOR) == '/') goto yy240;
-yy234:
+	if ((yych = *YYCURSOR) == '/') goto yy248;
+yy240:
 	{ goto multilinecomment; }
-yy235:
+yy241:
 	++YYCURSOR;
-yy236:
+yy242:
 	{
                         s->line++;
                         token = matchptr;
                         saw_newline = 1;
                         goto multilinecomment;
                     }
-yy237:
-	yych = *++YYCURSOR;
-	if(yych == 0x0A) goto yy239;
-	goto yy236;
-yy238:
+yy243:
 	yych = *++YYCURSOR;
-	goto yy234;
-yy239:
+	if (yych == '\n') goto yy247;
+	goto yy242;
+yy244:
+	++YYCURSOR;
+	{
+                        if (eoi)
+                            RET(TOKEN_INCOMPLETE_COMMENT);
+                        goto multilinecomment;
+                    }
+yy246:
 	yych = *++YYCURSOR;
-	goto yy236;
-yy240:
+	goto yy240;
+yy247:
+	yych = *++YYCURSOR;
+	goto yy242;
+yy248:
 	++YYCURSOR;
 	{
                         if (saw_newline)
                             RET('\n');
+                        else if (s->report_whitespace)
+                            RET(' ');
                         goto scanner_loop;
                     }
 }
 
 
 singlelinecomment:
-    if (YYLIMIT == YYCURSOR)
-        RET(TOKEN_EOI);
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
     matchptr = cursor;
 
 {
 	YYCTYPE yych;
-	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
-	if(yych == 0x0A) goto yy244;
-	if(yych == 0x0D) goto yy246;
-	goto yy247;
-yy244:
+	if (yych <= '\n') {
+		if (yych <= 0x00) goto yy255;
+		if (yych <= '\t') goto yy257;
+	} else {
+		if (yych == '\r') goto yy254;
+		goto yy257;
+	}
 	++YYCURSOR;
-yy245:
+yy253:
 	{ s->line++; token = matchptr; RET('\n'); }
-yy246:
+yy254:
 	yych = *++YYCURSOR;
-	if(yych == 0x0A) goto yy249;
-	goto yy245;
-yy247:
+	if (yych == '\n') goto yy259;
+	goto yy253;
+yy255:
+	++YYCURSOR;
+	{ if (eoi) { RET(TOKEN_EOI); } goto singlelinecomment; }
+yy257:
 	++YYCURSOR;
 	{ goto singlelinecomment; }
-yy249:
+yy259:
 	++YYCURSOR;
 	yych = *YYCURSOR;
-	goto yy245;
+	goto yy253;
 }
 
 
 bad_chars:
-    if (YYLIMIT == YYCURSOR)
-        RET(TOKEN_BAD_CHARS);
-
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
 
 {
 	YYCTYPE yych;
-	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if(yych <= '#') {
-		if(yych <= 0x1F) {
-			if(yych <= 0x08) goto yy254;
-			if(yych >= 0x0E) goto yy254;
+	if (yych <= '#') {
+		if (yych <= '\r') {
+			if (yych <= 0x00) goto yy264;
+			if (yych <= 0x08) goto yy266;
 		} else {
-			if(yych == '"') goto yy254;
+			if (yych <= 0x1F) goto yy266;
+			if (yych == '"') goto yy266;
 		}
 	} else {
-		if(yych <= '@') {
-			if(yych <= '$') goto yy254;
-			if(yych >= '@') goto yy254;
+		if (yych <= '@') {
+			if (yych <= '$') goto yy266;
+			if (yych >= '@') goto yy266;
 		} else {
-			if(yych == '`') goto yy254;
-			if(yych >= 0x7F) goto yy254;
+			if (yych == '`') goto yy266;
+			if (yych >= 0x7F) goto yy266;
 		}
 	}
 	++YYCURSOR;
 	{ cursor--; RET(TOKEN_BAD_CHARS); }
-yy254:
+yy264:
+	++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;
+                    }
+yy266:
 	++YYCURSOR;
 	{ goto bad_chars; }
 }