/* Generated by re2c 0.16 on Thu Jan 21 10:47:47 2016 */
#line 1 "../src/conf/parse_opts.re"
#include "src/codegen/input_api.h"
#include "src/conf/msg.h"
#include "src/conf/opt.h"
#include "src/conf/warn.h"
#include "src/globals.h"
#include "src/ir/regexp/empty_class_policy.h"
#include "src/ir/regexp/encoding/enc.h"

namespace re2c
{

static inline bool next (char * & arg, char ** & argv)
{
	arg = *++argv;
	return arg != NULL;
}

parse_opts_t parse_opts (char ** argv, Opt & opts)
{
#define YYCTYPE unsigned char
	char * YYCURSOR;
	char * YYMARKER;
	Warn::option_t option;

#line 31 "../src/conf/parse_opts.re"


opt:
	if (!next (YYCURSOR, argv))
	{
		goto end;
	}

#line 37 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  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, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
	};
	yych = (YYCTYPE)*YYCURSOR;
	if (yych <= 0x00) goto yy2;
	if (yych == '-') goto yy5;
	goto yy4;
yy2:
	++YYCURSOR;
yy3:
#line 40 "../src/conf/parse_opts.re"
	{
		error ("bad option: %s", *argv);
		return EXIT_FAIL;
	}
#line 87 "src/conf/parse_opts.cc"
yy4:
	yyaccept = 0;
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	goto yy10;
yy5:
	++YYCURSOR;
	if ((yych = (YYCTYPE)*YYCURSOR) <= '-') {
		if (yych <= 0x00) goto yy11;
		if (yych >= '-') goto yy13;
	} else {
		if (yych == 'W') goto yy15;
	}
#line 63 "../src/conf/parse_opts.re"
	{ goto opt_short; }
#line 102 "src/conf/parse_opts.cc"
yy7:
	++YYCURSOR;
#line 61 "../src/conf/parse_opts.re"
	{ if (!opts.source (*argv))     return EXIT_FAIL; goto opt; }
#line 107 "src/conf/parse_opts.cc"
yy9:
	++YYCURSOR;
	yych = (YYCTYPE)*YYCURSOR;
yy10:
	if (yybm[0+yych] & 128) {
		goto yy9;
	}
	goto yy7;
yy11:
	++YYCURSOR;
#line 60 "../src/conf/parse_opts.re"
	{ if (!opts.source ("<stdin>")) return EXIT_FAIL; goto opt; }
#line 120 "src/conf/parse_opts.cc"
yy13:
	++YYCURSOR;
	if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy17;
#line 64 "../src/conf/parse_opts.re"
	{ goto opt_long; }
#line 126 "src/conf/parse_opts.cc"
yy15:
	yyaccept = 1;
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych <= 'e') {
		if (yych <= 0x00) goto yy19;
		if (yych >= 'e') goto yy21;
	} else {
		if (yych == 'n') goto yy23;
	}
yy16:
#line 68 "../src/conf/parse_opts.re"
	{ option = Warn::W;        goto opt_warn; }
#line 139 "src/conf/parse_opts.cc"
yy17:
	++YYCURSOR;
#line 46 "../src/conf/parse_opts.re"
	{
		// all remaining arguments are non-options
		// so they must be input files
		// re2c expects exactly one input file
		for (char * f; next (f, argv);)
		{
			if (!opts.source (f))
			{
				return EXIT_FAIL;
			}
		}
		goto end;
	}
#line 156 "src/conf/parse_opts.cc"
yy19:
	++YYCURSOR;
#line 66 "../src/conf/parse_opts.re"
	{ warn.set_all ();       goto opt; }
#line 161 "src/conf/parse_opts.cc"
yy21:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy24;
yy22:
	YYCURSOR = YYMARKER;
	if (yyaccept <= 1) {
		if (yyaccept == 0) {
			goto yy3;
		} else {
			goto yy16;
		}
	} else {
		goto yy28;
	}
yy23:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy25;
	goto yy22;
yy24:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy26;
	goto yy22;
yy25:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy27;
	goto yy22;
yy26:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy29;
	goto yy22;
yy27:
	yyaccept = 2;
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'e') goto yy30;
yy28:
#line 69 "../src/conf/parse_opts.re"
	{ option = Warn::WNO;      goto opt_warn; }
#line 199 "src/conf/parse_opts.cc"
yy29:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy31;
	goto yy22;
yy30:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy32;
	goto yy22;
yy31:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy33;
	if (yych == '-') goto yy35;
	goto yy22;
yy32:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy37;
	goto yy22;
yy33:
	++YYCURSOR;
#line 67 "../src/conf/parse_opts.re"
	{ warn.set_all_error (); goto opt; }
#line 221 "src/conf/parse_opts.cc"
yy35:
	++YYCURSOR;
#line 70 "../src/conf/parse_opts.re"
	{ option = Warn::WERROR;   goto opt_warn; }
#line 226 "src/conf/parse_opts.cc"
yy37:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych != 'o') goto yy22;
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych != 'r') goto yy22;
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych != '-') goto yy22;
	++YYCURSOR;
#line 71 "../src/conf/parse_opts.re"
	{ option = Warn::WNOERROR; goto opt_warn; }
#line 237 "src/conf/parse_opts.cc"
}
#line 72 "../src/conf/parse_opts.re"


opt_warn:

#line 244 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	switch (yych) {
	case 'c':	goto yy46;
	case 'e':	goto yy47;
	case 'm':	goto yy48;
	case 's':	goto yy49;
	case 'u':	goto yy50;
	default:	goto yy44;
	}
yy44:
	++YYCURSOR;
yy45:
#line 77 "../src/conf/parse_opts.re"
	{
		error ("bad warning: %s", *argv);
		return EXIT_FAIL;
	}
#line 264 "src/conf/parse_opts.cc"
yy46:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'o') goto yy51;
	goto yy45;
yy47:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'm') goto yy53;
	goto yy45;
yy48:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'a') goto yy54;
	goto yy45;
yy49:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'w') goto yy55;
	goto yy45;
yy50:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'n') goto yy56;
	if (yych == 's') goto yy57;
	goto yy45;
yy51:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy58;
yy52:
	YYCURSOR = YYMARKER;
	goto yy45;
yy53:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy59;
	goto yy52;
yy54:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy60;
	goto yy52;
yy55:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy61;
	goto yy52;
yy56:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy62;
	if (yych == 'r') goto yy63;
	goto yy52;
yy57:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy64;
	goto yy52;
yy58:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy65;
	goto yy52;
yy59:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy66;
	goto yy52;
yy60:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy67;
	goto yy52;
yy61:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy68;
	goto yy52;
yy62:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy69;
	goto yy52;
yy63:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy70;
	goto yy52;
yy64:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy71;
	goto yy52;
yy65:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy72;
	goto yy52;
yy66:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'y') goto yy73;
	goto yy52;
yy67:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'h') goto yy74;
	goto yy52;
yy68:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy75;
	goto yy52;
yy69:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'f') goto yy76;
	goto yy52;
yy70:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy77;
	goto yy52;
yy71:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy78;
	goto yy52;
yy72:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy79;
	goto yy52;
yy73:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy80;
	goto yy52;
yy74:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy81;
	goto yy52;
yy75:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy82;
	goto yy52;
yy76:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy83;
	goto yy52;
yy77:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy84;
	goto yy52;
yy78:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy85;
	goto yy52;
yy79:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy86;
	goto yy52;
yy80:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy87;
	goto yy52;
yy81:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy88;
	goto yy52;
yy82:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy89;
	goto yy52;
yy83:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy90;
	goto yy52;
yy84:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'h') goto yy91;
	goto yy52;
yy85:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy92;
	goto yy52;
yy86:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy93;
	goto yy52;
yy87:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'h') goto yy94;
	goto yy52;
yy88:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy95;
	goto yy52;
yy89:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy96;
	goto yy52;
yy90:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy97;
	goto yy52;
yy91:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy98;
	goto yy52;
yy92:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy99;
	goto yy52;
yy93:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy100;
	goto yy52;
yy94:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy101;
	goto yy52;
yy95:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy102;
	goto yy52;
yy96:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy103;
	goto yy52;
yy97:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy104;
	goto yy52;
yy98:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy105;
	goto yy52;
yy99:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy106;
	goto yy52;
yy100:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy107;
	goto yy52;
yy101:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy108;
	goto yy52;
yy102:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy109;
	goto yy52;
yy103:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy110;
	goto yy52;
yy104:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy111;
	goto yy52;
yy105:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy112;
	goto yy52;
yy106:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy113;
	goto yy52;
yy107:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy114;
	goto yy52;
yy108:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy115;
	goto yy52;
yy109:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'y') goto yy116;
	goto yy52;
yy110:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy117;
	goto yy52;
yy111:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy118;
	goto yy52;
yy112:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy119;
	goto yy52;
yy113:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy120;
	goto yy52;
yy114:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy121;
	goto yy52;
yy115:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy122;
	goto yy52;
yy116:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy123;
	goto yy52;
yy117:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy124;
	goto yy52;
yy118:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy125;
	goto yy52;
yy119:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy126;
	goto yy52;
yy120:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy127;
	goto yy52;
yy121:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy128;
	goto yy52;
yy122:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy129;
	goto yy52;
yy123:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy130;
	goto yy52;
yy124:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy131;
	goto yy52;
yy125:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy132;
	goto yy52;
yy126:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy133;
	goto yy52;
yy127:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy134;
	goto yy52;
yy128:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy135;
	goto yy52;
yy129:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy136;
	goto yy52;
yy130:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy137;
	goto yy52;
yy131:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy138;
	goto yy52;
yy132:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy140;
	goto yy52;
yy133:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy141;
	goto yy52;
yy134:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy142;
	goto yy52;
yy135:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy143;
	goto yy52;
yy136:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy144;
	goto yy52;
yy137:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy145;
	goto yy52;
yy138:
	++YYCURSOR;
#line 84 "../src/conf/parse_opts.re"
	{ warn.set (Warn::SWAPPED_RANGE,          option); goto opt; }
#line 637 "src/conf/parse_opts.cc"
yy140:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy146;
	goto yy52;
yy141:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy147;
	goto yy52;
yy142:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy148;
	goto yy52;
yy143:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy150;
	goto yy52;
yy144:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy152;
	goto yy52;
yy145:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy153;
	goto yy52;
yy146:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy154;
	goto yy52;
yy147:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy155;
	goto yy52;
yy148:
	++YYCURSOR;
#line 87 "../src/conf/parse_opts.re"
	{ warn.set (Warn::USELESS_ESCAPE,         option); goto opt; }
#line 674 "src/conf/parse_opts.cc"
yy150:
	++YYCURSOR;
#line 81 "../src/conf/parse_opts.re"
	{ warn.set (Warn::CONDITION_ORDER,        option); goto opt; }
#line 679 "src/conf/parse_opts.cc"
yy152:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy156;
	goto yy52;
yy153:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy157;
	goto yy52;
yy154:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy158;
	goto yy52;
yy155:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy159;
	goto yy52;
yy156:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy160;
	goto yy52;
yy157:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy161;
	goto yy52;
yy158:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy162;
	goto yy52;
yy159:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy163;
	goto yy52;
yy160:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy165;
	goto yy52;
yy161:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy166;
	goto yy52;
yy162:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'f') goto yy168;
	goto yy52;
yy163:
	++YYCURSOR;
#line 86 "../src/conf/parse_opts.re"
	{ warn.set (Warn::UNREACHABLE_RULES,      option); goto opt; }
#line 728 "src/conf/parse_opts.cc"
yy165:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy169;
	goto yy52;
yy166:
	++YYCURSOR;
#line 83 "../src/conf/parse_opts.re"
	{ warn.set (Warn::MATCH_EMPTY_STRING,     option); goto opt; }
#line 737 "src/conf/parse_opts.cc"
yy168:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy170;
	goto yy52;
yy169:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy171;
	goto yy52;
yy170:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy172;
	goto yy52;
yy171:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy173;
	goto yy52;
yy172:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'w') goto yy175;
	goto yy52;
yy173:
	++YYCURSOR;
#line 82 "../src/conf/parse_opts.re"
	{ warn.set (Warn::EMPTY_CHARACTER_CLASS,  option); goto opt; }
#line 762 "src/conf/parse_opts.cc"
yy175:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych >= 0x01) goto yy52;
	++YYCURSOR;
#line 85 "../src/conf/parse_opts.re"
	{ warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; }
#line 769 "src/conf/parse_opts.cc"
}
#line 88 "../src/conf/parse_opts.re"


opt_short:

#line 776 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	if (yych <= 'b') {
		if (yych <= 'C') {
			if (yych <= '7') {
				if (yych <= 0x00) goto yy180;
				if (yych == '1') goto yy184;
				goto yy182;
			} else {
				if (yych <= '8') goto yy186;
				if (yych == '?') goto yy188;
				goto yy182;
			}
		} else {
			if (yych <= 'R') {
				if (yych <= 'D') goto yy190;
				if (yych == 'F') goto yy192;
				goto yy182;
			} else {
				if (yych <= 'U') {
					if (yych <= 'S') goto yy194;
					goto yy182;
				} else {
					if (yych <= 'V') goto yy196;
					if (yych <= 'a') goto yy182;
					goto yy198;
				}
			}
		}
	} else {
		if (yych <= 'o') {
			if (yych <= 'f') {
				if (yych <= 'c') goto yy200;
				if (yych <= 'd') goto yy202;
				if (yych <= 'e') goto yy204;
				goto yy206;
			} else {
				if (yych <= 'h') {
					if (yych <= 'g') goto yy208;
					goto yy188;
				} else {
					if (yych <= 'i') goto yy210;
					if (yych <= 'n') goto yy182;
					goto yy212;
				}
			}
		} else {
			if (yych <= 't') {
				if (yych <= 'q') goto yy182;
				if (yych <= 'r') goto yy214;
				if (yych <= 's') goto yy216;
				goto yy218;
			} else {
				if (yych <= 'v') {
					if (yych <= 'u') goto yy220;
					goto yy222;
				} else {
					if (yych <= 'w') goto yy224;
					if (yych <= 'x') goto yy226;
					goto yy182;
				}
			}
		}
	}
yy180:
	++YYCURSOR;
#line 97 "../src/conf/parse_opts.re"
	{ goto opt; }
#line 846 "src/conf/parse_opts.cc"
yy182:
	++YYCURSOR;
#line 93 "../src/conf/parse_opts.re"
	{
		error ("bad short option: %s", *argv);
		return EXIT_FAIL;
	}
#line 854 "src/conf/parse_opts.cc"
yy184:
	++YYCURSOR;
#line 121 "../src/conf/parse_opts.re"
	{ goto opt_short; }
#line 859 "src/conf/parse_opts.cc"
yy186:
	++YYCURSOR;
#line 116 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UTF8))   { error_encoding (); return EXIT_FAIL; } goto opt_short; }
#line 864 "src/conf/parse_opts.cc"
yy188:
	++YYCURSOR;
#line 98 "../src/conf/parse_opts.re"
	{ usage ();   return EXIT_OK; }
#line 869 "src/conf/parse_opts.cc"
yy190:
	++YYCURSOR;
#line 104 "../src/conf/parse_opts.re"
	{ opts.set_target (opt_t::DOT);      goto opt_short; }
#line 874 "src/conf/parse_opts.cc"
yy192:
	++YYCURSOR;
#line 106 "../src/conf/parse_opts.re"
	{ opts.set_FFlag (true);             goto opt_short; }
#line 879 "src/conf/parse_opts.cc"
yy194:
	++YYCURSOR;
#line 111 "../src/conf/parse_opts.re"
	{ opts.set_target (opt_t::SKELETON); goto opt_short; }
#line 884 "src/conf/parse_opts.cc"
yy196:
	++YYCURSOR;
#line 100 "../src/conf/parse_opts.re"
	{ vernum ();  return EXIT_OK; }
#line 889 "src/conf/parse_opts.cc"
yy198:
	++YYCURSOR;
#line 101 "../src/conf/parse_opts.re"
	{ opts.set_bFlag (true);             goto opt_short; }
#line 894 "src/conf/parse_opts.cc"
yy200:
	++YYCURSOR;
#line 102 "../src/conf/parse_opts.re"
	{ opts.set_cFlag (true);             goto opt_short; }
#line 899 "src/conf/parse_opts.cc"
yy202:
	++YYCURSOR;
#line 103 "../src/conf/parse_opts.re"
	{ opts.set_dFlag (true);             goto opt_short; }
#line 904 "src/conf/parse_opts.cc"
yy204:
	++YYCURSOR;
#line 112 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::EBCDIC)) { error_encoding (); return EXIT_FAIL; } goto opt_short; }
#line 909 "src/conf/parse_opts.cc"
yy206:
	++YYCURSOR;
#line 105 "../src/conf/parse_opts.re"
	{ opts.set_fFlag (true);             goto opt_short; }
#line 914 "src/conf/parse_opts.cc"
yy208:
	++YYCURSOR;
#line 107 "../src/conf/parse_opts.re"
	{ opts.set_gFlag (true);             goto opt_short; }
#line 919 "src/conf/parse_opts.cc"
yy210:
	++YYCURSOR;
#line 108 "../src/conf/parse_opts.re"
	{ opts.set_iFlag (true);             goto opt_short; }
#line 924 "src/conf/parse_opts.cc"
yy212:
	++YYCURSOR;
	if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy228;
#line 118 "../src/conf/parse_opts.re"
	{ *argv = YYCURSOR;                                                             goto opt_output; }
#line 930 "src/conf/parse_opts.cc"
yy214:
	++YYCURSOR;
#line 109 "../src/conf/parse_opts.re"
	{ opts.set_rFlag (true);             goto opt_short; }
#line 935 "src/conf/parse_opts.cc"
yy216:
	++YYCURSOR;
#line 110 "../src/conf/parse_opts.re"
	{ opts.set_sFlag (true);             goto opt_short; }
#line 940 "src/conf/parse_opts.cc"
yy218:
	++YYCURSOR;
	if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy230;
#line 120 "../src/conf/parse_opts.re"
	{ *argv = YYCURSOR;                                                                  goto opt_header; }
#line 946 "src/conf/parse_opts.cc"
yy220:
	++YYCURSOR;
#line 113 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UTF32))  { error_encoding (); return EXIT_FAIL; } goto opt_short; }
#line 951 "src/conf/parse_opts.cc"
yy222:
	++YYCURSOR;
#line 99 "../src/conf/parse_opts.re"
	{ version (); return EXIT_OK; }
#line 956 "src/conf/parse_opts.cc"
yy224:
	++YYCURSOR;
#line 114 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UCS2))   { error_encoding (); return EXIT_FAIL; } goto opt_short; }
#line 961 "src/conf/parse_opts.cc"
yy226:
	++YYCURSOR;
#line 115 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UTF16))  { error_encoding (); return EXIT_FAIL; } goto opt_short; }
#line 966 "src/conf/parse_opts.cc"
yy228:
	++YYCURSOR;
#line 117 "../src/conf/parse_opts.re"
	{ if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
#line 971 "src/conf/parse_opts.cc"
yy230:
	++YYCURSOR;
#line 119 "../src/conf/parse_opts.re"
	{ if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
#line 976 "src/conf/parse_opts.cc"
}
#line 122 "../src/conf/parse_opts.re"


opt_long:

#line 983 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	switch (yych) {
	case 'b':	goto yy236;
	case 'c':	goto yy237;
	case 'd':	goto yy238;
	case 'e':	goto yy239;
	case 'f':	goto yy240;
	case 'h':	goto yy241;
	case 'i':	goto yy242;
	case 'n':	goto yy243;
	case 'o':	goto yy244;
	case 'r':	goto yy245;
	case 's':	goto yy246;
	case 't':	goto yy247;
	case 'u':	goto yy248;
	case 'v':	goto yy249;
	case 'w':	goto yy250;
	default:	goto yy234;
	}
yy234:
	++YYCURSOR;
yy235:
#line 127 "../src/conf/parse_opts.re"
	{
		error ("bad long option: %s", *argv);
		return EXIT_FAIL;
	}
#line 1013 "src/conf/parse_opts.cc"
yy236:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'i') goto yy251;
	goto yy235;
yy237:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'a') goto yy253;
	if (yych == 'o') goto yy254;
	goto yy235;
yy238:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych <= 'd') goto yy235;
	if (yych <= 'e') goto yy255;
	if (yych <= 'f') goto yy256;
	goto yy235;
yy239:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych <= 'l') {
		if (yych == 'c') goto yy257;
		goto yy235;
	} else {
		if (yych <= 'm') goto yy258;
		if (yych <= 'n') goto yy259;
		goto yy235;
	}
yy240:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'l') goto yy260;
	goto yy235;
yy241:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'e') goto yy261;
	goto yy235;
yy242:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'n') goto yy262;
	goto yy235;
yy243:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'e') goto yy263;
	if (yych == 'o') goto yy264;
	goto yy235;
yy244:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'u') goto yy265;
	goto yy235;
yy245:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'e') goto yy266;
	goto yy235;
yy246:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych <= 'j') {
		if (yych == 'i') goto yy267;
		goto yy235;
	} else {
		if (yych <= 'k') goto yy268;
		if (yych == 't') goto yy269;
		goto yy235;
	}
yy247:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'y') goto yy270;
	goto yy235;
yy248:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'n') goto yy271;
	if (yych == 't') goto yy272;
	goto yy235;
yy249:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'e') goto yy273;
	goto yy235;
yy250:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'i') goto yy274;
	goto yy235;
yy251:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy275;
yy252:
	YYCURSOR = YYMARKER;
	goto yy235;
yy253:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy276;
	goto yy252;
yy254:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy277;
	goto yy252;
yy255:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy278;
	goto yy252;
yy256:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy279;
	goto yy252;
yy257:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy280;
	goto yy252;
yy258:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy281;
	if (yych == 'p') goto yy282;
	goto yy252;
yy259:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy283;
	goto yy252;
yy260:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy284;
	goto yy252;
yy261:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy285;
	goto yy252;
yy262:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy286;
	goto yy252;
yy263:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy287;
	goto yy252;
yy264:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy288;
	goto yy252;
yy265:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy289;
	goto yy252;
yy266:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy290;
	goto yy252;
yy267:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy291;
	goto yy252;
yy268:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy292;
	goto yy252;
yy269:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy293;
	if (yych == 'o') goto yy294;
	goto yy252;
yy270:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy295;
	goto yy252;
yy271:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy296;
	goto yy252;
yy272:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'f') goto yy297;
	goto yy252;
yy273:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy298;
	goto yy252;
yy274:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy299;
	goto yy252;
yy275:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy300;
	goto yy252;
yy276:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy301;
	goto yy252;
yy277:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy302;
	goto yy252;
yy278:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy303;
	goto yy252;
yy279:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy304;
	goto yy252;
yy280:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy305;
	goto yy252;
yy281:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy307;
	goto yy252;
yy282:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy308;
	goto yy252;
yy283:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy309;
	goto yy252;
yy284:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'x') goto yy310;
	goto yy252;
yy285:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy311;
	goto yy252;
yy286:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy312;
	goto yy252;
yy287:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy313;
	goto yy252;
yy288:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 'f') {
		if (yych == 'd') goto yy314;
		goto yy252;
	} else {
		if (yych <= 'g') goto yy315;
		if (yych == 'v') goto yy316;
		goto yy252;
	}
yy289:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy317;
	goto yy252;
yy290:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy318;
	goto yy252;
yy291:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy319;
	goto yy252;
yy292:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy320;
	goto yy252;
yy293:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy321;
	goto yy252;
yy294:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy322;
	goto yy252;
yy295:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy323;
	goto yy252;
yy296:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy324;
	goto yy252;
yy297:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy325;
	goto yy252;
yy298:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy326;
	if (yych == 's') goto yy327;
	goto yy252;
yy299:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy328;
	goto yy252;
yy300:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'v') goto yy329;
	goto yy252;
yy301:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy330;
	goto yy252;
yy302:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy331;
	goto yy252;
yy303:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy332;
	goto yy252;
yy304:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy333;
	goto yy252;
yy305:
	++YYCURSOR;
#line 149 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::EBCDIC)) { error_encoding (); return EXIT_FAIL; } goto opt; }
#line 1318 "src/conf/parse_opts.cc"
yy307:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy334;
	goto yy252;
yy308:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'y') goto yy335;
	goto yy252;
yy309:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy336;
	goto yy252;
yy310:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy337;
	goto yy252;
yy311:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy338;
	goto yy252;
yy312:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy340;
	goto yy252;
yy313:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy341;
	goto yy252;
yy314:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy342;
	goto yy252;
yy315:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy343;
	goto yy252;
yy316:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy344;
	goto yy252;
yy317:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy345;
	goto yy252;
yy318:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy346;
	goto yy252;
yy319:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy347;
	goto yy252;
yy320:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy348;
	goto yy252;
yy321:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy349;
	goto yy252;
yy322:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy350;
	goto yy252;
yy323:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy351;
	goto yy252;
yy324:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy352;
	goto yy252;
yy325:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '1') goto yy353;
	if (yych == '8') goto yy354;
	goto yy252;
yy326:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy355;
	goto yy252;
yy327:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy356;
	goto yy252;
yy328:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy357;
	goto yy252;
yy329:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy358;
	goto yy252;
yy330:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy359;
	goto yy252;
yy331:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy360;
	goto yy252;
yy332:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy361;
	goto yy252;
yy333:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy362;
	goto yy252;
yy334:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy363;
	goto yy252;
yy335:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy364;
	goto yy252;
yy336:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy365;
	goto yy252;
yy337:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy366;
	goto yy252;
yy338:
	++YYCURSOR;
#line 131 "../src/conf/parse_opts.re"
	{ usage ();   return EXIT_OK; }
#line 1448 "src/conf/parse_opts.cc"
yy340:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy367;
	goto yy252;
yy341:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy369;
	goto yy252;
yy342:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy370;
	goto yy252;
yy343:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy371;
	goto yy252;
yy344:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy372;
	goto yy252;
yy345:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy373;
	goto yy252;
yy346:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy374;
	goto yy252;
yy347:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy375;
	goto yy252;
yy348:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy376;
	goto yy252;
yy349:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy377;
	goto yy252;
yy350:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy378;
	goto yy252;
yy351:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'h') goto yy379;
	goto yy252;
yy352:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy380;
	goto yy252;
yy353:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '6') goto yy381;
	goto yy252;
yy354:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy382;
	goto yy252;
yy355:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy384;
	goto yy252;
yy356:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy385;
	goto yy252;
yy357:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy386;
	goto yy252;
yy358:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy387;
	goto yy252;
yy359:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy388;
	goto yy252;
yy360:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy389;
	goto yy252;
yy361:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy390;
	goto yy252;
yy362:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy391;
	goto yy252;
yy363:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy392;
	goto yy252;
yy364:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy393;
	goto yy252;
yy365:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy394;
	goto yy252;
yy366:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'y') goto yy395;
	goto yy252;
yy367:
	++YYCURSOR;
#line 157 "../src/conf/parse_opts.re"
	{ goto opt_input; }
#line 1561 "src/conf/parse_opts.cc"
yy369:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy396;
	goto yy252;
yy370:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy397;
	goto yy252;
yy371:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy398;
	goto yy252;
yy372:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy399;
	goto yy252;
yy373:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy400;
	goto yy252;
yy374:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy402;
	goto yy252;
yy375:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy403;
	goto yy252;
yy376:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy404;
	goto yy252;
yy377:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy405;
	goto yy252;
yy378:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy406;
	goto yy252;
yy379:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy407;
	goto yy252;
yy380:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy408;
	goto yy252;
yy381:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy409;
	goto yy252;
yy382:
	++YYCURSOR;
#line 153 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UTF8))   { error_encoding (); return EXIT_FAIL; } goto opt; }
#line 1618 "src/conf/parse_opts.cc"
yy384:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy411;
	goto yy252;
yy385:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy413;
	goto yy252;
yy386:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'h') goto yy414;
	goto yy252;
yy387:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy415;
	goto yy252;
yy388:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy416;
	if (yych == 'v') goto yy417;
	goto yy252;
yy389:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy418;
	goto yy252;
yy390:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy419;
	goto yy252;
yy391:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy420;
	goto yy252;
yy392:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy421;
	goto yy252;
yy393:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy422;
	goto yy252;
yy394:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy423;
	goto yy252;
yy395:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy424;
	goto yy252;
yy396:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy425;
	goto yy252;
yy397:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy426;
	goto yy252;
yy398:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy427;
	goto yy252;
yy399:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy428;
	goto yy252;
yy400:
	++YYCURSOR;
#line 154 "../src/conf/parse_opts.re"
	{ if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
#line 1688 "src/conf/parse_opts.cc"
yy402:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy429;
	goto yy252;
yy403:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy430;
	goto yy252;
yy404:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy431;
	goto yy252;
yy405:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy432;
	goto yy252;
yy406:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy433;
	goto yy252;
yy407:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy434;
	goto yy252;
yy408:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy435;
	goto yy252;
yy409:
	++YYCURSOR;
#line 152 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UTF16))  { error_encoding (); return EXIT_FAIL; } goto opt; }
#line 1721 "src/conf/parse_opts.cc"
yy411:
	++YYCURSOR;
#line 133 "../src/conf/parse_opts.re"
	{ vernum ();  return EXIT_OK; }
#line 1726 "src/conf/parse_opts.cc"
yy413:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy437;
	goto yy252;
yy414:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy439;
	goto yy252;
yy415:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy440;
	goto yy252;
yy416:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy441;
	goto yy252;
yy417:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy442;
	goto yy252;
yy418:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy443;
	goto yy252;
yy419:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy444;
	goto yy252;
yy420:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy445;
	goto yy252;
yy421:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy446;
	goto yy252;
yy422:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy448;
	goto yy252;
yy423:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy449;
	goto yy252;
yy424:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy450;
	goto yy252;
yy425:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'f') goto yy451;
	goto yy252;
yy426:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy452;
	goto yy252;
yy427:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy453;
	goto yy252;
yy428:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy454;
	goto yy252;
yy429:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy455;
	goto yy252;
yy430:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy457;
	goto yy252;
yy431:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy458;
	goto yy252;
yy432:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy460;
	goto yy252;
yy433:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy461;
	goto yy252;
yy434:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy462;
	goto yy252;
yy435:
	++YYCURSOR;
#line 150 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UTF32))  { error_encoding (); return EXIT_FAIL; } goto opt; }
#line 1819 "src/conf/parse_opts.cc"
yy437:
	++YYCURSOR;
#line 132 "../src/conf/parse_opts.re"
	{ version (); return EXIT_OK; }
#line 1824 "src/conf/parse_opts.cc"
yy439:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy463;
	goto yy252;
yy440:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy464;
	goto yy252;
yy441:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy465;
	goto yy252;
yy442:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy466;
	goto yy252;
yy443:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'g') goto yy467;
	goto yy252;
yy444:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy468;
	goto yy252;
yy445:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy469;
	goto yy252;
yy446:
	++YYCURSOR;
#line 137 "../src/conf/parse_opts.re"
	{ opts.set_target (opt_t::DOT);      goto opt; }
#line 1857 "src/conf/parse_opts.cc"
yy448:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy470;
	goto yy252;
yy449:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy471;
	goto yy252;
yy450:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy472;
	goto yy252;
yy451:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy473;
	goto yy252;
yy452:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy474;
	goto yy252;
yy453:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy475;
	goto yy252;
yy454:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy476;
	goto yy252;
yy455:
	++YYCURSOR;
#line 142 "../src/conf/parse_opts.re"
	{ opts.set_rFlag (true);             goto opt; }
#line 1890 "src/conf/parse_opts.cc"
yy457:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy477;
	goto yy252;
yy458:
	++YYCURSOR;
#line 148 "../src/conf/parse_opts.re"
	{ opts.set_target (opt_t::SKELETON); goto opt; }
#line 1899 "src/conf/parse_opts.cc"
yy460:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy478;
	goto yy252;
yy461:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy479;
	goto yy252;
yy462:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy480;
	goto yy252;
yy463:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy481;
	goto yy252;
yy464:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy482;
	goto yy252;
yy465:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy483;
	goto yy252;
yy466:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy484;
	goto yy252;
yy467:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy485;
	goto yy252;
yy468:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy486;
	goto yy252;
yy469:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'z') goto yy487;
	goto yy252;
yy470:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy488;
	goto yy252;
yy471:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy489;
	goto yy252;
yy472:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'x') goto yy490;
	goto yy252;
yy473:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy491;
	goto yy252;
yy474:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy493;
	goto yy252;
yy475:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy494;
	goto yy252;
yy476:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy495;
	goto yy252;
yy477:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy497;
	goto yy252;
yy478:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy498;
	goto yy252;
yy479:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy499;
	goto yy252;
yy480:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy500;
	goto yy252;
yy481:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy501;
	goto yy252;
yy482:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy503;
	goto yy252;
yy483:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy505;
	goto yy252;
yy484:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy506;
	goto yy252;
yy485:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy507;
	goto yy252;
yy486:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy508;
	goto yy252;
yy487:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy509;
	goto yy252;
yy488:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy510;
	goto yy252;
yy489:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy512;
	goto yy252;
yy490:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy513;
	goto yy252;
yy491:
	++YYCURSOR;
#line 143 "../src/conf/parse_opts.re"
	{ opts.set_sFlag (true);             goto opt; }
#line 2028 "src/conf/parse_opts.cc"
yy493:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'f') goto yy515;
	goto yy252;
yy494:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy516;
	goto yy252;
yy495:
	++YYCURSOR;
#line 145 "../src/conf/parse_opts.re"
	{ opts.set_version (false);          goto opt; }
#line 2041 "src/conf/parse_opts.cc"
yy497:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy517;
	goto yy252;
yy498:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy519;
	goto yy252;
yy499:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy520;
	goto yy252;
yy500:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy521;
	goto yy252;
yy501:
	++YYCURSOR;
#line 151 "../src/conf/parse_opts.re"
	{ if (!opts.set_encoding (Enc::UCS2))   { error_encoding (); return EXIT_FAIL; } goto opt; }
#line 2062 "src/conf/parse_opts.cc"
yy503:
	++YYCURSOR;
#line 134 "../src/conf/parse_opts.re"
	{ opts.set_bFlag (true);             goto opt; }
#line 2067 "src/conf/parse_opts.cc"
yy505:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy523;
	goto yy252;
yy506:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy524;
	goto yy252;
yy507:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy525;
	goto yy252;
yy508:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy526;
	goto yy252;
yy509:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy528;
	goto yy252;
yy510:
	++YYCURSOR;
#line 158 "../src/conf/parse_opts.re"
	{ goto opt_empty_class; }
#line 2092 "src/conf/parse_opts.cc"
yy512:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy529;
	goto yy252;
yy513:
	++YYCURSOR;
#line 139 "../src/conf/parse_opts.re"
	{ opts.set_FFlag (true);             goto opt; }
#line 2101 "src/conf/parse_opts.cc"
yy515:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy530;
	goto yy252;
yy516:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy531;
	goto yy252;
yy517:
	++YYCURSOR;
#line 160 "../src/conf/parse_opts.re"
	{ goto opt; }
#line 2114 "src/conf/parse_opts.cc"
yy519:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy532;
	goto yy252;
yy520:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy533;
	goto yy252;
yy521:
	++YYCURSOR;
#line 155 "../src/conf/parse_opts.re"
	{ if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
#line 2127 "src/conf/parse_opts.cc"
yy523:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy534;
	goto yy252;
yy524:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy535;
	goto yy252;
yy525:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy537;
	goto yy252;
yy526:
	++YYCURSOR;
#line 136 "../src/conf/parse_opts.re"
	{ opts.set_dFlag (true);             goto opt; }
#line 2144 "src/conf/parse_opts.cc"
yy528:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy538;
	goto yy252;
yy529:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy539;
	goto yy252;
yy530:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy540;
	goto yy252;
yy531:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy542;
	goto yy252;
yy532:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy543;
	goto yy252;
yy533:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy544;
	goto yy252;
yy534:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'v') goto yy545;
	goto yy252;
yy535:
	++YYCURSOR;
#line 147 "../src/conf/parse_opts.re"
	{ opts.set_bCaseInverted (true);     goto opt; }
#line 2177 "src/conf/parse_opts.cc"
yy537:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy546;
	goto yy252;
yy538:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy548;
	goto yy252;
yy539:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'y') goto yy549;
	goto yy252;
yy540:
	++YYCURSOR;
#line 141 "../src/conf/parse_opts.re"
	{ opts.set_iFlag (true);             goto opt; }
#line 2194 "src/conf/parse_opts.cc"
yy542:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'd') goto yy550;
	goto yy252;
yy543:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy551;
	goto yy252;
yy544:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy552;
	goto yy252;
yy545:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy554;
	goto yy252;
yy546:
	++YYCURSOR;
#line 140 "../src/conf/parse_opts.re"
	{ opts.set_gFlag (true);             goto opt; }
#line 2215 "src/conf/parse_opts.cc"
yy548:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy555;
	goto yy252;
yy549:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy556;
	goto yy252;
yy550:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy558;
	goto yy252;
yy551:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy559;
	goto yy252;
yy552:
	++YYCURSOR;
#line 138 "../src/conf/parse_opts.re"
	{ opts.set_fFlag (true);             goto opt; }
#line 2236 "src/conf/parse_opts.cc"
yy554:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy560;
	goto yy252;
yy555:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy562;
	goto yy252;
yy556:
	++YYCURSOR;
#line 156 "../src/conf/parse_opts.re"
	{ goto opt_encoding_policy; }
#line 2249 "src/conf/parse_opts.cc"
yy558:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy564;
	goto yy252;
yy559:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy565;
	goto yy252;
yy560:
	++YYCURSOR;
#line 146 "../src/conf/parse_opts.re"
	{ opts.set_bCaseInsensitive (true);  goto opt; }
#line 2262 "src/conf/parse_opts.cc"
yy562:
	++YYCURSOR;
#line 159 "../src/conf/parse_opts.re"
	{ goto opt_dfa_minimization; }
#line 2267 "src/conf/parse_opts.cc"
yy564:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy567;
	goto yy252;
yy565:
	++YYCURSOR;
#line 135 "../src/conf/parse_opts.re"
	{ opts.set_cFlag (true);             goto opt; }
#line 2276 "src/conf/parse_opts.cc"
yy567:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych >= 0x01) goto yy252;
	++YYCURSOR;
#line 144 "../src/conf/parse_opts.re"
	{ opts.set_bNoGenerationDate (true); goto opt; }
#line 2283 "src/conf/parse_opts.cc"
}
#line 161 "../src/conf/parse_opts.re"


opt_output:

#line 2290 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	static const unsigned char yybm[] = {
		  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, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
	};
	yych = (YYCTYPE)*YYCURSOR;
	if (yych <= 0x00) goto yy572;
	if (yych != '-') goto yy574;
yy572:
	++YYCURSOR;
#line 166 "../src/conf/parse_opts.re"
	{
		error ("bad argument to option -o, --output: %s", *argv);
		return EXIT_FAIL;
	}
#line 2337 "src/conf/parse_opts.cc"
yy574:
	yych = (YYCTYPE)*++YYCURSOR;
	goto yy578;
yy575:
	++YYCURSOR;
#line 170 "../src/conf/parse_opts.re"
	{ if (!opts.output (*argv)) return EXIT_FAIL; goto opt; }
#line 2345 "src/conf/parse_opts.cc"
yy577:
	++YYCURSOR;
	yych = (YYCTYPE)*YYCURSOR;
yy578:
	if (yybm[0+yych] & 128) {
		goto yy577;
	}
	goto yy575;
}
#line 171 "../src/conf/parse_opts.re"


opt_header:

#line 2360 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	static const unsigned char yybm[] = {
		  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, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
	};
	yych = (YYCTYPE)*YYCURSOR;
	if (yych <= 0x00) goto yy581;
	if (yych != '-') goto yy583;
yy581:
	++YYCURSOR;
#line 176 "../src/conf/parse_opts.re"
	{
		error ("bad argument to option -t, --type-header: %s", *argv);
		return EXIT_FAIL;
	}
#line 2407 "src/conf/parse_opts.cc"
yy583:
	yych = (YYCTYPE)*++YYCURSOR;
	goto yy587;
yy584:
	++YYCURSOR;
#line 180 "../src/conf/parse_opts.re"
	{ opts.set_header_file (*argv); goto opt; }
#line 2415 "src/conf/parse_opts.cc"
yy586:
	++YYCURSOR;
	yych = (YYCTYPE)*YYCURSOR;
yy587:
	if (yybm[0+yych] & 128) {
		goto yy586;
	}
	goto yy584;
}
#line 181 "../src/conf/parse_opts.re"


opt_encoding_policy:
	if (!next (YYCURSOR, argv))
	{
		error_arg ("--encoding-policy");
		return EXIT_FAIL;
	}

#line 2435 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	if (yych <= 'h') {
		if (yych == 'f') goto yy592;
	} else {
		if (yych <= 'i') goto yy593;
		if (yych == 's') goto yy594;
	}
	++YYCURSOR;
yy591:
#line 191 "../src/conf/parse_opts.re"
	{
		error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv);
		return EXIT_FAIL;
	}
#line 2452 "src/conf/parse_opts.cc"
yy592:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'a') goto yy595;
	goto yy591;
yy593:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'g') goto yy597;
	goto yy591;
yy594:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'u') goto yy598;
	goto yy591;
yy595:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy599;
yy596:
	YYCURSOR = YYMARKER;
	goto yy591;
yy597:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy600;
	goto yy596;
yy598:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy601;
	goto yy596;
yy599:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy602;
	goto yy596;
yy600:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy603;
	goto yy596;
yy601:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy604;
	goto yy596;
yy602:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy605;
	goto yy596;
yy603:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy607;
	goto yy596;
yy604:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy608;
	goto yy596;
yy605:
	++YYCURSOR;
#line 197 "../src/conf/parse_opts.re"
	{ opts.set_encoding_policy (Enc::POLICY_FAIL);       goto opt; }
#line 2507 "src/conf/parse_opts.cc"
yy607:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy609;
	goto yy596;
yy608:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'i') goto yy610;
	goto yy596;
yy609:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy611;
	goto yy596;
yy610:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy613;
	goto yy596;
yy611:
	++YYCURSOR;
#line 195 "../src/conf/parse_opts.re"
	{ opts.set_encoding_policy (Enc::POLICY_IGNORE);     goto opt; }
#line 2528 "src/conf/parse_opts.cc"
yy613:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych != 'u') goto yy596;
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych != 't') goto yy596;
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych != 'e') goto yy596;
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych >= 0x01) goto yy596;
	++YYCURSOR;
#line 196 "../src/conf/parse_opts.re"
	{ opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; }
#line 2541 "src/conf/parse_opts.cc"
}
#line 198 "../src/conf/parse_opts.re"


opt_input:
	if (!next (YYCURSOR, argv))
	{
		error_arg ("--input");
		return EXIT_FAIL;
	}

#line 2553 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	if (yych <= 'b') goto yy621;
	if (yych <= 'c') goto yy623;
	if (yych <= 'd') goto yy624;
yy621:
	++YYCURSOR;
yy622:
#line 208 "../src/conf/parse_opts.re"
	{
		error ("bad argument to option --input (expected: default | custom): %s", *argv);
		return EXIT_FAIL;
	}
#line 2568 "src/conf/parse_opts.cc"
yy623:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'u') goto yy625;
	goto yy622;
yy624:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'e') goto yy627;
	goto yy622;
yy625:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 's') goto yy628;
yy626:
	YYCURSOR = YYMARKER;
	goto yy622;
yy627:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'f') goto yy629;
	goto yy626;
yy628:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy630;
	goto yy626;
yy629:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'a') goto yy631;
	goto yy626;
yy630:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy632;
	goto yy626;
yy631:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'u') goto yy633;
	goto yy626;
yy632:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy634;
	goto yy626;
yy633:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy635;
	goto yy626;
yy634:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy636;
	goto yy626;
yy635:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy638;
	goto yy626;
yy636:
	++YYCURSOR;
#line 213 "../src/conf/parse_opts.re"
	{ opts.set_input_api (InputAPI::CUSTOM);  goto opt; }
#line 2623 "src/conf/parse_opts.cc"
yy638:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych >= 0x01) goto yy626;
	++YYCURSOR;
#line 212 "../src/conf/parse_opts.re"
	{ opts.set_input_api (InputAPI::DEFAULT); goto opt; }
#line 2630 "src/conf/parse_opts.cc"
}
#line 214 "../src/conf/parse_opts.re"


opt_empty_class:
	if (!next (YYCURSOR, argv))
	{
		error_arg ("--empty-class");
		return EXIT_FAIL;
	}

#line 2642 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	if (yych == 'e') goto yy645;
	if (yych == 'm') goto yy646;
	++YYCURSOR;
yy644:
#line 224 "../src/conf/parse_opts.re"
	{
		error ("bad argument to option --empty-class (expected: match-empty | match-none | error): %s", *argv);
		return EXIT_FAIL;
	}
#line 2655 "src/conf/parse_opts.cc"
yy645:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'r') goto yy647;
	goto yy644;
yy646:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'a') goto yy649;
	goto yy644;
yy647:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy650;
yy648:
	YYCURSOR = YYMARKER;
	goto yy644;
yy649:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy651;
	goto yy648;
yy650:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy652;
	goto yy648;
yy651:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'c') goto yy653;
	goto yy648;
yy652:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy654;
	goto yy648;
yy653:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'h') goto yy655;
	goto yy648;
yy654:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy656;
	goto yy648;
yy655:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == '-') goto yy658;
	goto yy648;
yy656:
	++YYCURSOR;
#line 230 "../src/conf/parse_opts.re"
	{ opts.set_empty_class_policy (EMPTY_CLASS_ERROR);       goto opt; }
#line 2702 "src/conf/parse_opts.cc"
yy658:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy659;
	if (yych == 'n') goto yy660;
	goto yy648;
yy659:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'm') goto yy661;
	goto yy648;
yy660:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy662;
	goto yy648;
yy661:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'p') goto yy663;
	goto yy648;
yy662:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'n') goto yy664;
	goto yy648;
yy663:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 't') goto yy665;
	goto yy648;
yy664:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy666;
	goto yy648;
yy665:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'y') goto yy667;
	goto yy648;
yy666:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy668;
	goto yy648;
yy667:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy670;
	goto yy648;
yy668:
	++YYCURSOR;
#line 229 "../src/conf/parse_opts.re"
	{ opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE);  goto opt; }
#line 2748 "src/conf/parse_opts.cc"
yy670:
	++YYCURSOR;
#line 228 "../src/conf/parse_opts.re"
	{ opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; }
#line 2753 "src/conf/parse_opts.cc"
}
#line 231 "../src/conf/parse_opts.re"


opt_dfa_minimization:
	if (!next (YYCURSOR, argv))
	{
		error_arg ("--minimization");
		return EXIT_FAIL;
	}

#line 2765 "src/conf/parse_opts.cc"
{
	YYCTYPE yych;
	yych = (YYCTYPE)*YYCURSOR;
	if (yych == 'm') goto yy676;
	if (yych == 't') goto yy677;
	++YYCURSOR;
yy675:
#line 241 "../src/conf/parse_opts.re"
	{
		error ("bad argument to option --dfa-minimization (expected: table | moore): %s", *argv);
		return EXIT_FAIL;
	}
#line 2778 "src/conf/parse_opts.cc"
yy676:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'o') goto yy678;
	goto yy675;
yy677:
	yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
	if (yych == 'a') goto yy680;
	goto yy675;
yy678:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'o') goto yy681;
yy679:
	YYCURSOR = YYMARKER;
	goto yy675;
yy680:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'b') goto yy682;
	goto yy679;
yy681:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'r') goto yy683;
	goto yy679;
yy682:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'l') goto yy684;
	goto yy679;
yy683:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy685;
	goto yy679;
yy684:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych == 'e') goto yy686;
	goto yy679;
yy685:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy687;
	goto yy679;
yy686:
	yych = (YYCTYPE)*++YYCURSOR;
	if (yych <= 0x00) goto yy689;
	goto yy679;
yy687:
	++YYCURSOR;
#line 246 "../src/conf/parse_opts.re"
	{ opts.set_dfa_minimization (DFA_MINIMIZATION_MOORE); goto opt; }
#line 2825 "src/conf/parse_opts.cc"
yy689:
	++YYCURSOR;
#line 245 "../src/conf/parse_opts.re"
	{ opts.set_dfa_minimization (DFA_MINIMIZATION_TABLE); goto opt; }
#line 2830 "src/conf/parse_opts.cc"
}
#line 247 "../src/conf/parse_opts.re"


end:
	if (!opts.source_file)
	{
		error ("no source file");
		return EXIT_FAIL;
	}

	return OK;

#undef YYCTYPE
}

} // namespace re2c
