/* Generated by re2c 2.2 */
#line 1 "ext/rbs_extension/lexer.re"
#include "rbs_extension.h"

token rbsparser_next_token(lexstate *state) {
  lexstate backup;

start:
  backup = *state;

  
#line 13 "ext/rbs_extension/lexer.c"
{
	unsigned int yych;
	unsigned int yyaccept = 0;
	yych = peek(state);
	switch (yych) {
	case 0x00000000:	goto yy2;
	case '\t':
	case '\n':
	case ' ':	goto yy6;
	case '!':	goto yy9;
	case '"':	goto yy11;
	case '#':	goto yy12;
	case '$':	goto yy15;
	case '%':	goto yy16;
	case '&':	goto yy17;
	case '\'':	goto yy19;
	case '(':	goto yy20;
	case ')':	goto yy22;
	case '*':	goto yy24;
	case '+':	goto yy26;
	case ',':	goto yy27;
	case '-':	goto yy29;
	case '.':	goto yy30;
	case '/':
	case '~':	goto yy32;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy33;
	case ':':	goto yy36;
	case '<':	goto yy38;
	case '=':	goto yy40;
	case '>':	goto yy42;
	case '?':	goto yy43;
	case '@':	goto yy45;
	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 yy46;
	case '[':	goto yy49;
	case ']':	goto yy51;
	case '^':	goto yy53;
	case '_':	goto yy55;
	case '`':	goto yy57;
	case 'a':	goto yy59;
	case 'b':	goto yy61;
	case 'c':	goto yy62;
	case 'd':	goto yy63;
	case 'e':	goto yy64;
	case 'f':	goto yy65;
	case 'g':
	case 'h':
	case 'j':
	case 'k':
	case 'l':
	case 'q':
	case 'r':
	case 'w':
	case 'x':
	case 'y':
	case 'z':	goto yy66;
	case 'i':	goto yy68;
	case 'm':	goto yy69;
	case 'n':	goto yy70;
	case 'o':	goto yy71;
	case 'p':	goto yy72;
	case 's':	goto yy73;
	case 't':	goto yy74;
	case 'u':	goto yy75;
	case 'v':	goto yy76;
	case '{':	goto yy77;
	case '|':	goto yy79;
	case '}':	goto yy81;
	default:	goto yy4;
	}
yy2:
	skip(state);
#line 137 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pEOF); }
#line 121 "ext/rbs_extension/lexer.c"
yy4:
	skip(state);
yy5:
#line 138 "ext/rbs_extension/lexer.re"
	{ return next_token(state, ErrorToken); }
#line 127 "ext/rbs_extension/lexer.c"
yy6:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000008) goto yy8;
	if (yych <= '\n') goto yy6;
	if (yych == ' ') goto yy6;
yy8:
#line 136 "ext/rbs_extension/lexer.re"
	{ state->start = state->current; goto start; }
#line 137 "ext/rbs_extension/lexer.c"
yy9:
	skip(state);
	yych = peek(state);
	if (yych == '=') goto yy32;
	if (yych == '~') goto yy32;
yy10:
#line 48 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tOPERATOR); }
#line 146 "ext/rbs_extension/lexer.c"
yy11:
	yyaccept = 0;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= 0x00000000) goto yy5;
	goto yy84;
yy12:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy14;
	if (yych != '\n') goto yy12;
yy14:
#line 59 "ext/rbs_extension/lexer.re"
	{
        return next_token(
          state,
          state->first_token_of_line ? tLINECOMMENT : tCOMMENT
        );
      }
#line 167 "ext/rbs_extension/lexer.c"
yy15:
	skip(state);
	yych = peek(state);
	if (yych <= ')') {
		if (yych <= 0x0000001F) {
			if (yych <= '\n') {
				if (yych <= 0x00000000) goto yy5;
				if (yych <= 0x00000008) goto yy90;
				goto yy5;
			} else {
				if (yych == '\r') goto yy5;
				goto yy90;
			}
		} else {
			if (yych <= '#') {
				if (yych <= ' ') goto yy5;
				if (yych <= '"') goto yy93;
				goto yy90;
			} else {
				if (yych == '%') goto yy5;
				if (yych <= '\'') goto yy93;
				goto yy5;
			}
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '/') {
				if (yych == '-') goto yy90;
				goto yy93;
			} else {
				if (yych <= '9') goto yy90;
				if (yych <= '>') goto yy93;
				goto yy90;
			}
		} else {
			if (yych <= '^') {
				if (yych == '\\') goto yy93;
				goto yy5;
			} else {
				if (yych <= 'z') goto yy90;
				if (yych <= '}') goto yy5;
				if (yych <= '~') goto yy93;
				goto yy90;
			}
		}
	}
yy16:
	yyaccept = 1;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych == 'a') goto yy94;
	goto yy10;
yy17:
	skip(state);
#line 34 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pAMP); }
#line 225 "ext/rbs_extension/lexer.c"
yy19:
	yyaccept = 0;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= 0x00000000) goto yy5;
	goto yy96;
yy20:
	skip(state);
#line 25 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLPAREN); }
#line 237 "ext/rbs_extension/lexer.c"
yy22:
	skip(state);
#line 26 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pRPAREN); }
#line 242 "ext/rbs_extension/lexer.c"
yy24:
	skip(state);
	yych = peek(state);
	if (yych == '*') goto yy101;
#line 36 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pSTAR); }
#line 249 "ext/rbs_extension/lexer.c"
yy26:
	skip(state);
	yych = peek(state);
	if (yych <= '/') goto yy10;
	if (yych <= '9') goto yy33;
	if (yych == '@') goto yy32;
	goto yy10;
yy27:
	skip(state);
#line 31 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pCOMMA); }
#line 261 "ext/rbs_extension/lexer.c"
yy29:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') goto yy10;
		if (yych <= '9') goto yy33;
		goto yy10;
	} else {
		if (yych <= '>') goto yy103;
		if (yych == '@') goto yy32;
		goto yy10;
	}
yy30:
	yyaccept = 2;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych == '.') goto yy105;
yy31:
#line 38 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pDOT); }
#line 283 "ext/rbs_extension/lexer.c"
yy32:
	skip(state);
	goto yy10;
yy33:
	skip(state);
	yych = peek(state);
	if (yych <= '/') goto yy35;
	if (yych <= '9') goto yy33;
	if (yych == '_') goto yy33;
yy35:
#line 51 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tINTEGER); }
#line 296 "ext/rbs_extension/lexer.c"
yy36:
	yyaccept = 3;
	skip(state);
	backup = *state;
	yych = peek(state);
	switch (yych) {
	case '!':	goto yy106;
	case '"':	goto yy108;
	case '$':	goto yy110;
	case '%':
	case '&':
	case '/':
	case '^':
	case '`':
	case '|':
	case '~':	goto yy111;
	case '\'':	goto yy112;
	case '*':	goto yy114;
	case '+':
	case '-':	goto yy115;
	case ':':	goto yy116;
	case '<':	goto yy118;
	case '=':	goto yy119;
	case '>':	goto yy120;
	case '@':	goto yy121;
	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 yy122;
	case '[':	goto yy125;
	default:	goto yy37;
	}
yy37:
#line 45 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pCOLON); }
#line 381 "ext/rbs_extension/lexer.c"
yy38:
	skip(state);
	yych = peek(state);
	if (yych <= ';') goto yy39;
	if (yych <= '<') goto yy32;
	if (yych <= '=') goto yy126;
yy39:
#line 47 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLT); }
#line 391 "ext/rbs_extension/lexer.c"
yy40:
	skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '<') goto yy41;
		if (yych <= '=') goto yy127;
		goto yy128;
	} else {
		if (yych == '~') goto yy32;
	}
yy41:
#line 44 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pEQ); }
#line 405 "ext/rbs_extension/lexer.c"
yy42:
	skip(state);
	yych = peek(state);
	if (yych <= '<') goto yy10;
	if (yych <= '>') goto yy32;
	goto yy10;
yy43:
	skip(state);
#line 35 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pQUESTION); }
#line 416 "ext/rbs_extension/lexer.c"
yy45:
	yyaccept = 0;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '?') goto yy5;
		if (yych <= '@') goto yy130;
		if (yych <= 'Z') goto yy131;
		goto yy5;
	} else {
		if (yych == '`') goto yy5;
		if (yych <= 'z') goto yy131;
		goto yy5;
	}
yy46:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy46;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy48;
			if (yych <= 'Z') goto yy46;
		} else {
			if (yych == '`') goto yy48;
			if (yych <= 'z') goto yy46;
		}
	}
yy48:
#line 122 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tUIDENT); }
#line 454 "ext/rbs_extension/lexer.c"
yy49:
	skip(state);
	yych = peek(state);
	if (yych == ']') goto yy127;
#line 27 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLBRACKET); }
#line 461 "ext/rbs_extension/lexer.c"
yy51:
	skip(state);
#line 28 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pRBRACKET); }
#line 466 "ext/rbs_extension/lexer.c"
yy53:
	skip(state);
#line 33 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pHAT); }
#line 471 "ext/rbs_extension/lexer.c"
yy55:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy138;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy56;
			if (yych <= 'Z') goto yy141;
		} else {
			if (yych == '`') goto yy56;
			if (yych <= 'z') goto yy138;
		}
	}
yy56:
#line 125 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tULLIDENT); }
#line 494 "ext/rbs_extension/lexer.c"
yy57:
	yyaccept = 4;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= ' ') {
		if (yych <= 0x00000000) goto yy58;
		if (yych <= 0x0000001F) goto yy144;
	} else {
		if (yych != ':') goto yy144;
	}
yy58:
#line 40 "ext/rbs_extension/lexer.re"
	{  return next_token(state, tOPERATOR); }
#line 509 "ext/rbs_extension/lexer.c"
yy59:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy146;
	if (yych == 't') goto yy147;
	goto yy67;
yy60:
#line 121 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tLIDENT); }
#line 519 "ext/rbs_extension/lexer.c"
yy61:
	skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy148;
	goto yy67;
yy62:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy149;
	goto yy67;
yy63:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy150;
	goto yy67;
yy64:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy151;
	if (yych == 'x') goto yy152;
	goto yy67;
yy65:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy153;
	goto yy67;
yy66:
	skip(state);
	yych = peek(state);
yy67:
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
			goto yy60;
		} else {
			if (yych <= '9') goto yy66;
			if (yych <= '<') goto yy60;
			goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy60;
			if (yych <= 'Z') goto yy66;
			goto yy60;
		} else {
			if (yych == '`') goto yy60;
			if (yych <= 'z') goto yy66;
			goto yy60;
		}
	}
yy68:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy154;
	goto yy67;
yy69:
	skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy156;
	goto yy67;
yy70:
	skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy157;
	goto yy67;
yy71:
	skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy158;
	goto yy67;
yy72:
	skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy159;
	if (yych == 'u') goto yy160;
	goto yy67;
yy73:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy161;
	if (yych == 'i') goto yy162;
	goto yy67;
yy74:
	skip(state);
	yych = peek(state);
	if (yych <= 'q') {
		if (yych == 'o') goto yy163;
		goto yy67;
	} else {
		if (yych <= 'r') goto yy164;
		if (yych == 'y') goto yy165;
		goto yy67;
	}
yy75:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy166;
	goto yy67;
yy76:
	skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy167;
	goto yy67;
yy77:
	skip(state);
#line 29 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLBRACE); }
#line 627 "ext/rbs_extension/lexer.c"
yy79:
	skip(state);
#line 32 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pBAR); }
#line 632 "ext/rbs_extension/lexer.c"
yy81:
	skip(state);
#line 30 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pRBRACE); }
#line 637 "ext/rbs_extension/lexer.c"
yy83:
	skip(state);
	yych = peek(state);
yy84:
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '!') goto yy83;
		goto yy86;
	} else {
		if (yych == '\\') goto yy88;
		goto yy83;
	}
yy85:
	*state = backup;
	if (yyaccept <= 4) {
		if (yyaccept <= 2) {
			if (yyaccept <= 1) {
				if (yyaccept == 0) {
					goto yy5;
				} else {
					goto yy10;
				}
			} else {
				goto yy31;
			}
		} else {
			if (yyaccept == 3) {
				goto yy37;
			} else {
				goto yy58;
			}
		}
	} else {
		if (yyaccept <= 6) {
			if (yyaccept == 5) {
				goto yy87;
			} else {
				goto yy98;
			}
		} else {
			if (yyaccept == 7) {
				goto yy183;
			} else {
				goto yy191;
			}
		}
	}
yy86:
	skip(state);
yy87:
#line 99 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tDQSTRING); }
#line 690 "ext/rbs_extension/lexer.c"
yy88:
	skip(state);
	yych = peek(state);
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '!') goto yy83;
		goto yy168;
	} else {
		if (yych == '\\') goto yy88;
		goto yy83;
	}
yy90:
	skip(state);
	yych = peek(state);
	if (yych <= ',') {
		if (yych <= '\f') {
			if (yych <= 0x00000000) goto yy92;
			if (yych <= 0x00000008) goto yy90;
			if (yych >= '\v') goto yy90;
		} else {
			if (yych <= 0x0000001F) {
				if (yych >= 0x0000000E) goto yy90;
			} else {
				if (yych == '#') goto yy90;
			}
		}
	} else {
		if (yych <= '>') {
			if (yych <= '-') goto yy90;
			if (yych <= '/') goto yy92;
			if (yych <= '9') goto yy90;
		} else {
			if (yych <= '^') {
				if (yych <= 'Z') goto yy90;
			} else {
				if (yych <= 'z') goto yy90;
				if (yych >= 0x0000007F) goto yy90;
			}
		}
	}
yy92:
#line 132 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tGIDENT); }
#line 734 "ext/rbs_extension/lexer.c"
yy93:
	skip(state);
	goto yy92;
yy94:
	skip(state);
	yych = peek(state);
	if (yych <= 'Z') {
		if (yych <= '(') {
			if (yych <= '\'') goto yy85;
			goto yy169;
		} else {
			if (yych == '<') goto yy171;
			goto yy85;
		}
	} else {
		if (yych <= 'z') {
			if (yych <= '[') goto yy173;
			goto yy85;
		} else {
			if (yych <= '{') goto yy175;
			if (yych <= '|') goto yy177;
			goto yy85;
		}
	}
yy95:
	skip(state);
	yych = peek(state);
yy96:
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '&') goto yy95;
	} else {
		if (yych == '\\') goto yy99;
		goto yy95;
	}
yy97:
	skip(state);
yy98:
#line 100 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSQSTRING); }
#line 775 "ext/rbs_extension/lexer.c"
yy99:
	skip(state);
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '&') goto yy95;
		goto yy179;
	} else {
		if (yych == '\\') goto yy99;
		goto yy95;
	}
yy101:
	skip(state);
#line 37 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pSTAR2); }
#line 791 "ext/rbs_extension/lexer.c"
yy103:
	skip(state);
#line 42 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pARROW); }
#line 796 "ext/rbs_extension/lexer.c"
yy105:
	skip(state);
	yych = peek(state);
	if (yych == '.') goto yy180;
	goto yy85;
yy106:
	skip(state);
	yych = peek(state);
	if (yych == '=') goto yy111;
	if (yych == '~') goto yy111;
yy107:
#line 119 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 810 "ext/rbs_extension/lexer.c"
yy108:
	skip(state);
	yych = peek(state);
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '!') goto yy108;
		goto yy182;
	} else {
		if (yych == '\\') goto yy184;
		goto yy108;
	}
yy110:
	skip(state);
	yych = peek(state);
	if (yych <= ')') {
		if (yych <= 0x0000001F) {
			if (yych <= '\n') {
				if (yych <= 0x00000000) goto yy85;
				if (yych <= 0x00000008) goto yy186;
				goto yy85;
			} else {
				if (yych == '\r') goto yy85;
				goto yy186;
			}
		} else {
			if (yych <= '#') {
				if (yych <= ' ') goto yy85;
				if (yych <= '"') goto yy189;
				goto yy186;
			} else {
				if (yych == '%') goto yy85;
				if (yych <= '\'') goto yy189;
				goto yy85;
			}
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '/') {
				if (yych == '-') goto yy186;
				goto yy189;
			} else {
				if (yych <= '9') goto yy186;
				if (yych <= '>') goto yy189;
				goto yy186;
			}
		} else {
			if (yych <= '^') {
				if (yych == '\\') goto yy189;
				goto yy85;
			} else {
				if (yych <= 'z') goto yy186;
				if (yych <= '}') goto yy85;
				if (yych <= '~') goto yy189;
				goto yy186;
			}
		}
	}
yy111:
	skip(state);
	goto yy107;
yy112:
	skip(state);
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '&') goto yy112;
		goto yy190;
	} else {
		if (yych == '\\') goto yy192;
		goto yy112;
	}
yy114:
	skip(state);
	yych = peek(state);
	if (yych == '*') goto yy111;
	goto yy107;
yy115:
	skip(state);
	yych = peek(state);
	if (yych == '@') goto yy111;
	goto yy107;
yy116:
	skip(state);
#line 46 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pCOLON2); }
#line 896 "ext/rbs_extension/lexer.c"
yy118:
	skip(state);
	yych = peek(state);
	if (yych <= ';') goto yy107;
	if (yych <= '<') goto yy111;
	if (yych <= '=') goto yy194;
	goto yy107;
yy119:
	skip(state);
	yych = peek(state);
	if (yych == '=') goto yy195;
	if (yych == '~') goto yy111;
	goto yy85;
yy120:
	skip(state);
	yych = peek(state);
	if (yych <= '<') goto yy107;
	if (yych <= '>') goto yy111;
	goto yy107;
yy121:
	skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '?') goto yy85;
		if (yych <= '@') goto yy196;
		if (yych <= 'Z') goto yy197;
		goto yy85;
	} else {
		if (yych == '`') goto yy85;
		if (yych <= 'z') goto yy197;
		goto yy85;
	}
yy122:
	skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '/') {
			if (yych == '!') goto yy200;
		} else {
			if (yych <= '9') goto yy122;
			if (yych == '=') goto yy200;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '?') goto yy200;
			if (yych <= '@') goto yy124;
			if (yych <= 'Z') goto yy122;
		} else {
			if (yych == '`') goto yy124;
			if (yych <= 'z') goto yy122;
		}
	}
yy124:
#line 115 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 952 "ext/rbs_extension/lexer.c"
yy125:
	skip(state);
	yych = peek(state);
	if (yych == ']') goto yy195;
	goto yy85;
yy126:
	skip(state);
	yych = peek(state);
	if (yych == '>') goto yy32;
	goto yy10;
yy127:
	skip(state);
	yych = peek(state);
	if (yych == '=') goto yy32;
	goto yy10;
yy128:
	skip(state);
#line 43 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pFATARROW); }
#line 972 "ext/rbs_extension/lexer.c"
yy130:
	skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '@') goto yy85;
		if (yych <= 'Z') goto yy201;
		goto yy85;
	} else {
		if (yych == '`') goto yy85;
		if (yych <= 'z') goto yy201;
		goto yy85;
	}
yy131:
	skip(state);
	yych = peek(state);
	if (yych <= 'Z') {
		if (yych <= '/') goto yy133;
		if (yych <= '9') goto yy131;
		if (yych >= 'A') goto yy131;
	} else {
		if (yych <= '_') {
			if (yych >= '_') goto yy131;
		} else {
			if (yych <= '`') goto yy133;
			if (yych <= 'z') goto yy131;
		}
	}
yy133:
#line 129 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tAIDENT); }
#line 1003 "ext/rbs_extension/lexer.c"
yy134:
	skip(state);
#line 126 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tBANGIDENT); }
#line 1008 "ext/rbs_extension/lexer.c"
yy136:
	skip(state);
#line 127 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tEQIDENT); }
#line 1013 "ext/rbs_extension/lexer.c"
yy138:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy138;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy140;
			if (yych <= 'Z') goto yy138;
		} else {
			if (yych == '`') goto yy140;
			if (yych <= 'z') goto yy138;
		}
	}
yy140:
#line 123 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tULLIDENT); }
#line 1036 "ext/rbs_extension/lexer.c"
yy141:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy141;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy143;
			if (yych <= 'Z') goto yy141;
		} else {
			if (yych == '`') goto yy143;
			if (yych <= 'z') goto yy141;
		}
	}
yy143:
#line 124 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tULIDENT); }
#line 1059 "ext/rbs_extension/lexer.c"
yy144:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy85;
	if (yych == '`') goto yy204;
	goto yy144;
yy146:
	skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy206;
	goto yy67;
yy147:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy207;
	goto yy67;
yy148:
	skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy208;
	if (yych == 't') goto yy209;
	goto yy67;
yy149:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy211;
	goto yy67;
yy150:
	skip(state);
	yych = peek(state);
	if (yych == 'f') goto yy212;
	goto yy67;
yy151:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy214;
	goto yy67;
yy152:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy216;
	goto yy67;
yy153:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy217;
	goto yy67;
yy154:
	skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '9') {
			if (yych == '!') goto yy134;
			if (yych >= '0') goto yy66;
		} else {
			if (yych <= '=') {
				if (yych >= '=') goto yy136;
			} else {
				if (yych <= '@') goto yy155;
				if (yych <= 'Z') goto yy66;
			}
		}
	} else {
		if (yych <= 'c') {
			if (yych == '`') goto yy155;
			if (yych <= 'b') goto yy66;
			goto yy218;
		} else {
			if (yych <= 's') {
				if (yych <= 'r') goto yy66;
				goto yy219;
			} else {
				if (yych <= 't') goto yy220;
				if (yych <= 'z') goto yy66;
			}
		}
	}
yy155:
#line 77 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kIN); }
#line 1140 "ext/rbs_extension/lexer.c"
yy156:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy221;
	goto yy67;
yy157:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy222;
	goto yy67;
yy158:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy224;
	goto yy67;
yy159:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy226;
	if (yych == 'i') goto yy227;
	goto yy67;
yy160:
	skip(state);
	yych = peek(state);
	if (yych == 'b') goto yy228;
	goto yy67;
yy161:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy229;
	goto yy67;
yy162:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy230;
	goto yy67;
yy163:
	skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy231;
	goto yy67;
yy164:
	skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy233;
	goto yy67;
yy165:
	skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy234;
	goto yy67;
yy166:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy235;
	if (yych == 't') goto yy236;
	goto yy67;
yy167:
	skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy237;
	goto yy67;
yy168:
	yyaccept = 5;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy87;
		if (yych <= '!') goto yy83;
		goto yy86;
	} else {
		if (yych == '\\') goto yy88;
		goto yy83;
	}
yy169:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy85;
	if (yych == ')') goto yy238;
	goto yy169;
yy171:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy85;
	if (yych == '>') goto yy240;
	goto yy171;
yy173:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy85;
	if (yych == ']') goto yy242;
	goto yy173;
yy175:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy85;
	if (yych == '}') goto yy244;
	goto yy175;
yy177:
	skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy85;
	if (yych == '|') goto yy246;
	goto yy177;
yy179:
	yyaccept = 6;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy98;
		if (yych <= '&') goto yy95;
		goto yy97;
	} else {
		if (yych == '\\') goto yy99;
		goto yy95;
	}
yy180:
	skip(state);
#line 39 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pDOT3); }
#line 1263 "ext/rbs_extension/lexer.c"
yy182:
	skip(state);
yy183:
#line 101 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tDQSYMBOL); }
#line 1269 "ext/rbs_extension/lexer.c"
yy184:
	skip(state);
	yych = peek(state);
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '!') goto yy108;
		goto yy248;
	} else {
		if (yych == '\\') goto yy184;
		goto yy108;
	}
yy186:
	skip(state);
	yych = peek(state);
	if (yych <= ',') {
		if (yych <= '\f') {
			if (yych <= 0x00000000) goto yy188;
			if (yych <= 0x00000008) goto yy186;
			if (yych >= '\v') goto yy186;
		} else {
			if (yych <= 0x0000001F) {
				if (yych >= 0x0000000E) goto yy186;
			} else {
				if (yych == '#') goto yy186;
			}
		}
	} else {
		if (yych <= '>') {
			if (yych <= '-') goto yy186;
			if (yych <= '/') goto yy188;
			if (yych <= '9') goto yy186;
		} else {
			if (yych <= '^') {
				if (yych <= 'Z') goto yy186;
			} else {
				if (yych <= 'z') goto yy186;
				if (yych >= 0x0000007F) goto yy186;
			}
		}
	}
yy188:
#line 118 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 1313 "ext/rbs_extension/lexer.c"
yy189:
	skip(state);
	goto yy188;
yy190:
	skip(state);
yy191:
#line 102 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSQSYMBOL); }
#line 1322 "ext/rbs_extension/lexer.c"
yy192:
	skip(state);
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy85;
		if (yych <= '&') goto yy112;
		goto yy249;
	} else {
		if (yych == '\\') goto yy192;
		goto yy112;
	}
yy194:
	skip(state);
	yych = peek(state);
	if (yych == '>') goto yy111;
	goto yy107;
yy195:
	skip(state);
	yych = peek(state);
	if (yych == '=') goto yy111;
	goto yy107;
yy196:
	skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '@') goto yy85;
		if (yych <= 'Z') goto yy250;
		goto yy85;
	} else {
		if (yych == '`') goto yy85;
		if (yych <= 'z') goto yy250;
		goto yy85;
	}
yy197:
	skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '/') {
			if (yych == '!') goto yy253;
		} else {
			if (yych <= '9') goto yy197;
			if (yych == '=') goto yy253;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '?') goto yy253;
			if (yych <= '@') goto yy199;
			if (yych <= 'Z') goto yy197;
		} else {
			if (yych == '`') goto yy199;
			if (yych <= 'z') goto yy197;
		}
	}
yy199:
#line 116 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 1379 "ext/rbs_extension/lexer.c"
yy200:
	skip(state);
	goto yy124;
yy201:
	skip(state);
	yych = peek(state);
	if (yych <= 'Z') {
		if (yych <= '/') goto yy203;
		if (yych <= '9') goto yy201;
		if (yych >= 'A') goto yy201;
	} else {
		if (yych <= '_') {
			if (yych >= '_') goto yy201;
		} else {
			if (yych <= '`') goto yy203;
			if (yych <= 'z') goto yy201;
		}
	}
yy203:
#line 130 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tA2IDENT); }
#line 1401 "ext/rbs_extension/lexer.c"
yy204:
	skip(state);
#line 41 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tQIDENT); }
#line 1406 "ext/rbs_extension/lexer.c"
yy206:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy254;
	goto yy67;
yy207:
	skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy255;
	goto yy67;
yy208:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy256;
	goto yy67;
yy209:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy210;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy210;
			if (yych <= 'z') goto yy66;
		}
	}
yy210:
#line 71 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kBOT); }
#line 1444 "ext/rbs_extension/lexer.c"
yy211:
	skip(state);
	yych = peek(state);
	if (yych == 's') goto yy258;
	goto yy67;
yy212:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy213;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy213;
			if (yych <= 'z') goto yy66;
		}
	}
yy213:
#line 73 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kDEF); }
#line 1472 "ext/rbs_extension/lexer.c"
yy214:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy215;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy215;
			if (yych <= 'z') goto yy66;
		}
	}
yy215:
#line 74 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kEND); }
#line 1495 "ext/rbs_extension/lexer.c"
yy216:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy259;
	goto yy67;
yy217:
	skip(state);
	yych = peek(state);
	if (yych == 's') goto yy260;
	goto yy67;
yy218:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy261;
	goto yy67;
yy219:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy262;
	goto yy67;
yy220:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy263;
	goto yy67;
yy221:
	skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy264;
	goto yy67;
yy222:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy223;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy223;
			if (yych <= 'z') goto yy66;
		}
	}
yy223:
#line 82 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kNIL); }
#line 1548 "ext/rbs_extension/lexer.c"
yy224:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy225;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy225;
			if (yych <= 'z') goto yy66;
		}
	}
yy225:
#line 83 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kOUT); }
#line 1571 "ext/rbs_extension/lexer.c"
yy226:
	skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy265;
	goto yy67;
yy227:
	skip(state);
	yych = peek(state);
	if (yych == 'v') goto yy266;
	goto yy67;
yy228:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy267;
	goto yy67;
yy229:
	skip(state);
	yych = peek(state);
	if (yych == 'f') goto yy268;
	goto yy67;
yy230:
	skip(state);
	yych = peek(state);
	if (yych == 'g') goto yy270;
	goto yy67;
yy231:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy232;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy232;
			if (yych <= 'z') goto yy66;
		}
	}
yy232:
#line 89 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kTOP); }
#line 1619 "ext/rbs_extension/lexer.c"
yy233:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy271;
	goto yy67;
yy234:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy273;
	goto yy67;
yy235:
	skip(state);
	yych = peek(state);
	if (yych == 'h') goto yy275;
	goto yy67;
yy236:
	skip(state);
	yych = peek(state);
	if (yych == 'y') goto yy276;
	goto yy67;
yy237:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy277;
	goto yy67;
yy238:
	skip(state);
#line 54 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1649 "ext/rbs_extension/lexer.c"
yy240:
	skip(state);
#line 57 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1654 "ext/rbs_extension/lexer.c"
yy242:
	skip(state);
#line 55 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1659 "ext/rbs_extension/lexer.c"
yy244:
	skip(state);
#line 53 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1664 "ext/rbs_extension/lexer.c"
yy246:
	skip(state);
#line 56 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1669 "ext/rbs_extension/lexer.c"
yy248:
	yyaccept = 7;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy183;
		if (yych <= '!') goto yy108;
		goto yy182;
	} else {
		if (yych == '\\') goto yy184;
		goto yy108;
	}
yy249:
	yyaccept = 8;
	skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy191;
		if (yych <= '&') goto yy112;
		goto yy190;
	} else {
		if (yych == '\\') goto yy192;
		goto yy112;
	}
yy250:
	skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '/') {
			if (yych == '!') goto yy279;
		} else {
			if (yych <= '9') goto yy250;
			if (yych == '=') goto yy279;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '?') goto yy279;
			if (yych <= '@') goto yy252;
			if (yych <= 'Z') goto yy250;
		} else {
			if (yych == '`') goto yy252;
			if (yych <= 'z') goto yy250;
		}
	}
yy252:
#line 117 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 1719 "ext/rbs_extension/lexer.c"
yy253:
	skip(state);
	goto yy199;
yy254:
	skip(state);
	yych = peek(state);
	if (yych == 's') goto yy280;
	goto yy67;
yy255:
	skip(state);
	yych = peek(state);
	if (yych == '_') goto yy282;
	goto yy67;
yy256:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy257;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy257;
			if (yych <= 'z') goto yy66;
		}
	}
yy257:
#line 70 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kBOOL); }
#line 1755 "ext/rbs_extension/lexer.c"
yy258:
	skip(state);
	yych = peek(state);
	if (yych == 's') goto yy283;
	goto yy67;
yy259:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy285;
	goto yy67;
yy260:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy286;
	goto yy67;
yy261:
	skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy288;
	goto yy67;
yy262:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy289;
	goto yy67;
yy263:
	skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy290;
	goto yy67;
yy264:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy291;
	goto yy67;
yy265:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy292;
	goto yy67;
yy266:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy293;
	goto yy67;
yy267:
	skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy294;
	goto yy67;
yy268:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy269;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy269;
			if (yych <= 'z') goto yy66;
		}
	}
yy269:
#line 87 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kSELF); }
#line 1828 "ext/rbs_extension/lexer.c"
yy270:
	skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy295;
	goto yy67;
yy271:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy272;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy272;
			if (yych <= 'z') goto yy66;
		}
	}
yy272:
#line 90 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kTRUE); }
#line 1856 "ext/rbs_extension/lexer.c"
yy273:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy274;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy274;
			if (yych <= 'z') goto yy66;
		}
	}
yy274:
#line 91 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kTYPE); }
#line 1879 "ext/rbs_extension/lexer.c"
yy275:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy296;
	goto yy67;
yy276:
	skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy297;
	goto yy67;
yy277:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy278;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy278;
			if (yych <= 'z') goto yy66;
		}
	}
yy278:
#line 94 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kVOID); }
#line 1912 "ext/rbs_extension/lexer.c"
yy279:
	skip(state);
	goto yy252;
yy280:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy281;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy281;
			if (yych <= 'z') goto yy66;
		}
	}
yy281:
#line 66 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kALIAS); }
#line 1938 "ext/rbs_extension/lexer.c"
yy282:
	skip(state);
	yych = peek(state);
	if (yych <= 'q') {
		if (yych == 'a') goto yy298;
		goto yy67;
	} else {
		if (yych <= 'r') goto yy299;
		if (yych == 'w') goto yy300;
		goto yy67;
	}
yy283:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy284;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy284;
			if (yych <= 'z') goto yy66;
		}
	}
yy284:
#line 72 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kCLASS); }
#line 1972 "ext/rbs_extension/lexer.c"
yy285:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy301;
	goto yy67;
yy286:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy287;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy287;
			if (yych <= 'z') goto yy66;
		}
	}
yy287:
#line 76 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kFALSE); }
#line 2000 "ext/rbs_extension/lexer.c"
yy288:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy303;
	goto yy67;
yy289:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy304;
	goto yy67;
yy290:
	skip(state);
	yych = peek(state);
	if (yych == 'f') goto yy305;
	goto yy67;
yy291:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy306;
	goto yy67;
yy292:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy308;
	goto yy67;
yy293:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy309;
	goto yy67;
yy294:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy310;
	goto yy67;
yy295:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy312;
	goto yy67;
yy296:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy313;
	goto yy67;
yy297:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy314;
	goto yy67;
yy298:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy315;
	goto yy67;
yy299:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy316;
	goto yy67;
yy300:
	skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy317;
	goto yy67;
yy301:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy302;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy302;
			if (yych <= 'z') goto yy66;
		}
	}
yy302:
#line 75 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kEXTEND); }
#line 2088 "ext/rbs_extension/lexer.c"
yy303:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy318;
	goto yy67;
yy304:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy320;
	goto yy67;
yy305:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy321;
	goto yy67;
yy306:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy307;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy307;
			if (yych <= 'z') goto yy66;
		}
	}
yy307:
#line 81 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kMODULE); }
#line 2126 "ext/rbs_extension/lexer.c"
yy308:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy322;
	goto yy67;
yy309:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy324;
	goto yy67;
yy310:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy311;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy311;
			if (yych <= 'z') goto yy66;
		}
	}
yy311:
#line 86 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kPUBLIC); }
#line 2159 "ext/rbs_extension/lexer.c"
yy312:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy326;
	goto yy67;
yy313:
	skip(state);
	yych = peek(state);
	if (yych == 'k') goto yy327;
	goto yy67;
yy314:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy328;
	goto yy67;
yy315:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy330;
	goto yy67;
yy316:
	skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy331;
	goto yy67;
yy317:
	skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy332;
	goto yy67;
yy318:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy319;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy319;
			if (yych <= 'z') goto yy66;
		}
	}
yy319:
#line 78 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kINCLUDE); }
#line 2212 "ext/rbs_extension/lexer.c"
yy320:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy333;
	goto yy67;
yy321:
	skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy335;
	goto yy67;
yy322:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy323;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy323;
			if (yych <= 'z') goto yy66;
		}
	}
yy323:
#line 84 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kPREPEND); }
#line 2245 "ext/rbs_extension/lexer.c"
yy324:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy325;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy325;
			if (yych <= 'z') goto yy66;
		}
	}
yy325:
#line 85 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kPRIVATE); }
#line 2268 "ext/rbs_extension/lexer.c"
yy326:
	skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy336;
	goto yy67;
yy327:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy337;
	goto yy67;
yy328:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy329;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy329;
			if (yych <= 'z') goto yy66;
		}
	}
yy329:
#line 93 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kUNTYPED); }
#line 2301 "ext/rbs_extension/lexer.c"
yy330:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy338;
	goto yy67;
yy331:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy339;
	goto yy67;
yy332:
	skip(state);
	yych = peek(state);
	if (yych == 't') goto yy340;
	goto yy67;
yy333:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy334;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy334;
			if (yych <= 'z') goto yy66;
		}
	}
yy334:
#line 79 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kINSTANCE); }
#line 2339 "ext/rbs_extension/lexer.c"
yy335:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy341;
	goto yy67;
yy336:
	skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy343;
	goto yy67;
yy337:
	skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy345;
	goto yy67;
yy338:
	skip(state);
	yych = peek(state);
	if (yych == 's') goto yy347;
	goto yy67;
yy339:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy348;
	goto yy67;
yy340:
	skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy349;
	goto yy67;
yy341:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy342;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy342;
			if (yych <= 'z') goto yy66;
		}
	}
yy342:
#line 80 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kINTERFACE); }
#line 2392 "ext/rbs_extension/lexer.c"
yy343:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy344;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy344;
			if (yych <= 'z') goto yy66;
		}
	}
yy344:
#line 88 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kSINGLETON); }
#line 2415 "ext/rbs_extension/lexer.c"
yy345:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy346;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy346;
			if (yych <= 'z') goto yy66;
		}
	}
yy346:
#line 92 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kUNCHECKED); }
#line 2438 "ext/rbs_extension/lexer.c"
yy347:
	skip(state);
	yych = peek(state);
	if (yych == 's') goto yy350;
	goto yy67;
yy348:
	skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy351;
	goto yy67;
yy349:
	skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy353;
	goto yy67;
yy350:
	skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy355;
	goto yy67;
yy351:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy352;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy352;
			if (yych <= 'z') goto yy66;
		}
	}
yy352:
#line 68 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kATTRREADER); }
#line 2481 "ext/rbs_extension/lexer.c"
yy353:
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy354;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy354;
			if (yych <= 'z') goto yy66;
		}
	}
yy354:
#line 69 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kATTRWRITER); }
#line 2504 "ext/rbs_extension/lexer.c"
yy355:
	skip(state);
	yych = peek(state);
	if (yych != 'r') goto yy67;
	skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy134;
		} else {
			if (yych <= '9') goto yy66;
			if (yych >= '=') goto yy136;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy357;
			if (yych <= 'Z') goto yy66;
		} else {
			if (yych == '`') goto yy357;
			if (yych <= 'z') goto yy66;
		}
	}
yy357:
#line 67 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kATTRACCESSOR); }
#line 2530 "ext/rbs_extension/lexer.c"
}
#line 139 "ext/rbs_extension/lexer.re"

}
