/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -bi
/* $Id$ */
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <sstream>
#include "scanner.h"
#include "parser.h"
#include "y.tab.h"
#include "globals.h"
#include "dfa.h"

extern YYSTYPE yylval;

#ifndef MAX
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif

#define	YYCTYPE		unsigned char
#define	YYCURSOR	cursor
#define	YYLIMIT		lim
#define	YYMARKER	ptr
#define	YYCTXMARKER ctx
#define	YYFILL(n)	{cursor = fill(cursor, n);}

#define	RETURN(i)	{cur = cursor; return i;}

namespace re2c
{



Scanner::ParseMode Scanner::echo()
{
	char *cursor = cur;
	bool ignore_eoc = false;
	int  ignore_cnt = 0;

	if (eof && cursor == eof) // Catch EOF
	{
		return Stop;
	}

	tok = cursor;
echo:

{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[256] = {
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 160,   0, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		160, 128,   0, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		192, 192, 192, 192, 192, 192, 192, 192,
		192, 192, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128,   0, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128
	};
	if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
	yych = *YYCURSOR;
	if (yych <= '%') {
		if (yych <= '\t') {
			if (yych >= 0x01) goto yy1;
		} else {
			if (yych <= '\n') goto yy3;
			if (yych <= '$') goto yy1;
			goto yy5;
		}
	} else {
		if (yych <= '*') {
			if (yych <= ')') goto yy1;
			goto yy6;
		} else {
			if (yych == '/') goto yy7;
			goto yy1;
		}
	}
	++YYCURSOR;
	{
					if (!ignore_eoc && !DFlag)
					{
						out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok) - 1);
						// -1 so we don't write out the \0
					}
					if(cursor == eof)
					{
						RETURN(Stop);
					}
				}
yy1:
	++YYCURSOR;
yy2:
	{
					goto echo;
				}
yy3:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yybm[0+yych] & 32) goto yy8;
	if (yych == '#') goto yy10;
yy4:
	{
					if (ignore_eoc)
					{
						ignore_cnt++;
					}
					else if (!DFlag)
					{
						out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok));
					}
					tok = pos = cursor;
					cline++;
					goto echo;
				}
yy5:
	yych = *++YYCURSOR;
	if (yych == '{') goto yy11;
	goto yy2;
yy6:
	yych = *++YYCURSOR;
	if (yych == '/') goto yy12;
	goto yy2;
yy7:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '*') goto yy14;
	goto yy2;
yy8:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 32) goto yy8;
	if (yych == '#') goto yy10;
yy9:
	YYCURSOR = YYMARKER;
	if (yyaccept <= 1) {
		if (yyaccept == 0) goto yy4;
		else goto yy2;
	} else {
		goto yy13;
	}
yy10:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy10;
		goto yy9;
	} else {
		if (yych <= ' ') goto yy10;
		if (yych == 'l') goto yy15;
		goto yy9;
	}
yy11:
	++YYCURSOR;
	{
					if (rFlag)
					{
						fatal("found standard 're2c' block while using -r flag");
					}
					if (bUsedYYMaxFill && bSinglePass)
					{
						fatal("found scanner block after YYMAXFILL declaration");
					}
					if (!DFlag)
					{
						out.write((const char*)(tok), (const char*)(&cursor[-7]) - (const char*)(tok));
					}
					tok = cursor;
					RETURN(Parse);
				}
yy12:
	yyaccept = 2;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '\n') goto yy16;
	if (yych == '\r') goto yy17;
yy13:
	{
					if (ignore_eoc)
					{
						if (ignore_cnt)
						{
							out << "\n" << sourceFileInfo;
						}
						ignore_eoc = false;
						ignore_cnt = 0;
					}
					else if (!DFlag)
					{
						out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok));
					}
					tok = pos = cursor;
					goto echo;
				}
yy14:
	yych = *++YYCURSOR;
	if (yych == '!') goto yy18;
	goto yy9;
yy15:
	yych = *++YYCURSOR;
	if (yych == 'i') goto yy19;
	goto yy9;
yy16:
	++YYCURSOR;
	{
					cline++;
					if (ignore_eoc)
					{
						if (ignore_cnt)
						{
							out << sourceFileInfo;
						}
						ignore_eoc = false;
						ignore_cnt = 0;
					}
					else if (!DFlag)
					{
						out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok));
					}
					tok = pos = cursor;
					goto echo;
				}
yy17:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy16;
	goto yy9;
yy18:
	yych = *++YYCURSOR;
	switch (yych) {
		case 'g': goto yy20;
		case 'i': goto yy21;
		case 'm': goto yy22;
		case 'r': goto yy23;
		case 't': goto yy24;
		case 'u': goto yy25;
		default: goto yy9;
	}
yy19:
	yych = *++YYCURSOR;
	if (yych == 'n') goto yy26;
	goto yy9;
yy20:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy27;
	goto yy9;
yy21:
	yych = *++YYCURSOR;
	if (yych == 'g') goto yy28;
	goto yy9;
yy22:
	yych = *++YYCURSOR;
	if (yych == 'a') goto yy29;
	goto yy9;
yy23:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy30;
	if (yych == 'u') goto yy31;
	goto yy9;
yy24:
	yych = *++YYCURSOR;
	if (yych == 'y') goto yy32;
	goto yy9;
yy25:
	yych = *++YYCURSOR;
	if (yych == 's') goto yy33;
	goto yy9;
yy26:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy34;
	goto yy9;
yy27:
	yych = *++YYCURSOR;
	if (yych == 't') goto yy35;
	goto yy9;
yy28:
	yych = *++YYCURSOR;
	if (yych == 'n') goto yy36;
	goto yy9;
yy29:
	yych = *++YYCURSOR;
	if (yych == 'x') goto yy37;
	goto yy9;
yy30:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy38;
	goto yy9;
yy31:
	yych = *++YYCURSOR;
	if (yych == 'l') goto yy39;
	goto yy9;
yy32:
	yych = *++YYCURSOR;
	if (yych == 'p') goto yy40;
	goto yy9;
yy33:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy41;
	goto yy9;
yy34:
	yych = *++YYCURSOR;
	if (yych <= '0') goto yy43;
	if (yych <= '9') goto yy9;
	goto yy43;
yy35:
	yych = *++YYCURSOR;
	if (yych == 's') goto yy44;
	goto yy9;
yy36:
	yych = *++YYCURSOR;
	if (yych == 'o') goto yy45;
	goto yy9;
yy37:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy46;
	goto yy9;
yy38:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy11;
	goto yy9;
yy39:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy47;
	goto yy9;
yy40:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy48;
	goto yy9;
yy41:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy49;
	goto yy9;
yy42:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy43:
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy42;
		goto yy9;
	} else {
		if (yych <= ' ') goto yy42;
		if (yych <= '0') goto yy9;
		if (yych <= '9') {
			YYCTXMARKER = YYCURSOR;
			goto yy50;
		}
		goto yy9;
	}
yy44:
	yych = *++YYCURSOR;
	if (yych == 't') goto yy51;
	goto yy9;
yy45:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy52;
	goto yy9;
yy46:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy53;
	goto yy9;
yy47:
	yych = *++YYCURSOR;
	if (yych == 's') goto yy54;
	goto yy9;
yy48:
	yych = *++YYCURSOR;
	if (yych == 's') goto yy55;
	goto yy9;
yy49:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy56;
	goto yy9;
yy50:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 64) goto yy50;
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy9;
		if (yych <= '\t') goto yy57;
		if (yych <= '\n') goto yy58;
		goto yy9;
	} else {
		if (yych <= '\r') goto yy59;
		if (yych == ' ') goto yy57;
		goto yy9;
	}
yy51:
	yych = *++YYCURSOR;
	if (yych == 'a') goto yy60;
	goto yy9;
yy52:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy61;
	goto yy9;
yy53:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy62;
	goto yy9;
yy54:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy63;
	goto yy9;
yy55:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy64;
	goto yy9;
yy56:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy65;
	goto yy9;
yy57:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy57;
		goto yy9;
	} else {
		if (yych <= ' ') goto yy57;
		if (yych == '"') goto yy66;
		goto yy9;
	}
yy58:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					set_sourceline(cursor);
					goto echo;
				}
yy59:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy58;
	goto yy9;
yy60:
	yych = *++YYCURSOR;
	if (yych == 't') goto yy67;
	goto yy9;
yy61:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy68;
	goto yy9;
yy62:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy69;
	goto yy9;
yy63:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy70;
	goto yy9;
yy64:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy71;
	goto yy9;
yy65:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy72;
	goto yy9;
yy66:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 128) goto yy66;
	if (yych <= '\n') goto yy9;
	if (yych <= '"') goto yy73;
	goto yy74;
yy67:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy75;
	goto yy9;
yy68:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy76;
	goto yy9;
yy69:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy77;
	goto yy9;
yy70:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy78;
	goto yy9;
yy71:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy79;
	goto yy9;
yy72:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy80;
	goto yy9;
yy73:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy58;
	if (yych == '\r') goto yy59;
	goto yy9;
yy74:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy9;
	goto yy66;
yy75:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy81;
	goto yy9;
yy76:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy82;
	goto yy9;
yy77:
	++YYCURSOR;
	{
					if (bUsedYYMaxFill)
					{
						fatal("cannot generate YYMAXFILL twice");
					}
					if (!DFlag)
					{
						out << "#define YYMAXFILL " << maxFill << std::endl;
					}
					tok = pos = cursor;
					ignore_eoc = true;
					bUsedYYMaxFill = true;
					goto echo;
				}
yy78:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy83;
	goto yy9;
yy79:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy84;
	goto yy9;
yy80:
	++YYCURSOR;
	{
					if (!rFlag)
					{
						fatal("found 'use:re2c' block without -r flag");
					}
					reuse();
					if (bUsedYYMaxFill && bSinglePass)
					{
						fatal("found scanner block after YYMAXFILL declaration");
					}
					if (!DFlag)
					{
						out.write((const char*)(tok), (const char*)(&cursor[-11]) - (const char*)(tok));
					}
					tok = cursor;
					RETURN(Reuse);
				}
yy81:
	yych = *++YYCURSOR;
	if (yych == 'r') goto yy85;
	goto yy9;
yy82:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy86;
	goto yy9;
yy83:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy87;
	goto yy9;
yy84:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy88;
	goto yy9;
yy85:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy89;
	goto yy9;
yy86:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy90;
	goto yy9;
yy87:
	++YYCURSOR;
	{
					if (rFlag)
					{
						mapCodeName.clear();
					}
					else
					{
						fatal("found 'rules:re2c' block without -r flag");
					}
					if (bUsedYYMaxFill && bSinglePass)
					{
						fatal("found scanner block after YYMAXFILL declaration");
					}
					tok = cursor;
					RETURN(Rules);
				}
yy88:
	++YYCURSOR;
	{
					if (bSinglePass)
					{
						fatal("cannot generate types inline in single pass mode");
					}
					tok = pos = cursor;
					ignore_eoc = true;
					if (bLastPass && !DFlag)
					{
						out << outputFileInfo;
						out << "\n";
						out << typesInline;
						out << "\n";
						out << sourceFileInfo;
					}
					goto echo;
				}
yy89:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy91;
	goto yy9;
yy90:
	++YYCURSOR;
	{
					tok = pos = cursor;
					ignore_eoc = true;
					goto echo;
				}
yy91:
	yych = *++YYCURSOR;
	if (yych != 'c') goto yy9;
	++YYCURSOR;
	{
					tok = pos = cursor;
					genGetStateGoto(out, topIndent, 0);
					ignore_eoc = true;
					goto echo;
				}
}

}

int Scanner::scan()
{
	char *cursor = cur;
	uint depth;

scan:
	tchar = cursor - pos;
	tline = cline;
	tok = cursor;
	if (iscfg == 1)
	{
		goto config;
	}
	else if (iscfg == 2)
	{
		goto value;
	}

{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[256] = {
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 116,   0, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		116, 112,  96, 112, 112, 112, 112,  80,
		112, 112, 112, 112, 112, 112, 112, 112,
		248, 248, 248, 248, 248, 248, 248, 248,
		248, 248, 112, 112, 112, 112, 112, 112,
		112, 120, 120, 120, 120, 120, 120, 120,
		120, 120, 120, 120, 120, 120, 120, 120,
		120, 120, 120, 120, 120, 120, 120, 120,
		120, 120, 120, 112,   0,  48, 112, 120,
		112, 120, 120, 120, 120, 120, 120, 120,
		120, 120, 120, 120, 120, 120, 120, 120,
		120, 120, 120, 120, 120, 120, 120, 120,
		120, 120, 120, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112,
		112, 112, 112, 112, 112, 112, 112, 112
	};
	if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 4) goto yy95;
	if (yych <= '9') {
		if (yych <= '&') {
			if (yych <= '\r') {
				if (yych <= 0x08) goto yy93;
				if (yych <= '\n') goto yy96;
				if (yych >= '\r') goto yy98;
			} else {
				if (yych <= '"') {
					if (yych >= '"') goto yy99;
				} else {
					if (yych == '%') goto yy101;
				}
			}
		} else {
			if (yych <= '+') {
				if (yych <= '\'') goto yy102;
				if (yych <= ')') goto yy104;
				if (yych <= '*') goto yy106;
				goto yy107;
			} else {
				if (yych <= '-') {
					if (yych <= ',') goto yy104;
				} else {
					if (yych <= '.') goto yy108;
					if (yych <= '/') goto yy109;
				}
			}
		}
	} else {
		if (yych <= '\\') {
			if (yych <= '>') {
				if (yych <= ':') goto yy110;
				if (yych == '<') goto yy111;
				goto yy104;
			} else {
				if (yych <= '@') {
					if (yych <= '?') goto yy107;
				} else {
					if (yych <= 'Z') goto yy112;
					if (yych <= '[') goto yy114;
					goto yy104;
				}
			}
		} else {
			if (yych <= 'q') {
				if (yych == '_') goto yy112;
				if (yych >= 'a') goto yy112;
			} else {
				if (yych <= 'z') {
					if (yych <= 'r') goto yy116;
					goto yy112;
				} else {
					if (yych <= '{') goto yy117;
					if (yych <= '|') goto yy104;
				}
			}
		}
	}
yy93:
	++YYCURSOR;
yy94:
	{
					std::ostringstream msg;
					msg << "unexpected character: ";
					prtChOrHex(msg, *tok);
					fatal(msg.str().c_str());
					goto scan;
				}
yy95:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 4) goto yy95;
	{
					goto scan;
				}
yy96:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy119;
	} else {
		if (yych <= ' ') goto yy119;
		if (yych == '#') goto yy121;
	}
yy97:
	{
					if (cursor == eof) RETURN(0);
					pos = cursor;
					cline++;
					goto scan;
				}
yy98:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy96;
	goto yy94;
yy99:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych != '\n') goto yy123;
yy100:
	{
					fatal("unterminated string constant (missing \")");
				}
yy101:
	yych = *++YYCURSOR;
	if (yych == '}') goto yy125;
	goto yy94;
yy102:
	yyaccept = 2;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych != '\n') goto yy127;
yy103:
	{
					fatal("unterminated string constant (missing ')");
				}
yy104:
	++YYCURSOR;
yy105:
	{
					RETURN(*tok);
				}
yy106:
	yych = *++YYCURSOR;
	if (yych == '/') goto yy125;
	{
					yylval.op = *tok;
					RETURN(STAR);
				}
yy107:
	++YYCURSOR;
	{
					yylval.op = *tok;
					RETURN(CLOSE);
				}
yy108:
	++YYCURSOR;
	{
					cur = cursor;
					yylval.regexp = mkDot();
					return RANGE;
				}
yy109:
	yych = *++YYCURSOR;
	if (yych == '*') goto yy129;
	if (yych == '/') goto yy130;
	goto yy105;
yy110:
	yych = *++YYCURSOR;
	if (yych == '=') goto yy131;
	goto yy94;
yy111:
	yyaccept = 3;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '!') goto yy132;
	if (yych == '>') goto yy133;
	goto yy105;
yy112:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy113:
	if (yybm[0+yych] & 8) goto yy112;
	if (yych <= ' ') {
		if (yych == '\t') {
			YYCTXMARKER = YYCURSOR;
			goto yy136;
		}
		if (yych <= 0x1F) goto yy134;
		YYCTXMARKER = YYCURSOR;
		goto yy136;
	} else {
		if (yych <= ',') {
			if (yych <= '+') goto yy134;
			YYCTXMARKER = YYCURSOR;
			goto yy137;
		} else {
			if (yych <= '<') goto yy134;
			if (yych <= '>') {
				YYCTXMARKER = YYCURSOR;
				goto yy137;
			}
			goto yy134;
		}
	}
yy114:
	yyaccept = 4;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '\n') goto yy115;
	if (yych == '^') goto yy141;
	goto yy139;
yy115:
	{
					fatal("unterminated range (missing ])");
				}
yy116:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy142;
	goto yy113;
yy117:
	yyaccept = 5;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= '@') {
		if (yych <= '/') {
			if (yych == ',') goto yy143;
		} else {
			if (yych <= '0') goto yy145;
			if (yych <= '9') goto yy146;
		}
	} else {
		if (yych <= '_') {
			if (yych <= 'Z') goto yy148;
			if (yych >= '_') goto yy148;
		} else {
			if (yych <= '`') goto yy118;
			if (yych <= 'z') goto yy148;
		}
	}
yy118:
	{
					depth = 1;
					goto code;
				}
yy119:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy119;
	} else {
		if (yych <= ' ') goto yy119;
		if (yych == '#') goto yy121;
	}
yy120:
	YYCURSOR = YYMARKER;
	if (yyaccept <= 3) {
		if (yyaccept <= 1) {
			if (yyaccept == 0) goto yy97;
			else goto yy100;
		} else {
			if (yyaccept == 2) goto yy103;
			else goto yy105;
		}
	} else {
		if (yyaccept <= 5) {
			if (yyaccept == 4) goto yy115;
			else goto yy118;
		} else {
			if (yyaccept == 6) goto yy144;
			else goto yy173;
		}
	}
yy121:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy121;
		goto yy120;
	} else {
		if (yych <= ' ') goto yy121;
		if (yych == 'l') goto yy149;
		goto yy120;
	}
yy122:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy123:
	if (yybm[0+yych] & 16) goto yy122;
	if (yych <= '\n') goto yy120;
	if (yych >= '#') goto yy124;
	++YYCURSOR;
	{
					cur = cursor;
					if (bCaseInsensitive || bCaseInverted)
					{
						yylval.regexp = strToCaseInsensitiveRE(token());
					}
					else
					{
						yylval.regexp = strToRE(token());
					}
					return STRING;
				}
yy124:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy120;
	goto yy122;
yy125:
	++YYCURSOR;
	{
					tok = cursor;
					RETURN(0);
				}
yy126:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy127:
	if (yybm[0+yych] & 32) goto yy126;
	if (yych <= '\n') goto yy120;
	if (yych >= '(') goto yy128;
	++YYCURSOR;
	{
					cur = cursor;
					if (bCaseInverted)
					{
						yylval.regexp = strToRE(token());
					}
					else
					{
						yylval.regexp = strToCaseInsensitiveRE(token());
					}
					return STRING;
				}
yy128:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy120;
	goto yy126;
yy129:
	++YYCURSOR;
	{
					depth = 1;
					goto comment;
				}
yy130:
	++YYCURSOR;
	{
				goto nextLine;
			}
yy131:
	yych = *++YYCURSOR;
	if (yych == '>') goto yy150;
	{
					cur = cursor;
					tok += 2; /* skip ":=" */
					depth = 0;
					goto code;
				}
yy132:
	++YYCURSOR;
	{
					RETURN(SETUP);
				}
yy133:
	yych = *++YYCURSOR;
	if (yych <= '9') {
		if (yych <= '\t') {
			if (yych <= 0x08) goto yy120;
			YYCTXMARKER = YYCURSOR;
			goto yy151;
		} else {
			if (yych == ' ') {
				YYCTXMARKER = YYCURSOR;
				goto yy151;
			}
			goto yy120;
		}
	} else {
		if (yych <= '=') {
			if (yych <= ':') {
				YYCTXMARKER = YYCURSOR;
				goto yy152;
			}
			if (yych <= '<') goto yy120;
			YYCTXMARKER = YYCURSOR;
			goto yy153;
		} else {
			if (yych == '{') {
				YYCTXMARKER = YYCURSOR;
				goto yy154;
			}
			goto yy120;
		}
	}
yy134:
	++YYCURSOR;
yy135:
	YYCURSOR -= 1;
	{
					if (!FFlag) {
						cur = cursor;
						yylval.symbol = Symbol::find(token());
						return ID;
					} else {
						/* Add one char in front and one behind instead of 's or "s */
						cur = cursor;
						if (bCaseInsensitive || bCaseInverted)
						{
							yylval.regexp = strToCaseInsensitiveRE(raw_token("\""));
						}
						else
						{
							yylval.regexp = strToRE(raw_token("\""));
						}
						return STRING;
					}
				}
yy136:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= ' ') {
		if (yych == '\t') goto yy136;
		if (yych <= 0x1F) goto yy155;
		goto yy136;
	} else {
		if (yych <= ',') {
			if (yych <= '+') goto yy155;
		} else {
			if (yych <= '<') goto yy155;
			if (yych >= '?') goto yy155;
		}
	}
yy137:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					cur = ptr > tok ? ptr - 1 : cursor;
					yylval.symbol = Symbol::find(token());
					return ID;
				}
yy138:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy139:
	if (yybm[0+yych] & 64) goto yy138;
	if (yych <= '\n') goto yy120;
	if (yych >= ']') goto yy140;
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy120;
	goto yy138;
yy140:
	++YYCURSOR;
	{
					cur = cursor;
					yylval.regexp = ranToRE(token());
					return RANGE;
				}
yy141:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= '[') {
		if (yych == '\n') goto yy120;
		goto yy141;
	} else {
		if (yych <= '\\') goto yy156;
		if (yych <= ']') goto yy157;
		goto yy141;
	}
yy142:
	yych = *++YYCURSOR;
	if (yych == '2') goto yy158;
	goto yy113;
yy143:
	++YYCURSOR;
yy144:
	{
					fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
				}
yy145:
	yych = *++YYCURSOR;
	if (yych == ',') goto yy159;
	goto yy147;
yy146:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
yy147:
	if (yybm[0+yych] & 128) goto yy146;
	if (yych == ',') goto yy161;
	if (yych == '}') goto yy160;
	goto yy120;
yy148:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= '^') {
		if (yych <= '9') {
			if (yych <= '/') goto yy120;
			goto yy148;
		} else {
			if (yych <= '@') goto yy120;
			if (yych <= 'Z') goto yy148;
			goto yy120;
		}
	} else {
		if (yych <= 'z') {
			if (yych == '`') goto yy120;
			goto yy148;
		} else {
			if (yych == '}') goto yy162;
			goto yy120;
		}
	}
yy149:
	yych = *++YYCURSOR;
	if (yych == 'i') goto yy163;
	goto yy120;
yy150:
	++YYCURSOR;
	YYCURSOR -= 2;
	{
					RETURN(*tok);
				}
yy151:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yych <= '9') {
		if (yych <= '\t') {
			if (yych <= 0x08) goto yy120;
			goto yy151;
		} else {
			if (yych == ' ') goto yy151;
			goto yy120;
		}
	} else {
		if (yych <= '=') {
			if (yych <= ':') goto yy152;
			if (yych <= '<') goto yy120;
			goto yy153;
		} else {
			if (yych == '{') goto yy154;
			goto yy120;
		}
	}
yy152:
	yych = *++YYCURSOR;
	if (yych == '=') goto yy154;
	goto yy120;
yy153:
	yych = *++YYCURSOR;
	if (yych != '>') goto yy120;
yy154:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					RETURN(NOCOND);
				}
yy155:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					cur = ptr > tok ? ptr - 1 : cursor;
					yylval.symbol = Symbol::find(token());
					return FFlag ? FID : ID;
				}
yy156:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy120;
	goto yy141;
yy157:
	++YYCURSOR;
	{
					cur = cursor;
					yylval.regexp = invToRE(token());
					return RANGE;
				}
yy158:
	yych = *++YYCURSOR;
	if (yych == 'c') goto yy164;
	goto yy113;
yy159:
	yyaccept = 6;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= '/') goto yy144;
	if (yych <= '9') goto yy165;
	if (yych == '}') goto yy166;
	goto yy144;
yy160:
	++YYCURSOR;
	{
					yylval.extop.minsize = atoi((char *)tok+1);
					yylval.extop.maxsize = atoi((char *)tok+1);
					RETURN(CLOSESIZE);
				}
yy161:
	yyaccept = 6;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= '/') goto yy144;
	if (yych <= '9') goto yy165;
	if (yych == '}') goto yy167;
	goto yy144;
yy162:
	++YYCURSOR;
	{
					if (!FFlag) {
						fatal("curly braces for names only allowed with -F switch");
					}
					cur = cursor;
					yylval.symbol = Symbol::find(token(1, cur - tok - 2));
					return ID;
				}
yy163:
	yych = *++YYCURSOR;
	if (yych == 'n') goto yy168;
	goto yy120;
yy164:
	yych = *++YYCURSOR;
	if (yych == ':') goto yy169;
	goto yy113;
yy165:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= '/') goto yy120;
	if (yych <= '9') goto yy165;
	if (yych == '}') goto yy170;
	goto yy120;
yy166:
	++YYCURSOR;
	{
					yylval.op = '*';
					RETURN(CLOSE);
				}
yy167:
	++YYCURSOR;
	{
					yylval.extop.minsize = atoi((char *)tok+1);
					yylval.extop.maxsize = -1;
					RETURN(CLOSESIZE);
				}
yy168:
	yych = *++YYCURSOR;
	if (yych == 'e') goto yy171;
	goto yy120;
yy169:
	yych = *++YYCURSOR;
	if (yych <= '^') {
		if (yych <= '@') goto yy135;
		if (yych <= 'Z') goto yy172;
		goto yy135;
	} else {
		if (yych == '`') goto yy135;
		if (yych <= 'z') goto yy172;
		goto yy135;
	}
yy170:
	++YYCURSOR;
	{
					yylval.extop.minsize = atoi((char *)tok+1);
					yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
					RETURN(CLOSESIZE);
				}
yy171:
	yych = *++YYCURSOR;
	if (yych <= '0') goto yy175;
	if (yych <= '9') goto yy120;
	goto yy175;
yy172:
	yyaccept = 7;
	YYMARKER = ++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yych <= '@') {
		if (yych <= '9') {
			if (yych >= '0') goto yy172;
		} else {
			if (yych <= ':') goto yy176;
			if (yych >= '@') goto yy177;
		}
	} else {
		if (yych <= '_') {
			if (yych <= 'Z') goto yy172;
			if (yych >= '_') goto yy172;
		} else {
			if (yych <= '`') goto yy173;
			if (yych <= 'z') goto yy172;
		}
	}
yy173:
	{
					cur = cursor;
					tok += 5; /* skip "re2c:" */
					iscfg = 1;
					yylval.str = new Str(token());
					return CONFIG;
				}
yy174:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy175:
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy174;
		goto yy120;
	} else {
		if (yych <= ' ') goto yy174;
		if (yych <= '0') goto yy120;
		if (yych <= '9') {
			YYCTXMARKER = YYCURSOR;
			goto yy178;
		}
		goto yy120;
	}
yy176:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= '^') {
		if (yych <= '@') goto yy120;
		if (yych <= 'Z') goto yy172;
		goto yy120;
	} else {
		if (yych == '`') goto yy120;
		if (yych <= 'z') goto yy172;
		goto yy120;
	}
yy177:
	yych = *++YYCURSOR;
	if (yych <= '^') {
		if (yych <= '@') goto yy120;
		if (yych <= 'Z') goto yy179;
		goto yy120;
	} else {
		if (yych == '`') goto yy120;
		if (yych <= 'z') goto yy179;
		goto yy120;
	}
yy178:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yych <= '\r') {
		if (yych <= '\t') {
			if (yych <= 0x08) goto yy120;
			goto yy180;
		} else {
			if (yych <= '\n') goto yy181;
			if (yych <= '\f') goto yy120;
			goto yy182;
		}
	} else {
		if (yych <= ' ') {
			if (yych <= 0x1F) goto yy120;
			goto yy180;
		} else {
			if (yych <= '/') goto yy120;
			if (yych <= '9') goto yy178;
			goto yy120;
		}
	}
yy179:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 'Z') {
		if (yych <= '/') goto yy173;
		if (yych <= '9') goto yy179;
		if (yych <= '@') goto yy173;
		goto yy179;
	} else {
		if (yych <= '_') {
			if (yych <= '^') goto yy173;
			goto yy179;
		} else {
			if (yych <= '`') goto yy173;
			if (yych <= 'z') goto yy179;
			goto yy173;
		}
	}
yy180:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy180;
		goto yy120;
	} else {
		if (yych <= ' ') goto yy180;
		if (yych == '"') goto yy183;
		goto yy120;
	}
yy181:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					set_sourceline(cursor);
					goto scan;
				}
yy182:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy181;
	goto yy120;
yy183:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	if (yych <= '!') {
		if (yych == '\n') goto yy120;
		goto yy183;
	} else {
		if (yych <= '"') goto yy184;
		if (yych == '\\') goto yy185;
		goto yy183;
	}
yy184:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy181;
	if (yych == '\r') goto yy182;
	goto yy120;
yy185:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy120;
	goto yy183;
}


code:

{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[256] = {
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96, 112,   0,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		112,  96,  64,  96,  96,  96,  96,  32,
		 96,  96,  96,  96,  96,  96,  96,  96,
		224, 224, 224, 224, 224, 224, 224, 224,
		224, 224,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,   0,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96,
		 96,  96,  96,  96,  96,  96,  96,  96
	};
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	if (yych <= '&') {
		if (yych <= '\n') {
			if (yych <= 0x00) goto yy187;
			if (yych <= '\t') goto yy188;
			goto yy190;
		} else {
			if (yych == '"') goto yy192;
			goto yy188;
		}
	} else {
		if (yych <= '{') {
			if (yych <= '\'') goto yy193;
			if (yych <= 'z') goto yy188;
			goto yy194;
		} else {
			if (yych == '}') goto yy195;
			goto yy188;
		}
	}
yy187:
	++YYCURSOR;
	{
					if (cursor == eof)
					{
						if (depth)
						{
							fatal("missing '}'");
						}
						RETURN(0);
					}
					goto code;
				}
yy188:
	++YYCURSOR;
yy189:
	{
					goto code;
				}
yy190:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= '\r') {
		if (yych <= '\t') {
			if (yych >= '\t') goto yy196;
		} else {
			if (yych <= '\n') goto yy198;
			if (yych >= '\r') goto yy198;
		}
	} else {
		if (yych <= ' ') {
			if (yych >= ' ') goto yy196;
		} else {
			if (yych == '#') goto yy199;
		}
	}
yy191:
	{
					if (depth == 0)
					{
						cur = cursor;
						tok += strspn(tok, " \t\r\n");
						while (cur > tok && strchr(" \t\r\n", cur[-1]))
						{
							--cur;
						}
						yylval.token = new Token(token(), sourceFileInfo.fname, tline);
						return CODE;
					}
					else if (cursor == eof)
					{
						fatal("missing '}'");
					}
					pos = cursor;
					cline++;
					goto code;
				}
yy192:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '\n') goto yy189;
	goto yy202;
yy193:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '\n') goto yy189;
	goto yy206;
yy194:
	++YYCURSOR;
	{
					if (depth == 0)
					{
						fatal("Curly braces are not allowed after ':='");
					}
					else
					{
						++depth;
					}
					goto code;
				}
yy195:
	++YYCURSOR;
	{
					if (depth == 0)
					{
						fatal("Curly braces are not allowed after ':='");
					}
					else if (--depth == 0)
					{
						cur = cursor;
						yylval.token = new Token(token(), sourceFileInfo.fname, tline);
						return CODE;
					}
					goto code;
				}
yy196:
	yyaccept = 2;
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy207;
	} else {
		if (yych <= ' ') goto yy207;
		if (yych == '#') goto yy199;
	}
yy197:
	YYCURSOR -= 1;
	{
					if (depth == 0)
					{
						goto code;
					}
					else if (cursor == eof)
					{
						fatal("missing '}'");
					}
					pos = cursor;
					cline++;
					goto code;
				}
yy198:
	++YYCURSOR;
	goto yy197;
yy199:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 16) goto yy199;
	if (yych == 'l') goto yy208;
yy200:
	YYCURSOR = YYMARKER;
	if (yyaccept <= 1) {
		if (yyaccept == 0) goto yy191;
		else goto yy189;
	} else {
		goto yy197;
	}
yy201:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy202:
	if (yybm[0+yych] & 32) goto yy201;
	if (yych <= '\n') goto yy200;
	if (yych >= '#') goto yy204;
yy203:
	++YYCURSOR;
	{
					goto code;
				}
yy204:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy200;
	goto yy201;
yy205:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy206:
	if (yybm[0+yych] & 64) goto yy205;
	if (yych <= '\n') goto yy200;
	if (yych <= '\'') goto yy203;
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy200;
	goto yy205;
yy207:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy207;
		goto yy200;
	} else {
		if (yych <= ' ') goto yy207;
		if (yych == '#') goto yy199;
		goto yy200;
	}
yy208:
	yych = *++YYCURSOR;
	if (yych != 'i') goto yy200;
	yych = *++YYCURSOR;
	if (yych != 'n') goto yy200;
	yych = *++YYCURSOR;
	if (yych != 'e') goto yy200;
	yych = *++YYCURSOR;
	if (yych <= '0') goto yy210;
	if (yych <= '9') goto yy200;
	goto yy210;
yy209:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy210:
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy209;
		goto yy200;
	} else {
		if (yych <= ' ') goto yy209;
		if (yych <= '0') goto yy200;
		if (yych >= ':') goto yy200;
		YYCTXMARKER = YYCURSOR;
	}
yy211:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 128) goto yy211;
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy200;
		if (yych <= '\t') goto yy212;
		if (yych <= '\n') goto yy213;
		goto yy200;
	} else {
		if (yych <= '\r') goto yy214;
		if (yych != ' ') goto yy200;
	}
yy212:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy212;
		goto yy200;
	} else {
		if (yych <= ' ') goto yy212;
		if (yych == '"') goto yy215;
		goto yy200;
	}
yy213:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					set_sourceline(cursor);
					goto code;
				}
yy214:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy213;
	goto yy200;
yy215:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	if (yych <= '!') {
		if (yych == '\n') goto yy200;
		goto yy215;
	} else {
		if (yych <= '"') goto yy216;
		if (yych == '\\') goto yy217;
		goto yy215;
	}
yy216:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy213;
	if (yych == '\r') goto yy214;
	goto yy200;
yy217:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy200;
	goto yy215;
}


comment:

{
	YYCTYPE yych;
	static const unsigned char yybm[256] = {
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 160,   0, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		160, 128,   0, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		192, 192, 192, 192, 192, 192, 192, 192,
		192, 192, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128,   0, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128
	};
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yych <= ')') {
		if (yych == '\n') goto yy220;
	} else {
		if (yych <= '*') goto yy222;
		if (yych == '/') goto yy223;
	}
	++YYCURSOR;
yy219:
	{
					if (cursor == eof)
					{
						RETURN(0);
					}
					goto comment;
				}
yy220:
	yych = *(YYMARKER = ++YYCURSOR);
	if (yybm[0+yych] & 32) goto yy224;
	if (yych == '#') goto yy226;
yy221:
	{
					if (cursor == eof)
					{
						RETURN(0);
					}
					tok = pos = cursor;
					cline++;
					goto comment;
				}
yy222:
	yych = *++YYCURSOR;
	if (yych == '/') goto yy227;
	goto yy219;
yy223:
	yych = *++YYCURSOR;
	if (yych == '*') goto yy228;
	goto yy219;
yy224:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 32) goto yy224;
	if (yych == '#') goto yy226;
yy225:
	YYCURSOR = YYMARKER;
	goto yy221;
yy226:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy226;
		goto yy225;
	} else {
		if (yych <= ' ') goto yy226;
		if (yych == 'l') goto yy229;
		goto yy225;
	}
yy227:
	++YYCURSOR;
	{
					if (--depth == 0)
					{
						goto scan;
					}
					else
					{
						goto comment;
					}
				}
yy228:
	++YYCURSOR;
	{
					++depth;
					fatal("ambiguous /* found");
					goto comment;
				}
yy229:
	yych = *++YYCURSOR;
	if (yych != 'i') goto yy225;
	yych = *++YYCURSOR;
	if (yych != 'n') goto yy225;
	yych = *++YYCURSOR;
	if (yych != 'e') goto yy225;
	yych = *++YYCURSOR;
	if (yych <= '0') goto yy231;
	if (yych <= '9') goto yy225;
	goto yy231;
yy230:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy231:
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy230;
		goto yy225;
	} else {
		if (yych <= ' ') goto yy230;
		if (yych <= '0') goto yy225;
		if (yych >= ':') goto yy225;
		YYCTXMARKER = YYCURSOR;
	}
yy232:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 64) goto yy232;
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy225;
		if (yych <= '\t') goto yy233;
		if (yych <= '\n') goto yy234;
		goto yy225;
	} else {
		if (yych <= '\r') goto yy235;
		if (yych != ' ') goto yy225;
	}
yy233:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy233;
		goto yy225;
	} else {
		if (yych <= ' ') goto yy233;
		if (yych == '"') goto yy236;
		goto yy225;
	}
yy234:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
	{
					set_sourceline(cursor);
					goto comment;
				}
yy235:
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy234;
	goto yy225;
yy236:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 128) goto yy236;
	if (yych <= '\n') goto yy225;
	if (yych >= '#') goto yy237;
	yych = *++YYCURSOR;
	if (yych == '\n') goto yy234;
	if (yych == '\r') goto yy235;
	goto yy225;
yy237:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy225;
	goto yy236;
}


nextLine:

{
	YYCTYPE yych;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy239;
	++YYCURSOR;
	{  if(cursor == eof) {
                  RETURN(0);
               }
               goto nextLine;
            }
yy239:
	++YYCURSOR;
	{ if(cursor == eof) {
                  RETURN(0);
               }
               tok = pos = cursor;
               cline++;
               goto scan;
            }
}


config:

{
	YYCTYPE yych;
	static const unsigned char yybm[256] = {
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0, 128,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		128,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0,
		  0,   0,   0,   0,   0,   0,   0,   0
	};
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 128) goto yy241;
	if (yych == '=') goto yy242;
	++YYCURSOR;
	{
					fatal("missing '='");
				}
yy241:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 128) goto yy241;
	{
					goto config;
				}
yy242:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\t') goto yy242;
	if (yych == ' ') goto yy242;
	{
					iscfg = 2;
					cur = cursor;
					RETURN('=');
				}
}


value:

{
	YYCTYPE yych;
	static const unsigned char yybm[256] = {
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 192,   0, 220, 220, 192, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		192, 220, 148, 220, 220, 220, 220,  76,
		220, 220, 220, 220, 220, 220, 220, 220,
		252, 252, 252, 252, 252, 252, 252, 252,
		252, 252, 220, 192, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220,   4, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220,
		220, 220, 220, 220, 220, 220, 220, 220
	};
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yych <= '&') {
		if (yych <= '\r') {
			if (yych <= 0x08) goto yy245;
			if (yych <= '\n') goto yy244;
			if (yych <= '\f') goto yy245;
		} else {
			if (yych <= ' ') {
				if (yych <= 0x1F) goto yy245;
			} else {
				if (yych == '"') goto yy247;
				goto yy245;
			}
		}
	} else {
		if (yych <= '/') {
			if (yych <= '\'') goto yy248;
			if (yych == '-') goto yy249;
			goto yy245;
		} else {
			if (yych <= '9') {
				if (yych <= '0') goto yy250;
				goto yy252;
			} else {
				if (yych != ';') goto yy245;
			}
		}
	}
yy244:
	{
					cur = cursor;
					yylval.str = new Str(token());
					iscfg = 0;
					return VALUE;
				}
yy245:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy246:
	if (yybm[0+yych] & 4) goto yy245;
	goto yy244;
yy247:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 8) goto yy247;
	if (yych <= ' ') {
		if (yych == '\n') goto yy244;
		goto yy253;
	} else {
		if (yych <= '"') goto yy245;
		if (yych <= ';') goto yy253;
		goto yy255;
	}
yy248:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 16) goto yy248;
	if (yych <= ' ') {
		if (yych == '\n') goto yy244;
		goto yy256;
	} else {
		if (yych <= '\'') goto yy245;
		if (yych <= ';') goto yy256;
		goto yy257;
	}
yy249:
	yych = *++YYCURSOR;
	if (yych <= '0') goto yy246;
	if (yych <= '9') goto yy252;
	goto yy246;
yy250:
	yych = *++YYCURSOR;
	if (yybm[0+yych] & 4) goto yy245;
yy251:
	{
					cur = cursor;
					yylval.number = atoi(token().to_string().c_str());
					iscfg = 0;
					return NUMBER;
				}
yy252:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 32) goto yy252;
	if (yych <= '\r') {
		if (yych <= 0x08) goto yy245;
		if (yych <= '\n') goto yy251;
		if (yych <= '\f') goto yy245;
		goto yy251;
	} else {
		if (yych <= ' ') {
			if (yych <= 0x1F) goto yy245;
			goto yy251;
		} else {
			if (yych == ';') goto yy251;
			goto yy245;
		}
	}
yy253:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 64) goto yy253;
	if (yych <= '\n') goto yy254;
	if (yych <= '"') goto yy258;
	goto yy259;
yy254:
	YYCURSOR = YYMARKER;
	goto yy244;
yy255:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= '\r') {
		if (yych <= '\t') {
			if (yych <= 0x08) goto yy247;
			goto yy253;
		} else {
			if (yych <= '\n') goto yy244;
			if (yych <= '\f') goto yy247;
			goto yy253;
		}
	} else {
		if (yych <= ' ') {
			if (yych <= 0x1F) goto yy247;
			goto yy253;
		} else {
			if (yych == ';') goto yy253;
			goto yy247;
		}
	}
yy256:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 128) goto yy256;
	if (yych <= '\n') goto yy254;
	if (yych <= '\'') goto yy258;
	goto yy260;
yy257:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych <= '\r') {
		if (yych <= '\t') {
			if (yych <= 0x08) goto yy248;
			goto yy256;
		} else {
			if (yych <= '\n') goto yy244;
			if (yych <= '\f') goto yy248;
			goto yy256;
		}
	} else {
		if (yych <= ' ') {
			if (yych <= 0x1F) goto yy248;
			goto yy256;
		} else {
			if (yych == ';') goto yy256;
			goto yy248;
		}
	}
yy258:
	++YYCURSOR;
	goto yy244;
yy259:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy254;
	goto yy253;
yy260:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy254;
	goto yy256;
}

}

void Scanner::set_sourceline(char *& cursor) 
{
sourceline:
	tok = cursor;

{
	YYCTYPE yych;
	static const unsigned char yybm[256] = {
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128,   0, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128,   0, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		192, 192, 192, 192, 192, 192, 192, 192,
		192, 192, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128,   0, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128,
		128, 128, 128, 128, 128, 128, 128, 128
	};
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if (yych <= '!') {
		if (yych == '\n') goto yy264;
	} else {
		if (yych <= '"') goto yy265;
		if (yych <= '0') goto yy262;
		if (yych <= '9') goto yy266;
	}
yy262:
	++YYCURSOR;
yy263:
	{
  					goto sourceline;
  				}
yy264:
	++YYCURSOR;
	{
  					if (cursor == eof)
  					{
						--cursor; 
					}
			  		else
			  		{
			  			pos = cursor; 
			  		}
			  		tok = cursor;
			  		return; 
				}
yy265:
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych == '\n') goto yy263;
	goto yy268;
yy266:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yybm[0+yych] & 64) goto yy266;
	{
					cur = cursor;
					cline = atoi(token().to_string().c_str());
					goto sourceline; 
				}
yy267:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy268:
	if (yybm[0+yych] & 128) goto yy267;
	if (yych <= '\n') goto yy269;
	if (yych <= '"') goto yy270;
	goto yy271;
yy269:
	YYCURSOR = YYMARKER;
	goto yy263;
yy270:
	++YYCURSOR;
	{
					cur = cursor;
					sourceFileInfo.set_fname(token(1, cur - tok - 2).to_string());
			  		goto sourceline; 
				}
yy271:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if (yych == '\n') goto yy269;
	goto yy267;
}

}

} // end namespace re2c
real_world/scanner_re2c_default.re:611:8: warning: rule matches empty string [-Wmatch-empty-string]
