/* Generated by re2c 3.1 */
#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 yy1;
		case '\t':
		case '\n':
		case '\r':
		case ' ': goto yy4;
		case '!': goto yy6;
		case '"': goto yy8;
		case '#': goto yy9;
		case '$': goto yy11;
		case '%': goto yy12;
		case '&': goto yy13;
		case '\'': goto yy14;
		case '(': goto yy15;
		case ')': goto yy16;
		case '*': goto yy17;
		case '+': goto yy18;
		case ',': goto yy19;
		case '-': goto yy20;
		case '.': goto yy21;
		case '/':
		case '~': goto yy23;
		case '0':
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9': goto yy24;
		case ':': goto yy26;
		case '<': goto yy28;
		case '=': goto yy30;
		case '>': goto yy32;
		case '?': goto yy33;
		case '@': goto yy34;
		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 yy35;
		case '[': goto yy37;
		case ']': goto yy38;
		case '^': goto yy39;
		case '_': goto yy40;
		case '`': goto yy42;
		case 'a': goto yy44;
		case 'b': goto yy46;
		case 'c': goto yy47;
		case 'd': goto yy48;
		case 'e': goto yy49;
		case 'f': goto yy50;
		case 'g':
		case 'h':
		case 'j':
		case 'k':
		case 'l':
		case 'q':
		case 'r':
		case 'w':
		case 'x':
		case 'y':
		case 'z': goto yy51;
		case 'i': goto yy53;
		case 'm': goto yy54;
		case 'n': goto yy55;
		case 'o': goto yy56;
		case 'p': goto yy57;
		case 's': goto yy58;
		case 't': goto yy59;
		case 'u': goto yy60;
		case 'v': goto yy61;
		case '{': goto yy62;
		case '|': goto yy63;
		case '}': goto yy64;
		default: goto yy2;
	}
yy1:
	rbs_skip(state);
#line 145 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pEOF); }
#line 122 "ext/rbs_extension/lexer.c"
yy2:
	rbs_skip(state);
yy3:
#line 146 "ext/rbs_extension/lexer.re"
	{ return next_token(state, ErrorToken); }
#line 128 "ext/rbs_extension/lexer.c"
yy4:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '\f') {
		if (yych <= 0x00000008) goto yy5;
		if (yych <= '\n') goto yy4;
	} else {
		if (yych <= '\r') goto yy4;
		if (yych == ' ') goto yy4;
	}
yy5:
#line 144 "ext/rbs_extension/lexer.re"
	{ state->start = state->current; goto start; }
#line 142 "ext/rbs_extension/lexer.c"
yy6:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '=') goto yy23;
	if (yych == '~') goto yy23;
yy7:
#line 49 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tOPERATOR); }
#line 151 "ext/rbs_extension/lexer.c"
yy8:
	yyaccept = 0;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= 0x00000000) goto yy3;
	goto yy66;
yy9:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy10;
	if (yych != '\n') goto yy9;
yy10:
#line 60 "ext/rbs_extension/lexer.re"
	{
        return next_token(
          state,
          state->first_token_of_line ? tLINECOMMENT : tCOMMENT
        );
      }
#line 172 "ext/rbs_extension/lexer.c"
yy11:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= ')') {
		if (yych <= 0x0000001F) {
			if (yych <= '\n') {
				if (yych <= 0x00000000) goto yy3;
				if (yych <= 0x00000008) goto yy70;
				goto yy3;
			} else {
				if (yych == '\r') goto yy3;
				goto yy70;
			}
		} else {
			if (yych <= '#') {
				if (yych <= ' ') goto yy3;
				if (yych <= '"') goto yy72;
				goto yy70;
			} else {
				if (yych == '%') goto yy3;
				if (yych <= '\'') goto yy72;
				goto yy3;
			}
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '/') {
				if (yych == '-') goto yy70;
				goto yy72;
			} else {
				if (yych <= '9') goto yy70;
				if (yych <= '>') goto yy72;
				goto yy70;
			}
		} else {
			if (yych <= '^') {
				if (yych == '\\') goto yy72;
				goto yy3;
			} else {
				if (yych <= 'z') goto yy70;
				if (yych <= '}') goto yy3;
				if (yych <= '~') goto yy72;
				goto yy70;
			}
		}
	}
yy12:
	yyaccept = 1;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych == 'a') goto yy73;
	goto yy7;
yy13:
	rbs_skip(state);
#line 34 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pAMP); }
#line 230 "ext/rbs_extension/lexer.c"
yy14:
	yyaccept = 0;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= 0x00000000) goto yy3;
	goto yy75;
yy15:
	rbs_skip(state);
#line 25 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLPAREN); }
#line 242 "ext/rbs_extension/lexer.c"
yy16:
	rbs_skip(state);
#line 26 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pRPAREN); }
#line 247 "ext/rbs_extension/lexer.c"
yy17:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '*') goto yy79;
#line 36 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pSTAR); }
#line 254 "ext/rbs_extension/lexer.c"
yy18:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '/') goto yy7;
	if (yych <= '9') goto yy24;
	if (yych == '@') goto yy23;
	goto yy7;
yy19:
	rbs_skip(state);
#line 31 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pCOMMA); }
#line 266 "ext/rbs_extension/lexer.c"
yy20:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') goto yy7;
		if (yych <= '9') goto yy24;
		goto yy7;
	} else {
		if (yych <= '>') goto yy80;
		if (yych == '@') goto yy23;
		goto yy7;
	}
yy21:
	yyaccept = 2;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych == '.') goto yy81;
yy22:
#line 38 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pDOT); }
#line 288 "ext/rbs_extension/lexer.c"
yy23:
	rbs_skip(state);
	goto yy7;
yy24:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '/') goto yy25;
	if (yych <= '9') goto yy24;
	if (yych == '_') goto yy24;
yy25:
#line 52 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tINTEGER); }
#line 301 "ext/rbs_extension/lexer.c"
yy26:
	yyaccept = 3;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	switch (yych) {
		case '!': goto yy82;
		case '"': goto yy84;
		case '$': goto yy85;
		case '%':
		case '&':
		case '/':
		case '^':
		case '`':
		case '|':
		case '~': goto yy86;
		case '\'': goto yy87;
		case '*': goto yy88;
		case '+':
		case '-': goto yy89;
		case ':': goto yy90;
		case '<': goto yy91;
		case '=': goto yy92;
		case '>': goto yy93;
		case '@': goto yy94;
		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 yy95;
		case '[': goto yy97;
		default: goto yy27;
	}
yy27:
#line 45 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pCOLON); }
#line 386 "ext/rbs_extension/lexer.c"
yy28:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= ';') goto yy29;
	if (yych <= '<') goto yy23;
	if (yych <= '=') goto yy98;
yy29:
#line 47 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLT); }
#line 396 "ext/rbs_extension/lexer.c"
yy30:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '<') goto yy31;
		if (yych <= '=') goto yy99;
		goto yy100;
	} else {
		if (yych == '~') goto yy23;
	}
yy31:
#line 44 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pEQ); }
#line 410 "ext/rbs_extension/lexer.c"
yy32:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '<') goto yy7;
	if (yych <= '>') goto yy23;
	goto yy7;
yy33:
	rbs_skip(state);
#line 35 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pQUESTION); }
#line 421 "ext/rbs_extension/lexer.c"
yy34:
	yyaccept = 0;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '?') goto yy3;
		if (yych <= '@') goto yy101;
		if (yych <= 'Z') goto yy102;
		goto yy3;
	} else {
		if (yych == '`') goto yy3;
		if (yych <= 'z') goto yy102;
		goto yy3;
	}
yy35:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy35;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy36;
			if (yych <= 'Z') goto yy35;
		} else {
			if (yych == '`') goto yy36;
			if (yych <= 'z') goto yy35;
		}
	}
yy36:
#line 130 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tUIDENT); }
#line 459 "ext/rbs_extension/lexer.c"
yy37:
	rbs_skip(state);
	yych = peek(state);
	if (yych == ']') goto yy106;
#line 27 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLBRACKET); }
#line 466 "ext/rbs_extension/lexer.c"
yy38:
	rbs_skip(state);
#line 28 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pRBRACKET); }
#line 471 "ext/rbs_extension/lexer.c"
yy39:
	rbs_skip(state);
#line 33 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pHAT); }
#line 476 "ext/rbs_extension/lexer.c"
yy40:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy107;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy41;
			if (yych <= 'Z') goto yy110;
		} else {
			if (yych <= '_') goto yy112;
			if (yych <= '`') goto yy41;
			if (yych <= 'z') goto yy107;
		}
	}
yy41:
#line 133 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tULLIDENT); }
#line 500 "ext/rbs_extension/lexer.c"
yy42:
	yyaccept = 4;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= ' ') {
		if (yych <= 0x00000000) goto yy43;
		if (yych <= 0x0000001F) goto yy113;
	} else {
		if (yych != ':') goto yy113;
	}
yy43:
#line 40 "ext/rbs_extension/lexer.re"
	{  return next_token(state, tOPERATOR); }
#line 515 "ext/rbs_extension/lexer.c"
yy44:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 'r') {
		if (yych == 'l') goto yy114;
		goto yy52;
	} else {
		if (yych <= 's') goto yy115;
		if (yych <= 't') goto yy117;
		goto yy52;
	}
yy45:
#line 129 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tLIDENT); }
#line 530 "ext/rbs_extension/lexer.c"
yy46:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy118;
	goto yy52;
yy47:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy119;
	goto yy52;
yy48:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy120;
	goto yy52;
yy49:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy121;
	if (yych == 'x') goto yy122;
	goto yy52;
yy50:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy123;
	goto yy52;
yy51:
	rbs_skip(state);
	yych = peek(state);
yy52:
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
			goto yy45;
		} else {
			if (yych <= '9') goto yy51;
			if (yych <= '<') goto yy45;
			goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy45;
			if (yych <= 'Z') goto yy51;
			goto yy45;
		} else {
			if (yych == '`') goto yy45;
			if (yych <= 'z') goto yy51;
			goto yy45;
		}
	}
yy53:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy124;
	goto yy52;
yy54:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy126;
	goto yy52;
yy55:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy127;
	goto yy52;
yy56:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy128;
	goto yy52;
yy57:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy129;
	if (yych == 'u') goto yy130;
	goto yy52;
yy58:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy131;
	if (yych == 'i') goto yy132;
	goto yy52;
yy59:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 'q') {
		if (yych == 'o') goto yy133;
		goto yy52;
	} else {
		if (yych <= 'r') goto yy134;
		if (yych == 'y') goto yy135;
		goto yy52;
	}
yy60:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy136;
	if (yych == 's') goto yy137;
	goto yy52;
yy61:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy138;
	goto yy52;
yy62:
	rbs_skip(state);
#line 29 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pLBRACE); }
#line 639 "ext/rbs_extension/lexer.c"
yy63:
	rbs_skip(state);
#line 32 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pBAR); }
#line 644 "ext/rbs_extension/lexer.c"
yy64:
	rbs_skip(state);
#line 30 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pRBRACE); }
#line 649 "ext/rbs_extension/lexer.c"
yy65:
	rbs_skip(state);
	yych = peek(state);
yy66:
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy67;
		if (yych <= '!') goto yy65;
		goto yy68;
	} else {
		if (yych == '\\') goto yy69;
		goto yy65;
	}
yy67:
	*state = backup;
	if (yyaccept <= 3) {
		if (yyaccept <= 1) {
			if (yyaccept == 0) {
				goto yy3;
			} else {
				goto yy7;
			}
		} else {
			if (yyaccept == 2) {
				goto yy22;
			} else {
				goto yy27;
			}
		}
	} else {
		if (yyaccept <= 5) {
			if (yyaccept == 4) {
				goto yy43;
			} else {
				goto yy77;
			}
		} else {
			goto yy154;
		}
	}
yy68:
	rbs_skip(state);
#line 107 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tDQSTRING); }
#line 693 "ext/rbs_extension/lexer.c"
yy69:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy139;
	if (yych == 'x') goto yy140;
	goto yy65;
yy70:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= ',') {
		if (yych <= '\f') {
			if (yych <= 0x00000000) goto yy71;
			if (yych <= 0x00000008) goto yy70;
			if (yych >= '\v') goto yy70;
		} else {
			if (yych <= 0x0000001F) {
				if (yych >= 0x0000000E) goto yy70;
			} else {
				if (yych == '#') goto yy70;
			}
		}
	} else {
		if (yych <= '>') {
			if (yych <= '-') goto yy70;
			if (yych <= '/') goto yy71;
			if (yych <= '9') goto yy70;
		} else {
			if (yych <= '^') {
				if (yych <= 'Z') goto yy70;
			} else {
				if (yych <= 'z') goto yy70;
				if (yych >= 0x0000007F) goto yy70;
			}
		}
	}
yy71:
#line 140 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tGIDENT); }
#line 732 "ext/rbs_extension/lexer.c"
yy72:
	rbs_skip(state);
	goto yy71;
yy73:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 'Z') {
		if (yych <= '(') {
			if (yych <= '\'') goto yy67;
			goto yy141;
		} else {
			if (yych == '<') goto yy142;
			goto yy67;
		}
	} else {
		if (yych <= 'z') {
			if (yych <= '[') goto yy143;
			goto yy67;
		} else {
			if (yych <= '{') goto yy144;
			if (yych <= '|') goto yy145;
			goto yy67;
		}
	}
yy74:
	rbs_skip(state);
	yych = peek(state);
yy75:
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy67;
		if (yych <= '&') goto yy74;
	} else {
		if (yych == '\\') goto yy78;
		goto yy74;
	}
yy76:
	rbs_skip(state);
yy77:
#line 108 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSQSTRING); }
#line 773 "ext/rbs_extension/lexer.c"
yy78:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy67;
		if (yych <= '&') goto yy74;
		goto yy146;
	} else {
		if (yych == '\\') goto yy78;
		goto yy74;
	}
yy79:
	rbs_skip(state);
#line 37 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pSTAR2); }
#line 789 "ext/rbs_extension/lexer.c"
yy80:
	rbs_skip(state);
#line 42 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pARROW); }
#line 794 "ext/rbs_extension/lexer.c"
yy81:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '.') goto yy147;
	goto yy67;
yy82:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '=') goto yy86;
	if (yych == '~') goto yy86;
yy83:
#line 127 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 808 "ext/rbs_extension/lexer.c"
yy84:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '"') {
		if (yych <= 0x00000000) goto yy67;
		if (yych <= '!') goto yy84;
		goto yy148;
	} else {
		if (yych == '\\') goto yy149;
		goto yy84;
	}
yy85:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= ')') {
		if (yych <= 0x0000001F) {
			if (yych <= '\n') {
				if (yych <= 0x00000000) goto yy67;
				if (yych <= 0x00000008) goto yy150;
				goto yy67;
			} else {
				if (yych == '\r') goto yy67;
				goto yy150;
			}
		} else {
			if (yych <= '#') {
				if (yych <= ' ') goto yy67;
				if (yych <= '"') goto yy152;
				goto yy150;
			} else {
				if (yych == '%') goto yy67;
				if (yych <= '\'') goto yy152;
				goto yy67;
			}
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '/') {
				if (yych == '-') goto yy150;
				goto yy152;
			} else {
				if (yych <= '9') goto yy150;
				if (yych <= '>') goto yy152;
				goto yy150;
			}
		} else {
			if (yych <= '^') {
				if (yych == '\\') goto yy152;
				goto yy67;
			} else {
				if (yych <= 'z') goto yy150;
				if (yych <= '}') goto yy67;
				if (yych <= '~') goto yy152;
				goto yy150;
			}
		}
	}
yy86:
	rbs_skip(state);
	goto yy83;
yy87:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy67;
		if (yych <= '&') goto yy87;
		goto yy153;
	} else {
		if (yych == '\\') goto yy155;
		goto yy87;
	}
yy88:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '*') goto yy86;
	goto yy83;
yy89:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '@') goto yy86;
	goto yy83;
yy90:
	rbs_skip(state);
#line 46 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pCOLON2); }
#line 894 "ext/rbs_extension/lexer.c"
yy91:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= ';') goto yy83;
	if (yych <= '<') goto yy86;
	if (yych <= '=') goto yy156;
	goto yy83;
yy92:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '=') goto yy157;
	if (yych == '~') goto yy86;
	goto yy67;
yy93:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '<') goto yy83;
	if (yych <= '>') goto yy86;
	goto yy83;
yy94:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '?') goto yy67;
		if (yych <= '@') goto yy158;
		if (yych <= 'Z') goto yy159;
		goto yy67;
	} else {
		if (yych == '`') goto yy67;
		if (yych <= 'z') goto yy159;
		goto yy67;
	}
yy95:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '/') {
			if (yych == '!') goto yy161;
		} else {
			if (yych <= '9') goto yy95;
			if (yych == '=') goto yy161;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '?') goto yy161;
			if (yych <= '@') goto yy96;
			if (yych <= 'Z') goto yy95;
		} else {
			if (yych == '`') goto yy96;
			if (yych <= 'z') goto yy95;
		}
	}
yy96:
#line 123 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 950 "ext/rbs_extension/lexer.c"
yy97:
	rbs_skip(state);
	yych = peek(state);
	if (yych == ']') goto yy157;
	goto yy67;
yy98:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '>') goto yy23;
	goto yy7;
yy99:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '=') goto yy23;
	goto yy7;
yy100:
	rbs_skip(state);
#line 43 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pFATARROW); }
#line 970 "ext/rbs_extension/lexer.c"
yy101:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '@') goto yy67;
		if (yych <= 'Z') goto yy162;
		goto yy67;
	} else {
		if (yych == '`') goto yy67;
		if (yych <= 'z') goto yy162;
		goto yy67;
	}
yy102:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 'Z') {
		if (yych <= '/') goto yy103;
		if (yych <= '9') goto yy102;
		if (yych >= 'A') goto yy102;
	} else {
		if (yych <= '_') {
			if (yych >= '_') goto yy102;
		} else {
			if (yych <= '`') goto yy103;
			if (yych <= 'z') goto yy102;
		}
	}
yy103:
#line 137 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tAIDENT); }
#line 1001 "ext/rbs_extension/lexer.c"
yy104:
	rbs_skip(state);
#line 134 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tBANGIDENT); }
#line 1006 "ext/rbs_extension/lexer.c"
yy105:
	rbs_skip(state);
#line 135 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tEQIDENT); }
#line 1011 "ext/rbs_extension/lexer.c"
yy106:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '=') goto yy23;
#line 48 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pAREF_OPR); }
#line 1018 "ext/rbs_extension/lexer.c"
yy107:
	rbs_skip(state);
	yych = peek(state);
yy108:
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy107;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy109;
			if (yych <= 'Z') goto yy107;
		} else {
			if (yych == '`') goto yy109;
			if (yych <= 'z') goto yy107;
		}
	}
yy109:
#line 131 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tULLIDENT); }
#line 1042 "ext/rbs_extension/lexer.c"
yy110:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy110;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy111;
			if (yych <= 'Z') goto yy110;
		} else {
			if (yych == '`') goto yy111;
			if (yych <= 'z') goto yy110;
		}
	}
yy111:
#line 132 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tULIDENT); }
#line 1065 "ext/rbs_extension/lexer.c"
yy112:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy164;
	goto yy108;
yy113:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy67;
	if (yych == '`') goto yy165;
	goto yy113;
yy114:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy166;
	goto yy52;
yy115:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy116;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy116;
			if (yych <= 'z') goto yy51;
		}
	}
yy116:
#line 97 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kAS); }
#line 1104 "ext/rbs_extension/lexer.c"
yy117:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy167;
	goto yy52;
yy118:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy168;
	if (yych == 't') goto yy169;
	goto yy52;
yy119:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy171;
	goto yy52;
yy120:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'f') goto yy172;
	goto yy52;
yy121:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy174;
	goto yy52;
yy122:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy176;
	goto yy52;
yy123:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy177;
	goto yy52;
yy124:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '9') {
			if (yych == '!') goto yy104;
			if (yych >= '0') goto yy51;
		} else {
			if (yych <= '=') {
				if (yych >= '=') goto yy105;
			} else {
				if (yych <= '@') goto yy125;
				if (yych <= 'Z') goto yy51;
			}
		}
	} else {
		if (yych <= 'c') {
			if (yych == '`') goto yy125;
			if (yych <= 'b') goto yy51;
			goto yy178;
		} else {
			if (yych <= 's') {
				if (yych <= 'r') goto yy51;
				goto yy179;
			} else {
				if (yych <= 't') goto yy180;
				if (yych <= 'z') goto yy51;
			}
		}
	}
yy125:
#line 78 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kIN); }
#line 1174 "ext/rbs_extension/lexer.c"
yy126:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy181;
	goto yy52;
yy127:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy182;
	goto yy52;
yy128:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy184;
	goto yy52;
yy129:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy186;
	if (yych == 'i') goto yy187;
	goto yy52;
yy130:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'b') goto yy188;
	goto yy52;
yy131:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy189;
	goto yy52;
yy132:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy190;
	goto yy52;
yy133:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy191;
	goto yy52;
yy134:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy193;
	goto yy52;
yy135:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy194;
	goto yy52;
yy136:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy195;
	if (yych == 't') goto yy196;
	goto yy52;
yy137:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy197;
	goto yy52;
yy138:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy199;
	goto yy52;
yy139:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy200;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy200;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy200;
		goto yy67;
	}
yy140:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '/') goto yy67;
	if (yych <= '9') goto yy65;
	if (yych <= '`') goto yy67;
	if (yych <= 'f') goto yy65;
	goto yy67;
yy141:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy67;
	if (yych == ')') goto yy201;
	goto yy141;
yy142:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy67;
	if (yych == '>') goto yy202;
	goto yy142;
yy143:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy67;
	if (yych == ']') goto yy203;
	goto yy143;
yy144:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy67;
	if (yych == '}') goto yy204;
	goto yy144;
yy145:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 0x00000000) goto yy67;
	if (yych == '|') goto yy205;
	goto yy145;
yy146:
	yyaccept = 5;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy77;
		if (yych <= '&') goto yy74;
		goto yy76;
	} else {
		if (yych == '\\') goto yy78;
		goto yy74;
	}
yy147:
	rbs_skip(state);
#line 39 "ext/rbs_extension/lexer.re"
	{ return next_token(state, pDOT3); }
#line 1310 "ext/rbs_extension/lexer.c"
yy148:
	rbs_skip(state);
#line 109 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tDQSYMBOL); }
#line 1315 "ext/rbs_extension/lexer.c"
yy149:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy206;
	if (yych == 'x') goto yy207;
	goto yy84;
yy150:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= ',') {
		if (yych <= '\f') {
			if (yych <= 0x00000000) goto yy151;
			if (yych <= 0x00000008) goto yy150;
			if (yych >= '\v') goto yy150;
		} else {
			if (yych <= 0x0000001F) {
				if (yych >= 0x0000000E) goto yy150;
			} else {
				if (yych == '#') goto yy150;
			}
		}
	} else {
		if (yych <= '>') {
			if (yych <= '-') goto yy150;
			if (yych <= '/') goto yy151;
			if (yych <= '9') goto yy150;
		} else {
			if (yych <= '^') {
				if (yych <= 'Z') goto yy150;
			} else {
				if (yych <= 'z') goto yy150;
				if (yych >= 0x0000007F) goto yy150;
			}
		}
	}
yy151:
#line 126 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 1354 "ext/rbs_extension/lexer.c"
yy152:
	rbs_skip(state);
	goto yy151;
yy153:
	rbs_skip(state);
yy154:
#line 110 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSQSYMBOL); }
#line 1363 "ext/rbs_extension/lexer.c"
yy155:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy67;
		if (yych <= '&') goto yy87;
		goto yy208;
	} else {
		if (yych == '\\') goto yy155;
		goto yy87;
	}
yy156:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '>') goto yy86;
	goto yy83;
yy157:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '=') goto yy86;
	goto yy83;
yy158:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '^') {
		if (yych <= '@') goto yy67;
		if (yych <= 'Z') goto yy209;
		goto yy67;
	} else {
		if (yych == '`') goto yy67;
		if (yych <= 'z') goto yy209;
		goto yy67;
	}
yy159:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '/') {
			if (yych == '!') goto yy211;
		} else {
			if (yych <= '9') goto yy159;
			if (yych == '=') goto yy211;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '?') goto yy211;
			if (yych <= '@') goto yy160;
			if (yych <= 'Z') goto yy159;
		} else {
			if (yych == '`') goto yy160;
			if (yych <= 'z') goto yy159;
		}
	}
yy160:
#line 124 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 1420 "ext/rbs_extension/lexer.c"
yy161:
	rbs_skip(state);
	goto yy96;
yy162:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 'Z') {
		if (yych <= '/') goto yy163;
		if (yych <= '9') goto yy162;
		if (yych >= 'A') goto yy162;
	} else {
		if (yych <= '_') {
			if (yych >= '_') goto yy162;
		} else {
			if (yych <= '`') goto yy163;
			if (yych <= 'z') goto yy162;
		}
	}
yy163:
#line 138 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tA2IDENT); }
#line 1442 "ext/rbs_extension/lexer.c"
yy164:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy212;
	goto yy108;
yy165:
	rbs_skip(state);
#line 41 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tQIDENT); }
#line 1452 "ext/rbs_extension/lexer.c"
yy166:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy213;
	goto yy52;
yy167:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy214;
	goto yy52;
yy168:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy215;
	goto yy52;
yy169:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy170;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy170;
			if (yych <= 'z') goto yy51;
		}
	}
yy170:
#line 72 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kBOT); }
#line 1490 "ext/rbs_extension/lexer.c"
yy171:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 's') goto yy217;
	goto yy52;
yy172:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy173;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy173;
			if (yych <= 'z') goto yy51;
		}
	}
yy173:
#line 74 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kDEF); }
#line 1518 "ext/rbs_extension/lexer.c"
yy174:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy175;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy175;
			if (yych <= 'z') goto yy51;
		}
	}
yy175:
#line 75 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kEND); }
#line 1541 "ext/rbs_extension/lexer.c"
yy176:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy218;
	goto yy52;
yy177:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 's') goto yy219;
	goto yy52;
yy178:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy220;
	goto yy52;
yy179:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy221;
	goto yy52;
yy180:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy222;
	goto yy52;
yy181:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy223;
	goto yy52;
yy182:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy183;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy183;
			if (yych <= 'z') goto yy51;
		}
	}
yy183:
#line 83 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kNIL); }
#line 1594 "ext/rbs_extension/lexer.c"
yy184:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy185;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy185;
			if (yych <= 'z') goto yy51;
		}
	}
yy185:
#line 84 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kOUT); }
#line 1617 "ext/rbs_extension/lexer.c"
yy186:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy224;
	goto yy52;
yy187:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'v') goto yy225;
	goto yy52;
yy188:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy226;
	goto yy52;
yy189:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'f') goto yy227;
	goto yy52;
yy190:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'g') goto yy229;
	goto yy52;
yy191:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy192;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy192;
			if (yych <= 'z') goto yy51;
		}
	}
yy192:
#line 90 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kTOP); }
#line 1665 "ext/rbs_extension/lexer.c"
yy193:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy230;
	goto yy52;
yy194:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy232;
	goto yy52;
yy195:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'h') goto yy234;
	goto yy52;
yy196:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'y') goto yy235;
	goto yy52;
yy197:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy198;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy198;
			if (yych <= 'z') goto yy51;
		}
	}
yy198:
#line 96 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kUSE); }
#line 1708 "ext/rbs_extension/lexer.c"
yy199:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy236;
	goto yy52;
yy200:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy238;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy238;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy238;
		goto yy67;
	}
yy201:
	rbs_skip(state);
#line 55 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1731 "ext/rbs_extension/lexer.c"
yy202:
	rbs_skip(state);
#line 58 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1736 "ext/rbs_extension/lexer.c"
yy203:
	rbs_skip(state);
#line 56 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1741 "ext/rbs_extension/lexer.c"
yy204:
	rbs_skip(state);
#line 54 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1746 "ext/rbs_extension/lexer.c"
yy205:
	rbs_skip(state);
#line 57 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tANNOTATION); }
#line 1751 "ext/rbs_extension/lexer.c"
yy206:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy239;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy239;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy239;
		goto yy67;
	}
yy207:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '/') goto yy67;
	if (yych <= '9') goto yy84;
	if (yych <= '`') goto yy67;
	if (yych <= 'f') goto yy84;
	goto yy67;
yy208:
	yyaccept = 6;
	rbs_skip(state);
	backup = *state;
	yych = peek(state);
	if (yych <= '\'') {
		if (yych <= 0x00000000) goto yy154;
		if (yych <= '&') goto yy87;
		goto yy153;
	} else {
		if (yych == '\\') goto yy155;
		goto yy87;
	}
yy209:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '>') {
		if (yych <= '/') {
			if (yych == '!') goto yy240;
		} else {
			if (yych <= '9') goto yy209;
			if (yych == '=') goto yy240;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '?') goto yy240;
			if (yych <= '@') goto yy210;
			if (yych <= 'Z') goto yy209;
		} else {
			if (yych == '`') goto yy210;
			if (yych <= 'z') goto yy209;
		}
	}
yy210:
#line 125 "ext/rbs_extension/lexer.re"
	{ return next_token(state, tSYMBOL); }
#line 1809 "ext/rbs_extension/lexer.c"
yy211:
	rbs_skip(state);
	goto yy160;
yy212:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy241;
	goto yy108;
yy213:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 's') goto yy242;
	goto yy52;
yy214:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '_') goto yy244;
	goto yy52;
yy215:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy216;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy216;
			if (yych <= 'z') goto yy51;
		}
	}
yy216:
#line 71 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kBOOL); }
#line 1850 "ext/rbs_extension/lexer.c"
yy217:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 's') goto yy245;
	goto yy52;
yy218:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy247;
	goto yy52;
yy219:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy248;
	goto yy52;
yy220:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'u') goto yy250;
	goto yy52;
yy221:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy251;
	goto yy52;
yy222:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy252;
	goto yy52;
yy223:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy253;
	goto yy52;
yy224:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy254;
	goto yy52;
yy225:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy255;
	goto yy52;
yy226:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy256;
	goto yy52;
yy227:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy228;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy228;
			if (yych <= 'z') goto yy51;
		}
	}
yy228:
#line 88 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kSELF); }
#line 1923 "ext/rbs_extension/lexer.c"
yy229:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'l') goto yy257;
	goto yy52;
yy230:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy231;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy231;
			if (yych <= 'z') goto yy51;
		}
	}
yy231:
#line 91 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kTRUE); }
#line 1951 "ext/rbs_extension/lexer.c"
yy232:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy233;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy233;
			if (yych <= 'z') goto yy51;
		}
	}
yy233:
#line 92 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kTYPE); }
#line 1974 "ext/rbs_extension/lexer.c"
yy234:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy258;
	goto yy52;
yy235:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'p') goto yy259;
	goto yy52;
yy236:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy237;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy237;
			if (yych <= 'z') goto yy51;
		}
	}
yy237:
#line 95 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kVOID); }
#line 2007 "ext/rbs_extension/lexer.c"
yy238:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy260;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy260;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy260;
		goto yy67;
	}
yy239:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy261;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy261;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy261;
		goto yy67;
	}
yy240:
	rbs_skip(state);
	goto yy210;
yy241:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy262;
	goto yy108;
yy242:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy243;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy243;
			if (yych <= 'z') goto yy51;
		}
	}
yy243:
#line 67 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kALIAS); }
#line 2064 "ext/rbs_extension/lexer.c"
yy244:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= 'q') {
		if (yych == 'a') goto yy263;
		goto yy52;
	} else {
		if (yych <= 'r') goto yy264;
		if (yych == 'w') goto yy265;
		goto yy52;
	}
yy245:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy246;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy246;
			if (yych <= 'z') goto yy51;
		}
	}
yy246:
#line 73 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kCLASS); }
#line 2098 "ext/rbs_extension/lexer.c"
yy247:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy266;
	goto yy52;
yy248:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy249;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy249;
			if (yych <= 'z') goto yy51;
		}
	}
yy249:
#line 77 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kFALSE); }
#line 2126 "ext/rbs_extension/lexer.c"
yy250:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy268;
	goto yy52;
yy251:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy269;
	goto yy52;
yy252:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'f') goto yy270;
	goto yy52;
yy253:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy271;
	goto yy52;
yy254:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy273;
	goto yy52;
yy255:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy274;
	goto yy52;
yy256:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy275;
	goto yy52;
yy257:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy277;
	goto yy52;
yy258:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy278;
	goto yy52;
yy259:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy279;
	goto yy52;
yy260:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy65;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy65;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy65;
		goto yy67;
	}
yy261:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy280;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy280;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy280;
		goto yy67;
	}
yy262:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '_') goto yy281;
	goto yy108;
yy263:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy282;
	goto yy52;
yy264:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy283;
	goto yy52;
yy265:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy284;
	goto yy52;
yy266:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy267;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy267;
			if (yych <= 'z') goto yy51;
		}
	}
yy267:
#line 76 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kEXTEND); }
#line 2245 "ext/rbs_extension/lexer.c"
yy268:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy285;
	goto yy52;
yy269:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy287;
	goto yy52;
yy270:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy288;
	goto yy52;
yy271:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy272;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy272;
			if (yych <= 'z') goto yy51;
		}
	}
yy272:
#line 82 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kMODULE); }
#line 2283 "ext/rbs_extension/lexer.c"
yy273:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy289;
	goto yy52;
yy274:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy291;
	goto yy52;
yy275:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy276;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy276;
			if (yych <= 'z') goto yy51;
		}
	}
yy276:
#line 87 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kPUBLIC); }
#line 2316 "ext/rbs_extension/lexer.c"
yy277:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy293;
	goto yy52;
yy278:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'k') goto yy294;
	goto yy52;
yy279:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy295;
	goto yy52;
yy280:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '@') {
		if (yych <= '/') goto yy67;
		if (yych <= '9') goto yy84;
		goto yy67;
	} else {
		if (yych <= 'F') goto yy84;
		if (yych <= '`') goto yy67;
		if (yych <= 'f') goto yy84;
		goto yy67;
	}
yy281:
	rbs_skip(state);
	yych = peek(state);
	if (yych == '_') goto yy297;
	goto yy108;
yy282:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy299;
	goto yy52;
yy283:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'a') goto yy300;
	goto yy52;
yy284:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'i') goto yy301;
	goto yy52;
yy285:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy286;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy286;
			if (yych <= 'z') goto yy51;
		}
	}
yy286:
#line 79 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kINCLUDE); }
#line 2387 "ext/rbs_extension/lexer.c"
yy287:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy302;
	goto yy52;
yy288:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'c') goto yy304;
	goto yy52;
yy289:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy290;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy290;
			if (yych <= 'z') goto yy51;
		}
	}
yy290:
#line 85 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kPREPEND); }
#line 2420 "ext/rbs_extension/lexer.c"
yy291:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy292;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy292;
			if (yych <= 'z') goto yy51;
		}
	}
yy292:
#line 86 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kPRIVATE); }
#line 2443 "ext/rbs_extension/lexer.c"
yy293:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy305;
	goto yy52;
yy294:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy306;
	goto yy52;
yy295:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy296;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy296;
			if (yych <= 'z') goto yy51;
		}
	}
yy296:
#line 94 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kUNTYPED); }
#line 2476 "ext/rbs_extension/lexer.c"
yy297:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy107;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy298;
			if (yych <= 'Z') goto yy107;
		} else {
			if (yych == '`') goto yy298;
			if (yych <= 'z') goto yy107;
		}
	}
yy298:
#line 98 "ext/rbs_extension/lexer.re"
	{ return next_token(state, k__TODO__); }
#line 2499 "ext/rbs_extension/lexer.c"
yy299:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy307;
	goto yy52;
yy300:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy308;
	goto yy52;
yy301:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 't') goto yy309;
	goto yy52;
yy302:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy303;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy303;
			if (yych <= 'z') goto yy51;
		}
	}
yy303:
#line 80 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kINSTANCE); }
#line 2537 "ext/rbs_extension/lexer.c"
yy304:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy310;
	goto yy52;
yy305:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'n') goto yy312;
	goto yy52;
yy306:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'd') goto yy314;
	goto yy52;
yy307:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 's') goto yy316;
	goto yy52;
yy308:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy317;
	goto yy52;
yy309:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'e') goto yy318;
	goto yy52;
yy310:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy311;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy311;
			if (yych <= 'z') goto yy51;
		}
	}
yy311:
#line 81 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kINTERFACE); }
#line 2590 "ext/rbs_extension/lexer.c"
yy312:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy313;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy313;
			if (yych <= 'z') goto yy51;
		}
	}
yy313:
#line 89 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kSINGLETON); }
#line 2613 "ext/rbs_extension/lexer.c"
yy314:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy315;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy315;
			if (yych <= 'z') goto yy51;
		}
	}
yy315:
#line 93 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kUNCHECKED); }
#line 2636 "ext/rbs_extension/lexer.c"
yy316:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 's') goto yy319;
	goto yy52;
yy317:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy320;
	goto yy52;
yy318:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'r') goto yy322;
	goto yy52;
yy319:
	rbs_skip(state);
	yych = peek(state);
	if (yych == 'o') goto yy324;
	goto yy52;
yy320:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy321;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy321;
			if (yych <= 'z') goto yy51;
		}
	}
yy321:
#line 69 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kATTRREADER); }
#line 2679 "ext/rbs_extension/lexer.c"
yy322:
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy323;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy323;
			if (yych <= 'z') goto yy51;
		}
	}
yy323:
#line 70 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kATTRWRITER); }
#line 2702 "ext/rbs_extension/lexer.c"
yy324:
	rbs_skip(state);
	yych = peek(state);
	if (yych != 'r') goto yy52;
	rbs_skip(state);
	yych = peek(state);
	if (yych <= '=') {
		if (yych <= '/') {
			if (yych == '!') goto yy104;
		} else {
			if (yych <= '9') goto yy51;
			if (yych >= '=') goto yy105;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy325;
			if (yych <= 'Z') goto yy51;
		} else {
			if (yych == '`') goto yy325;
			if (yych <= 'z') goto yy51;
		}
	}
yy325:
#line 68 "ext/rbs_extension/lexer.re"
	{ return next_token(state, kATTRACCESSOR); }
#line 2728 "ext/rbs_extension/lexer.c"
}
#line 147 "ext/rbs_extension/lexer.re"

}
