/* Generated by re2c 0.13.5 on Wed Nov  9 18:49:22 2011 */
#line 1 "scanner.re"
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <sstream>
#include "scanner.h"
#include "re2c_parser.h"
#include "bootstrap_parser_tokens.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
{

#line 50 "scanner.re"


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:

#line 49 "<stdout>"
{
	YYCTYPE yych;
	unsigned int yyaccept = 0;

	if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
	yych = *YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy7;
	case '\n':	goto yy5;
	case '*':	goto yy4;
	case '/':	goto yy2;
	default:	goto yy9;
	}
yy2:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '*':	goto yy37;
	default:	goto yy3;
	}
yy3:
#line 220 "scanner.re"
	{
					goto echo;
				}
#line 75 "<stdout>"
yy4:
	yych = *++YYCURSOR;
	switch (yych) {
	case '/':	goto yy32;
	default:	goto yy3;
	}
yy5:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\t':
	case ' ':	goto yy10;
	case '#':	goto yy13;
	default:	goto yy6;
	}
yy6:
#line 196 "scanner.re"
	{
					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;
				}
#line 106 "<stdout>"
yy7:
	++YYCURSOR;
#line 209 "scanner.re"
	{
					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);
					}
				}
#line 121 "<stdout>"
yy9:
	yych = *++YYCURSOR;
	goto yy3;
yy10:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy10;
	case '#':	goto yy13;
	default:	goto yy12;
	}
yy12:
	YYCURSOR = YYMARKER;
	switch (yyaccept) {
	case 0: 	goto yy3;
	case 1: 	goto yy6;
	case 2: 	goto yy33;
	}
yy13:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy13;
	case 'l':	goto yy15;
	default:	goto yy12;
	}
yy15:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy16;
	default:	goto yy12;
	}
yy16:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy17;
	default:	goto yy12;
	}
yy17:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy18;
	default:	goto yy12;
	}
yy18:
	yych = *++YYCURSOR;
	switch (yych) {
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy12;
	default:	goto yy20;
	}
yy19:
	YYCTXMARKER = YYCURSOR + 1;
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy20:
	switch (yych) {
	case '\t':
	case ' ':	goto yy19;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy21;
	default:	goto yy12;
	}
yy21:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy23;
	case '\n':	goto yy25;
	case '\r':	goto yy27;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy21;
	default:	goto yy12;
	}
yy23:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy23;
	case '"':	goto yy28;
	default:	goto yy12;
	}
yy25:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 192 "scanner.re"
	{
					set_sourceline(cursor);
					goto echo;
				}
#line 243 "<stdout>"
yy27:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy25;
	default:	goto yy12;
	}
yy28:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy12;
	case '"':	goto yy31;
	case '\\':	goto yy30;
	default:	goto yy28;
	}
yy30:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy12;
	default:	goto yy28;
	}
yy31:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy25;
	case '\r':	goto yy27;
	default:	goto yy12;
	}
yy32:
	yyaccept = 2;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy35;
	case '\r':	goto yy34;
	default:	goto yy33;
	}
yy33:
#line 175 "scanner.re"
	{
					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;
				}
#line 302 "<stdout>"
yy34:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy35;
	default:	goto yy12;
	}
yy35:
	++YYCURSOR;
#line 157 "scanner.re"
	{
					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;
				}
#line 330 "<stdout>"
yy37:
	yych = *++YYCURSOR;
	switch (yych) {
	case '!':	goto yy38;
	default:	goto yy12;
	}
yy38:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'g':	goto yy41;
	case 'i':	goto yy40;
	case 'm':	goto yy42;
	case 'r':	goto yy44;
	case 't':	goto yy39;
	case 'u':	goto yy43;
	default:	goto yy12;
	}
yy39:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy99;
	default:	goto yy12;
	}
yy40:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'g':	goto yy88;
	default:	goto yy12;
	}
yy41:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy75;
	default:	goto yy12;
	}
yy42:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy67;
	default:	goto yy12;
	}
yy43:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy59;
	default:	goto yy12;
	}
yy44:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy45;
	case 'u':	goto yy46;
	default:	goto yy12;
	}
yy45:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy56;
	default:	goto yy12;
	}
yy46:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy47;
	default:	goto yy12;
	}
yy47:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy48;
	default:	goto yy12;
	}
yy48:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy49;
	default:	goto yy12;
	}
yy49:
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy50;
	default:	goto yy12;
	}
yy50:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy51;
	default:	goto yy12;
	}
yy51:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy52;
	default:	goto yy12;
	}
yy52:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy53;
	default:	goto yy12;
	}
yy53:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy54;
	default:	goto yy12;
	}
yy54:
	++YYCURSOR;
#line 82 "scanner.re"
	{
					if (rFlag)
					{
						mapCodeName.clear();
					}
					else
					{
						fatal("found 'reules:re2c' block without -r flag");
					}
					if (bUsedYYMaxFill && bSinglePass)
					{
						fatal("found scanner block after YYMAXFILL declaration");
					}
					tok = cursor;
					RETURN(Rules);
				}
#line 458 "<stdout>"
yy56:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy57;
	default:	goto yy12;
	}
yy57:
	++YYCURSOR;
#line 66 "scanner.re"
	{
					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);
				}
#line 484 "<stdout>"
yy59:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy60;
	default:	goto yy12;
	}
yy60:
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy61;
	default:	goto yy12;
	}
yy61:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy62;
	default:	goto yy12;
	}
yy62:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy63;
	default:	goto yy12;
	}
yy63:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy64;
	default:	goto yy12;
	}
yy64:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy65;
	default:	goto yy12;
	}
yy65:
	++YYCURSOR;
#line 98 "scanner.re"
	{
					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);
				}
#line 541 "<stdout>"
yy67:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'x':	goto yy68;
	default:	goto yy12;
	}
yy68:
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy69;
	default:	goto yy12;
	}
yy69:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy70;
	default:	goto yy12;
	}
yy70:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy71;
	default:	goto yy12;
	}
yy71:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy72;
	default:	goto yy12;
	}
yy72:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy73;
	default:	goto yy12;
	}
yy73:
	++YYCURSOR;
#line 115 "scanner.re"
	{
					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;
				}
#line 595 "<stdout>"
yy75:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy76;
	default:	goto yy12;
	}
yy76:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy77;
	default:	goto yy12;
	}
yy77:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy78;
	default:	goto yy12;
	}
yy78:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy79;
	default:	goto yy12;
	}
yy79:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy80;
	default:	goto yy12;
	}
yy80:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy81;
	default:	goto yy12;
	}
yy81:
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy82;
	default:	goto yy12;
	}
yy82:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy83;
	default:	goto yy12;
	}
yy83:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy84;
	default:	goto yy12;
	}
yy84:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy85;
	default:	goto yy12;
	}
yy85:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy86;
	default:	goto yy12;
	}
yy86:
	++YYCURSOR;
#line 129 "scanner.re"
	{
					tok = pos = cursor;
					genGetStateGoto(out, topIndent, 0);
					ignore_eoc = true;
					goto echo;
				}
#line 671 "<stdout>"
yy88:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy89;
	default:	goto yy12;
	}
yy89:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy90;
	default:	goto yy12;
	}
yy90:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy91;
	default:	goto yy12;
	}
yy91:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy92;
	default:	goto yy12;
	}
yy92:
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy93;
	default:	goto yy12;
	}
yy93:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy94;
	default:	goto yy12;
	}
yy94:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy95;
	default:	goto yy12;
	}
yy95:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy96;
	default:	goto yy12;
	}
yy96:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy97;
	default:	goto yy12;
	}
yy97:
	++YYCURSOR;
#line 135 "scanner.re"
	{
					tok = pos = cursor;
					ignore_eoc = true;
					goto echo;
				}
#line 734 "<stdout>"
yy99:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy100;
	default:	goto yy12;
	}
yy100:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy101;
	default:	goto yy12;
	}
yy101:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy102;
	default:	goto yy12;
	}
yy102:
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy103;
	default:	goto yy12;
	}
yy103:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy104;
	default:	goto yy12;
	}
yy104:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy105;
	default:	goto yy12;
	}
yy105:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy106;
	default:	goto yy12;
	}
yy106:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy107;
	default:	goto yy12;
	}
yy107:
	++YYCURSOR;
#line 140 "scanner.re"
	{
					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;
				}
#line 803 "<stdout>"
}
#line 223 "scanner.re"

}

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;
	}

#line 827 "<stdout>"
{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy133;
	case '\n':	goto yy135;
	case '\r':	goto yy137;
	case '"':	goto yy119;
	case '\'':	goto yy121;
	case '(':
	case ')':
	case ',':
	case ';':
	case '=':
	case '>':
	case '\\':
	case '|':	goto yy126;
	case '*':	goto yy117;
	case '+':
	case '?':	goto yy127;
	case '.':	goto yy131;
	case '/':	goto yy115;
	case ':':	goto yy113;
	case '<':	goto yy125;
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy130;
	case '[':	goto yy123;
	case 'r':	goto yy129;
	case '{':	goto yy111;
	default:	goto yy138;
	}
yy111:
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case ',':	goto yy229;
	case '0':	goto yy226;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy227;
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy224;
	default:	goto yy112;
	}
yy112:
#line 244 "scanner.re"
	{
					depth = 1;
					goto code;
				}
#line 988 "<stdout>"
yy113:
	YYCTXMARKER = YYCURSOR + 1;
	++YYCURSOR;
	switch ((yych = *YYCURSOR)) {
	case '=':	goto yy220;
	default:	goto yy114;
	}
yy114:
#line 445 "scanner.re"
	{
					std::ostringstream msg;
					msg << "unexpected character: ";
					prtChOrHex(msg, *tok);
					fatal(msg.str().c_str());
					goto scan;
				}
#line 1005 "<stdout>"
yy115:
	++YYCURSOR;
	switch ((yych = *YYCURSOR)) {
	case '*':	goto yy218;
	default:	goto yy116;
	}
yy116:
#line 323 "scanner.re"
	{
    switch (*tok) {
	case '<': RETURN(LESS_THAN);
	case '>': RETURN(GREATER_THAN);
	case ',': RETURN(COMMA);
	case '(': RETURN(LEFT_PAREN);
	case ')': RETURN(RIGHT_PAREN);
	case '|': RETURN(VERTICAL_BAR);
	case '=': RETURN(EQUALS);
	case ';': RETURN(SEMICOLON);
	case '/': RETURN(SLASH);
	case '\\': RETURN(BACKSLASH);
    }
}
#line 1028 "<stdout>"
yy117:
	++YYCURSOR;
	switch ((yych = *YYCURSOR)) {
	case '/':	goto yy216;
	default:	goto yy118;
	}
yy118:
#line 338 "scanner.re"
	{
					yylval.op = *tok;
					RETURN(STAR);
				}
#line 1041 "<stdout>"
yy119:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy120;
	default:	goto yy212;
	}
yy120:
#line 294 "scanner.re"
	{
					fatal("unterminated string constant (missing \")");
				}
#line 1054 "<stdout>"
yy121:
	yyaccept = 2;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy122;
	default:	goto yy207;
	}
yy122:
#line 297 "scanner.re"
	{
					fatal("unterminated string constant (missing ')");
				}
#line 1067 "<stdout>"
yy123:
	yyaccept = 3;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy124;
	case '^':	goto yy198;
	default:	goto yy197;
	}
yy124:
#line 313 "scanner.re"
	{
					fatal("unterminated range (missing ])");
				}
#line 1081 "<stdout>"
yy125:
	yyaccept = 4;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '!':	goto yy187;
	case '>':	goto yy189;
	default:	goto yy116;
	}
yy126:
	yych = *++YYCURSOR;
	goto yy116;
yy127:
	++YYCURSOR;
#line 342 "scanner.re"
	{
					yylval.op = *tok;
					RETURN(CLOSE);
				}
#line 1100 "<stdout>"
yy129:
	YYCTXMARKER = YYCURSOR + 1;
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy176;
	default:	goto yy165;
	}
yy130:
	YYCTXMARKER = YYCURSOR + 1;
	yych = *++YYCURSOR;
	goto yy165;
yy131:
	++YYCURSOR;
#line 423 "scanner.re"
	{
					cur = cursor;
					yylval.regexp = mkDot();
					return RANGE;
				}
#line 1120 "<stdout>"
yy133:
	++YYCURSOR;
	yych = *YYCURSOR;
	goto yy163;
yy134:
#line 429 "scanner.re"
	{
					goto scan;
				}
#line 1130 "<stdout>"
yy135:
	yyaccept = 5;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\t':
	case ' ':	goto yy140;
	case '#':	goto yy143;
	default:	goto yy136;
	}
yy136:
#line 438 "scanner.re"
	{
					if (cursor == eof) RETURN(0);
					pos = cursor;
					cline++;
					goto scan;
				}
#line 1148 "<stdout>"
yy137:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy139;
	default:	goto yy114;
	}
yy138:
	yych = *++YYCURSOR;
	goto yy114;
yy139:
	yyaccept = 5;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\t':
	case ' ':	goto yy140;
	case '#':	goto yy143;
	default:	goto yy136;
	}
yy140:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy140;
	case '#':	goto yy143;
	default:	goto yy142;
	}
yy142:
	YYCURSOR = YYMARKER;
	switch (yyaccept) {
	case 0: 	goto yy112;
	case 1: 	goto yy120;
	case 2: 	goto yy122;
	case 3: 	goto yy124;
	case 4: 	goto yy116;
	case 5: 	goto yy136;
	case 6: 	goto yy182;
	case 7: 	goto yy230;
	}
yy143:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy143;
	case 'l':	goto yy145;
	default:	goto yy142;
	}
yy145:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy146;
	default:	goto yy142;
	}
yy146:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy147;
	default:	goto yy142;
	}
yy147:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy148;
	default:	goto yy142;
	}
yy148:
	yych = *++YYCURSOR;
	switch (yych) {
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy142;
	default:	goto yy150;
	}
yy149:
	YYCTXMARKER = YYCURSOR + 1;
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy150:
	switch (yych) {
	case '\t':
	case ' ':	goto yy149;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy151;
	default:	goto yy142;
	}
yy151:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy153;
	case '\n':	goto yy155;
	case '\r':	goto yy157;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy151;
	default:	goto yy142;
	}
yy153:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy153;
	case '"':	goto yy158;
	default:	goto yy142;
	}
yy155:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 433 "scanner.re"
	{
					set_sourceline(cursor);
					goto scan;
				}
#line 1290 "<stdout>"
yy157:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy155;
	default:	goto yy142;
	}
yy158:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	case '"':	goto yy161;
	case '\\':	goto yy160;
	default:	goto yy158;
	}
yy160:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	default:	goto yy158;
	}
yy161:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy155;
	case '\r':	goto yy157;
	default:	goto yy142;
	}
yy162:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy163:
	switch (yych) {
	case '\t':
	case ' ':	goto yy162;
	default:	goto yy134;
	}
yy164:
	YYCTXMARKER = YYCURSOR + 1;
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
yy165:
	switch (yych) {
	case '\t':
	case ' ':	goto yy168;
	case ',':
	case '=':
	case '>':	goto yy169;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy164;
	default:	goto yy167;
	}
yy166:
	YYCURSOR = YYCTXMARKER;
#line 403 "scanner.re"
	{
					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;
					}
				}
#line 1431 "<stdout>"
yy167:
	yych = *++YYCURSOR;
	goto yy166;
yy168:
	yych = *++YYCURSOR;
	goto yy174;
yy169:
	++YYCURSOR;
yy170:
	YYCURSOR = YYCTXMARKER;
#line 397 "scanner.re"
	{
					cur = ptr > tok ? ptr - 1 : cursor;
					yylval.symbol = Symbol::find(token());
					return ID;
				}
#line 1448 "<stdout>"
yy171:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 391 "scanner.re"
	{
					cur = ptr > tok ? ptr - 1 : cursor;
					yylval.symbol = Symbol::find(token());
					return FFlag ? FID : ID;
				}
#line 1458 "<stdout>"
yy173:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy174:
	switch (yych) {
	case '\t':
	case ' ':	goto yy173;
	case ',':
	case '=':
	case '>':	goto yy175;
	default:	goto yy171;
	}
yy175:
	yych = *++YYCURSOR;
	goto yy170;
yy176:
	YYCTXMARKER = YYCURSOR + 1;
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy177;
	default:	goto yy165;
	}
yy177:
	YYCTXMARKER = YYCURSOR + 1;
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy178;
	default:	goto yy165;
	}
yy178:
	YYCTXMARKER = YYCURSOR + 1;
	yych = *++YYCURSOR;
	switch (yych) {
	case ':':	goto yy179;
	default:	goto yy165;
	}
yy179:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy180;
	default:	goto yy166;
	}
yy180:
	yyaccept = 6;
	YYMARKER = ++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy180;
	case ':':	goto yy184;
	case '@':	goto yy183;
	default:	goto yy182;
	}
yy182:
#line 383 "scanner.re"
	{
					cur = cursor;
					tok += 5; /* skip "re2c:" */
					iscfg = 1;
					yylval.str = new Str(token());
					return CONFIG;
				}
#line 1636 "<stdout>"
yy183:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy185;
	default:	goto yy142;
	}
yy184:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy180;
	default:	goto yy142;
	}
yy185:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy185;
	default:	goto yy182;
	}
yy187:
	++YYCURSOR;
#line 320 "scanner.re"
	{
					RETURN(SETUP);
			}
#line 1831 "<stdout>"
yy189:
	YYCTXMARKER = YYCURSOR + 1;
	yych = *++YYCURSOR;
	goto yy191;
yy190:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
yy191:
	switch (yych) {
	case '\t':
	case ' ':	goto yy190;
	case ':':	goto yy195;
	case '=':	goto yy194;
	case '{':	goto yy192;
	default:	goto yy142;
	}
yy192:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 317 "scanner.re"
	{
					RETURN(NOCOND);
				}
#line 1856 "<stdout>"
yy194:
	yych = *++YYCURSOR;
	switch (yych) {
	case '>':	goto yy192;
	default:	goto yy142;
	}
yy195:
	yych = *++YYCURSOR;
	switch (yych) {
	case '=':	goto yy192;
	default:	goto yy142;
	}
yy196:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy197:
	switch (yych) {
	case '\n':	goto yy142;
	case '\\':	goto yy200;
	case ']':	goto yy201;
	default:	goto yy196;
	}
yy198:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	case '\\':	goto yy203;
	case ']':	goto yy204;
	default:	goto yy198;
	}
yy200:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	default:	goto yy196;
	}
yy201:
	++YYCURSOR;
#line 307 "scanner.re"
	{
					cur = cursor;
					yylval.regexp = ranToRE(token());
					return RANGE;
				}
#line 1906 "<stdout>"
yy203:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	default:	goto yy198;
	}
yy204:
	++YYCURSOR;
#line 301 "scanner.re"
	{
					cur = cursor;
					yylval.regexp = invToRE(token());
					return RANGE;
				}
#line 1923 "<stdout>"
yy206:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy207:
	switch (yych) {
	case '\n':	goto yy142;
	case '\'':	goto yy209;
	case '\\':	goto yy208;
	default:	goto yy206;
	}
yy208:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	default:	goto yy206;
	}
yy209:
	++YYCURSOR;
#line 281 "scanner.re"
	{
					cur = cursor;
					if (bCaseInverted)
					{
						yylval.regexp = strToRE(token());
					}
					else
					{
						yylval.regexp = strToCaseInsensitiveRE(token());
					}
					return STRING;
				}
#line 1958 "<stdout>"
yy211:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy212:
	switch (yych) {
	case '\n':	goto yy142;
	case '"':	goto yy214;
	case '\\':	goto yy213;
	default:	goto yy211;
	}
yy213:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy142;
	default:	goto yy211;
	}
yy214:
	++YYCURSOR;
#line 268 "scanner.re"
	{
					cur = cursor;
					if (bCaseInsensitive || bCaseInverted)
					{
						yylval.regexp = strToCaseInsensitiveRE(token());
					}
					else
					{
						yylval.regexp = strToRE(token());
					}
					return STRING;
				}
#line 1993 "<stdout>"
yy216:
	++YYCURSOR;
#line 263 "scanner.re"
	{
					tok = cursor;
					RETURN(0);
				}
#line 2001 "<stdout>"
yy218:
	++YYCURSOR;
#line 258 "scanner.re"
	{
					depth = 1;
					goto comment;
				}
#line 2009 "<stdout>"
yy220:
	++YYCURSOR;
	switch ((yych = *YYCURSOR)) {
	case '>':	goto yy222;
	default:	goto yy221;
	}
yy221:
#line 251 "scanner.re"
	{
					cur = cursor;
					tok += 2; /* skip ":=" */
					depth = 0;
					goto code;
				}
#line 2024 "<stdout>"
yy222:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 249 "scanner.re"
	{ RETURN(COLON); }
#line 2030 "<stdout>"
yy224:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
	case 'A':
	case 'B':
	case 'C':
	case 'D':
	case 'E':
	case 'F':
	case 'G':
	case 'H':
	case 'I':
	case 'J':
	case 'K':
	case 'L':
	case 'M':
	case 'N':
	case 'O':
	case 'P':
	case 'Q':
	case 'R':
	case 'S':
	case 'T':
	case 'U':
	case 'V':
	case 'W':
	case 'X':
	case 'Y':
	case 'Z':
	case '_':
	case 'a':
	case 'b':
	case 'c':
	case 'd':
	case 'e':
	case 'f':
	case 'g':
	case 'h':
	case 'i':
	case 'j':
	case 'k':
	case 'l':
	case 'm':
	case 'n':
	case 'o':
	case 'p':
	case 'q':
	case 'r':
	case 's':
	case 't':
	case 'u':
	case 'v':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy224;
	case '}':	goto yy243;
	default:	goto yy142;
	}
yy226:
	yych = *++YYCURSOR;
	switch (yych) {
	case ',':	goto yy240;
	default:	goto yy228;
	}
yy227:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
yy228:
	switch (yych) {
	case ',':	goto yy233;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy227;
	case '}':	goto yy231;
	default:	goto yy142;
	}
yy229:
	++YYCURSOR;
yy230:
#line 370 "scanner.re"
	{
					fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
				}
#line 2135 "<stdout>"
yy231:
	++YYCURSOR;
#line 352 "scanner.re"
	{
					yylval.extop.minsize = atoi((char *)tok+1);
					yylval.extop.maxsize = atoi((char *)tok+1);
					RETURN(CLOSESIZE);
				}
#line 2144 "<stdout>"
yy233:
	yyaccept = 7;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy236;
	case '}':	goto yy234;
	default:	goto yy230;
	}
yy234:
	++YYCURSOR;
#line 364 "scanner.re"
	{
					yylval.extop.minsize = atoi((char *)tok+1);
					yylval.extop.maxsize = -1;
					RETURN(CLOSESIZE);
				}
#line 2170 "<stdout>"
yy236:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy236;
	case '}':	goto yy238;
	default:	goto yy142;
	}
yy238:
	++YYCURSOR;
#line 358 "scanner.re"
	{
					yylval.extop.minsize = atoi((char *)tok+1);
					yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
					RETURN(CLOSESIZE);
				}
#line 2197 "<stdout>"
yy240:
	yyaccept = 7;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy236;
	case '}':	goto yy241;
	default:	goto yy230;
	}
yy241:
	++YYCURSOR;
#line 347 "scanner.re"
	{
					yylval.op = '*';
					RETURN(CLOSE);
				}
#line 2222 "<stdout>"
yy243:
	++YYCURSOR;
#line 374 "scanner.re"
	{
					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;
				}
#line 2234 "<stdout>"
}
#line 452 "scanner.re"


code:

#line 2241 "<stdout>"
{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy253;
	case '\n':	goto yy251;
	case '"':	goto yy257;
	case '\'':	goto yy258;
	case '{':	goto yy249;
	case '}':	goto yy247;
	default:	goto yy255;
	}
yy247:
	++YYCURSOR;
#line 456 "scanner.re"
	{
					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;
				}
#line 2272 "<stdout>"
yy249:
	++YYCURSOR;
#line 469 "scanner.re"
	{
					if (depth == 0)
					{
						fatal("Curly braces are not allowed after ':='");
					}
					else
					{
						++depth;
					}
					goto code;
				}
#line 2287 "<stdout>"
yy251:
	YYCTXMARKER = YYCURSOR + 1;
	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\t':
	case ' ':	goto yy266;
	case '\n':
	case '\r':	goto yy268;
	case '#':	goto yy269;
	default:	goto yy252;
	}
yy252:
#line 497 "scanner.re"
	{
					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;
				}
#line 2322 "<stdout>"
yy253:
	++YYCURSOR;
#line 517 "scanner.re"
	{
					if (cursor == eof)
					{
						if (depth)
						{
							fatal("missing '}'");
						}
						RETURN(0);
					}
					goto code;
				}
#line 2337 "<stdout>"
yy255:
	++YYCURSOR;
yy256:
#line 528 "scanner.re"
	{
					goto code;
				}
#line 2345 "<stdout>"
yy257:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy256;
	default:	goto yy264;
	}
yy258:
	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy256;
	default:	goto yy260;
	}
yy259:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy260:
	switch (yych) {
	case '\n':	goto yy261;
	case '\'':	goto yy255;
	case '\\':	goto yy262;
	default:	goto yy259;
	}
yy261:
	YYCURSOR = YYMARKER;
	switch (yyaccept) {
	case 0: 	goto yy252;
	case 1: 	goto yy256;
	case 2: 	goto yy267;
	}
yy262:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy261;
	default:	goto yy259;
	}
yy263:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy264:
	switch (yych) {
	case '\n':	goto yy261;
	case '"':	goto yy255;
	case '\\':	goto yy265;
	default:	goto yy263;
	}
yy265:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy261;
	default:	goto yy263;
	}
yy266:
	yyaccept = 2;
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\t':
	case ' ':	goto yy288;
	case '#':	goto yy269;
	default:	goto yy267;
	}
yy267:
	YYCURSOR = YYCTXMARKER;
#line 484 "scanner.re"
	{
					if (depth == 0)
					{
						goto code;
					}
					else if (cursor == eof)
					{
						fatal("missing '}'");
					}
					pos = cursor;
					cline++;
					goto code;
				}
#line 2430 "<stdout>"
yy268:
	yych = *++YYCURSOR;
	goto yy267;
yy269:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy269;
	case 'l':	goto yy271;
	default:	goto yy261;
	}
yy271:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy272;
	default:	goto yy261;
	}
yy272:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy273;
	default:	goto yy261;
	}
yy273:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy274;
	default:	goto yy261;
	}
yy274:
	yych = *++YYCURSOR;
	switch (yych) {
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy261;
	default:	goto yy276;
	}
yy275:
	YYCTXMARKER = YYCURSOR + 1;
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy276:
	switch (yych) {
	case '\t':
	case ' ':	goto yy275;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy277;
	default:	goto yy261;
	}
yy277:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy279;
	case '\n':	goto yy281;
	case '\r':	goto yy283;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy277;
	default:	goto yy261;
	}
yy279:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy279;
	case '"':	goto yy284;
	default:	goto yy261;
	}
yy281:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 480 "scanner.re"
	{
					set_sourceline(cursor);
					goto code;
				}
#line 2535 "<stdout>"
yy283:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy281;
	default:	goto yy261;
	}
yy284:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy261;
	case '"':	goto yy287;
	case '\\':	goto yy286;
	default:	goto yy284;
	}
yy286:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy261;
	default:	goto yy284;
	}
yy287:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy281;
	case '\r':	goto yy283;
	default:	goto yy261;
	}
yy288:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy288;
	case '#':	goto yy269;
	default:	goto yy261;
	}
}
#line 531 "scanner.re"


comment:

#line 2583 "<stdout>"
{
	YYCTYPE yych;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy295;
	case '*':	goto yy292;
	case '/':	goto yy294;
	default:	goto yy297;
	}
yy292:
	++YYCURSOR;
	switch ((yych = *YYCURSOR)) {
	case '/':	goto yy322;
	default:	goto yy293;
	}
yy293:
#line 563 "scanner.re"
	{
					if (cursor == eof)
					{
						RETURN(0);
					}
					goto comment;
				}
#line 2609 "<stdout>"
yy294:
	yych = *++YYCURSOR;
	switch (yych) {
	case '*':	goto yy320;
	default:	goto yy293;
	}
yy295:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\t':
	case ' ':	goto yy298;
	case '#':	goto yy301;
	default:	goto yy296;
	}
yy296:
#line 554 "scanner.re"
	{
					if (cursor == eof)
					{
						RETURN(0);
					}
					tok = pos = cursor;
					cline++;
					goto comment;
				}
#line 2635 "<stdout>"
yy297:
	yych = *++YYCURSOR;
	goto yy293;
yy298:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy298;
	case '#':	goto yy301;
	default:	goto yy300;
	}
yy300:
	YYCURSOR = YYMARKER;
	goto yy296;
yy301:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy301;
	case 'l':	goto yy303;
	default:	goto yy300;
	}
yy303:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy304;
	default:	goto yy300;
	}
yy304:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy305;
	default:	goto yy300;
	}
yy305:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy306;
	default:	goto yy300;
	}
yy306:
	yych = *++YYCURSOR;
	switch (yych) {
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy300;
	default:	goto yy308;
	}
yy307:
	YYCTXMARKER = YYCURSOR + 1;
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy308:
	switch (yych) {
	case '\t':
	case ' ':	goto yy307;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy309;
	default:	goto yy300;
	}
yy309:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy311;
	case '\n':	goto yy313;
	case '\r':	goto yy315;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy309;
	default:	goto yy300;
	}
yy311:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy311;
	case '"':	goto yy316;
	default:	goto yy300;
	}
yy313:
	++YYCURSOR;
	YYCURSOR = YYCTXMARKER;
#line 550 "scanner.re"
	{
					set_sourceline(cursor);
					goto comment;
				}
#line 2753 "<stdout>"
yy315:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy313;
	default:	goto yy300;
	}
yy316:
	++YYCURSOR;
	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy300;
	case '"':	goto yy319;
	case '\\':	goto yy318;
	default:	goto yy316;
	}
yy318:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy300;
	default:	goto yy316;
	}
yy319:
	yych = *++YYCURSOR;
	switch (yych) {
	case '\n':	goto yy313;
	case '\r':	goto yy315;
	default:	goto yy300;
	}
yy320:
	++YYCURSOR;
#line 545 "scanner.re"
	{
					++depth;
					fatal("ambiguous /* found");
					goto comment;
				}
#line 2793 "<stdout>"
yy322:
	++YYCURSOR;
#line 535 "scanner.re"
	{
					if (--depth == 0)
					{
						goto scan;
					}
					else
					{
						goto comment;
					}
				}
#line 2807 "<stdout>"
}
#line 570 "scanner.re"


config:

#line 2814 "<stdout>"
{
	YYCTYPE yych;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case ' ':	goto yy326;
	case '=':	goto yy328;
	default:	goto yy330;
	}
yy326:
	++YYCURSOR;
	yych = *YYCURSOR;
	goto yy335;
yy327:
#line 574 "scanner.re"
	{
					goto config;
				}
#line 2834 "<stdout>"
yy328:
	++YYCURSOR;
	yych = *YYCURSOR;
	goto yy333;
yy329:
#line 577 "scanner.re"
	{
					iscfg = 2;
					cur = cursor;
					RETURN(EQUALS);
				}
#line 2846 "<stdout>"
yy330:
	++YYCURSOR;
#line 582 "scanner.re"
	{
					fatal("missing '='");
				}
#line 2853 "<stdout>"
yy332:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy333:
	switch (yych) {
	case '\t':
	case ' ':	goto yy332;
	default:	goto yy329;
	}
yy334:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy335:
	switch (yych) {
	case '\t':
	case ' ':	goto yy334;
	default:	goto yy327;
	}
}
#line 585 "scanner.re"


value:

#line 2880 "<stdout>"
{
	YYCTYPE yych;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case '\n':
	case '\r':
	case ' ':
	case ';':	goto yy338;
	case '"':	goto yy346;
	case '\'':	goto yy348;
	case '-':	goto yy341;
	case '0':	goto yy339;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy342;
	default:	goto yy344;
	}
yy338:
#line 595 "scanner.re"
	{
					cur = cursor;
					yylval.str = new Str(token());
					iscfg = 0;
					return VALUE;
				}
#line 2914 "<stdout>"
yy339:
	++YYCURSOR;
	switch ((yych = *YYCURSOR)) {
	case '\t':
	case '\n':
	case '\r':
	case ' ':
	case ';':	goto yy340;
	default:	goto yy344;
	}
yy340:
#line 589 "scanner.re"
	{
					cur = cursor;
					yylval.number = atoi(token().to_string().c_str());
					iscfg = 0;
					return NUMBER;
				}
#line 2933 "<stdout>"
yy341:
	yych = *++YYCURSOR;
	switch (yych) {
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy342;
	default:	goto yy345;
	}
yy342:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case '\n':
	case '\r':
	case ' ':
	case ';':	goto yy340;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy342;
	default:	goto yy344;
	}
yy344:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy345:
	switch (yych) {
	case '\t':
	case '\n':
	case '\r':
	case ' ':
	case ';':	goto yy338;
	default:	goto yy344;
	}
yy346:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case '\r':
	case ' ':
	case ';':	goto yy356;
	case '\n':	goto yy338;
	case '"':	goto yy344;
	case '\\':	goto yy358;
	default:	goto yy346;
	}
yy348:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case '\r':
	case ' ':
	case ';':	goto yy350;
	case '\n':	goto yy338;
	case '\'':	goto yy344;
	case '\\':	goto yy353;
	default:	goto yy348;
	}
yy350:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy352;
	case '\'':	goto yy354;
	case '\\':	goto yy355;
	default:	goto yy350;
	}
yy352:
	YYCURSOR = YYMARKER;
	goto yy338;
yy353:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case '\r':
	case ' ':
	case ';':	goto yy350;
	case '\n':	goto yy338;
	default:	goto yy348;
	}
yy354:
	yych = *++YYCURSOR;
	goto yy338;
yy355:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy352;
	default:	goto yy350;
	}
yy356:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy352;
	case '"':	goto yy354;
	case '\\':	goto yy359;
	default:	goto yy356;
	}
yy358:
	YYMARKER = ++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\t':
	case '\r':
	case ' ':
	case ';':	goto yy356;
	case '\n':	goto yy338;
	default:	goto yy346;
	}
yy359:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy352;
	default:	goto yy356;
	}
}
#line 601 "scanner.re"

}

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

#line 3087 "<stdout>"
{
	YYCTYPE yych;
	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy366;
	case '"':	goto yy364;
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy362;
	default:	goto yy368;
	}
yy362:
	++YYCURSOR;
	yych = *YYCURSOR;
	goto yy376;
yy363:
#line 609 "scanner.re"
	{
					cur = cursor;
					cline = atoi(token().to_string().c_str());
					goto sourceline; 
				}
#line 3117 "<stdout>"
yy364:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case '\n':	goto yy365;
	default:	goto yy370;
	}
yy365:
#line 631 "scanner.re"
	{
  					goto sourceline;
  				}
#line 3129 "<stdout>"
yy366:
	++YYCURSOR;
#line 619 "scanner.re"
	{
  					if (cursor == eof)
  					{
						--cursor; 
					}
			  		else
			  		{
			  			pos = cursor; 
			  		}
			  		tok = cursor;
			  		return; 
				}
#line 3145 "<stdout>"
yy368:
	yych = *++YYCURSOR;
	goto yy365;
yy369:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy370:
	switch (yych) {
	case '\n':	goto yy371;
	case '"':	goto yy373;
	case '\\':	goto yy372;
	default:	goto yy369;
	}
yy371:
	YYCURSOR = YYMARKER;
	goto yy365;
yy372:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	switch (yych) {
	case '\n':	goto yy371;
	default:	goto yy369;
	}
yy373:
	++YYCURSOR;
#line 614 "scanner.re"
	{
					cur = cursor;
					sourceFileInfo.set_fname(token(1, cur - tok - 2).to_string());
			  		goto sourceline; 
				}
#line 3179 "<stdout>"
yy375:
	++YYCURSOR;
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy376:
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy375;
	default:	goto yy363;
	}
}
#line 634 "scanner.re"

}

} // end namespace re2c
