	protected void searchNext1(final int c1) {
		switch(c1) { 
		case SourceParseInput.EOF:
			fFoundNum--;
			createFix(RTerminal.EOF);
			return;
		case '\r':
			if (fInput.get(2) == '\n') {
				fFoundNum++;
				handleNewLine(fInput.getIndex()+fInput.getLength(2));
				createLinebreakToken("\r\n"); 
				return;
			}
			handleNewLine(fInput.getIndex()+fInput.getLength(1));
			createLinebreakToken("\r"); 
			return;
		case '\n':
		case '\f':
			handleNewLine(fInput.getIndex()+fInput.getLength(1));
			createLinebreakToken("\n"); 
			return;
		case ' ':
		case '\t':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case ' ':
				case '\t':
					continue LOOP;
				default:
					fFoundNum--;
					createWhitespaceToken();
					return;
				}
			}
		case '!':
			if (fInput.get(2) == '=') {
				fFoundNum++;
				createFix(RTerminal.REL_NE);
				return;
			}
			createFix(RTerminal.NOT);
			return;
		case '\"':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '\\':
					if (fInput.get(++fFoundNum) == SourceParseInput.EOF) {
						fFoundNum--;
					}
					continue LOOP;
				case '\"':
					createStringToken(RTerminal.STRING_D, STATUS_OK);
					return;
				case '\r':
					if (fInput.get(++fFoundNum) != '\n') {
						fFoundNum--;
					}
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case '\n':
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case SourceParseInput.EOF:
					fFoundNum--;
					createStringToken(RTerminal.STRING_D, STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case '#':
			final RTerminal type;
			if (fInput.get(2) == '\'') {
				type = RTerminal.ROXYGEN_COMMENT;
				fFoundNum++;
			}
			else {
				type = RTerminal.COMMENT;
			}
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case SourceParseInput.EOF:
				case '\r':
				case '\n':
					fFoundNum--;
					createCommentToken(type);
					return;
				default:
					continue LOOP;
				}
			}
		case '$':
			createFix(RTerminal.SUB_NAMED_PART);
			return;
		case '%':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '%':
					createSpecialToken(STATUS_OK);
					return;
				case '\n':
				case '\r':
				case SourceParseInput.EOF:
					fFoundNum--;
					createSpecialToken(STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case '&':
			if (fInput.get(2) == '&') {
				fFoundNum++;
				createFix(RTerminal.AND_D);
				return;
			}
			createFix(RTerminal.AND);
			return;
		case '\'':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '\\':
					if (fInput.get(++fFoundNum) == SourceParseInput.EOF) {
						fFoundNum--;
					}
					continue LOOP;
				case '\'':
					createStringToken(RTerminal.STRING_S, STATUS_OK);
					return;
				case '\r':
					if (fInput.get(++fFoundNum) != '\n') {
						fFoundNum--;
					}
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case '\n':
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case SourceParseInput.EOF:
					fFoundNum--;
					createStringToken(RTerminal.STRING_S, STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case '(':
			createFix(RTerminal.GROUP_OPEN);
			return;
		case ')':
			createFix(RTerminal.GROUP_CLOSE);
			return;
		case '*':
			createFix(RTerminal.MULT);
			return;
		case '+':
			createFix(RTerminal.PLUS);
			return;
		case ',':
			createFix(RTerminal.COMMA);
			return;
		case '-':
			if (fInput.get(2) == '>') {
				fFoundNum++;
				if (fInput.get(3) == '>') {
					fFoundNum++;
					createFix(RTerminal.ARROW_RIGHT_D);
					return;
				}
				createFix(RTerminal.ARROW_RIGHT_S);
				return;
			}
			createFix(RTerminal.MINUS);
			return;
		case '.':
			switch (fInput.get(2)) {
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':
				fFoundNum++;
				consumeNumberInFloat();
				return;
			default:
				scanIdentifier();
				createSymbolToken();
				return;
			}
		case '/':
			createFix(RTerminal.DIV);
			return;
		case '0':
			if (fInput.get(2) == 'x') {
				fFoundNum++;
				consumeNumberInHex();
				return;
			}
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
			consumeNumberInDec();
			return;
		case ':':
			if (fInput.get(2) == ':') {
				fFoundNum++;
				if (fInput.get(3) == ':') {
					fFoundNum++;
					createFix(RTerminal.NS_GET_INT);
					return;
				}
				createFix(RTerminal.NS_GET);
				return;
			}
			createFix(RTerminal.SEQ);
			return;
		case ';':
			createFix(RTerminal.SEMI);
			return;
		case '<':
			switch (fInput.get(2)) {
			case '=':
				fFoundNum++;
				createFix(RTerminal.REL_LE);
				return;
			case '-':
				fFoundNum++;
				createFix(RTerminal.ARROW_LEFT_S);
				return;
			case '<':
				if (fInput.get(3) == '-') {
					fFoundNum++;
					fFoundNum++;
					createFix(RTerminal.ARROW_LEFT_D);
					return;
				}
			default:
				createFix(RTerminal.REL_LT);
				return;
			}
		case '=':
			if (fInput.get(2) == '=') {
				fFoundNum++;
				createFix(RTerminal.REL_EQ);
				return;
			}
			createFix(RTerminal.EQUAL);
			return;
		case '>':
			if (fInput.get(2) == '=') {
				fFoundNum++;
				createFix(RTerminal.REL_GE);
				return;
			}
			createFix(RTerminal.REL_LT);
			return;
		case '?':
			createFix(RTerminal.QUESTIONMARK);
			return;
		case '@':
			createFix(RTerminal.SUB_NAMED_SLOT);
			return;
		case '[':
			if (fInput.get(2) == '[') {
				fFoundNum++;
				createFix(RTerminal.SUB_INDEXED_D_OPEN);
				return;
			}
			createFix(RTerminal.SUB_INDEXED_S_OPEN);
			return;
		case ']':
			createFix(RTerminal.SUB_INDEXED_CLOSE);
			return;
		case '^':
			createFix(RTerminal.POWER);
			return;
		case 'A':
		case 'B':
		case 'C':
		case 'D':
		case 'E':
		case 'G':
		case 'H':
		case 'J':
		case 'K':
		case 'L':
		case 'M':
		case 'O':
		case 'P':
		case 'Q':
		case 'R':
		case 'S':
		case 'U':
		case 'V':
		case 'W':
		case 'X':
		case 'Y':
		case 'Z':
		case 'a':
		case 'c':
		case 'd':
		case 'g':
		case 'h':
		case 'j':
		case 'k':
		case 'l':
		case 'm':
		case 'o':
		case 'p':
		case 'q':
		case 's':
		case 't':
		case 'u':
		case 'v':
		case 'x':
		case 'y':
		case 'z':
			scanIdentifier();
			createSymbolToken();
			return;
		case 'F':
			scanIdentifier();
			if (fFoundNum == 5
					&& fInput.subequals(2, C1_FALSE)) {
				createFix(RTerminal.FALSE);
				return;
			}
			createSymbolToken();
			return;
		case 'I':
			scanIdentifier();
			if (fFoundNum == 3
					&& fInput.subequals(2, 'n', 'f')) {
				createFix(RTerminal.INF);
				return;
			}
			createSymbolToken();
			return;
		case 'N':
			scanIdentifier();
			switch(fFoundNum) {
			case 2:
				if (fInput.get(2) == 'A') {
					createFix(RTerminal.NA);
					return;
				}
				break;
			case 3:
				if (fInput.subequals(2, 'a', 'N')) {
					createFix(RTerminal.NAN);
					return;
				}
				break;
			case 4:
				if (fInput.subequals(2, 'U', 'L', 'L')) {
					createFix(RTerminal.NULL);
					return;
				}
				break;
			case 7:
				if (fInput.subequals(2, C1_NA_real_)) {
					createFix(RTerminal.NA_REAL);
					return;
				}
				break;
			case 11:
				if (fInput.subequals(2, C1_NA_integer_)) {
					createFix(RTerminal.NA_INT);
					return;
				}
				if (fInput.subequals(2, C1_NA_complex_)) {
					createFix(RTerminal.NA_CPLX);
					return;
				}
				break;
			case 13:
				if (fInput.subequals(2, C1_NA_character_)) {
					createFix(RTerminal.NA_CHAR);
					return;
				}
				break;
			}
			createSymbolToken();
			return;
		case 'T':
			scanIdentifier();
			if (fFoundNum == 4
					&& fInput.subequals(2, 'R', 'U', 'E')) {
				createFix(RTerminal.TRUE);
				return;
			}
			createSymbolToken();
			return;
		case 'b':
			scanIdentifier();
			if (fFoundNum == 5
					&& fInput.subequals(2, C1_break)) {
				createFix(RTerminal.BREAK);
				return;
			}
			createSymbolToken();
			return;
		case 'i':
			scanIdentifier();
			if (fFoundNum == 2) {
				if (fInput.get(2) == 'f') {
					createFix(RTerminal.IF);
					return;
				}
				if (fInput.get(2) == 'n') {
					createFix(RTerminal.IN);
					return;
				}
			}
			createSymbolToken();
			return;
		case 'e':
			scanIdentifier();
			if (fFoundNum == 4
					&& fInput.subequals(2, 'l', 's', 'e')) {
				createFix(RTerminal.ELSE);
				return;
			}
			createSymbolToken();
			return;
		case 'n':
			scanIdentifier();
			if (fFoundNum == 4
					&& fInput.subequals(2, 'e', 'x', 't')) {
				createFix(RTerminal.NEXT);
				return;
			}
			createSymbolToken();
			return;
		case 'f':
			scanIdentifier();
			switch (fFoundNum) {
			case 3:
				if (fInput.subequals(2, 'o', 'r')) {
					createFix(RTerminal.FOR);
					return;
				}
				break;
			case 8:
				if (fInput.subequals(2, C1_function)) {
					createFix(RTerminal.FUNCTION);
					return;
				}
				break;
			}
			createSymbolToken();
			return;
		case 'r':
			scanIdentifier();
			if (fFoundNum == 6
					&& fInput.subequals(2, C1_repeat)) {
				createFix(RTerminal.REPEAT);
				return;
			}
			createSymbolToken();
			return;
		case 'w':
			scanIdentifier();
			if (fFoundNum == 5
					&& fInput.subequals(2, C1_while)) {
				createFix(RTerminal.WHILE);
				return;
			}
			createSymbolToken();
			return;
		case '{':
			createFix(RTerminal.BLOCK_OPEN);
			return;
		case '|':
			if (fInput.get(2) == '|') {
				fFoundNum++;
				createFix(RTerminal.OR_D);
				return;
			}
			createFix(RTerminal.OR);
			return;
		case '}':
			createFix(RTerminal.BLOCK_CLOSE);
			return;
		case '~':
			createFix(RTerminal.TILDE);
			return;
		case '`':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '\\':
					if (fInput.get(++fFoundNum) == SourceParseInput.EOF) {
						fFoundNum--;
					}
					continue LOOP;
				case '`':
					createQuotedSymbolToken(RTerminal.SYMBOL_G, STATUS_OK);
					return;
				case '\r':
					if (fInput.get(++fFoundNum) != '\n') {
						fFoundNum--;
					}
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case '\n':
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case SourceParseInput.EOF:
					fFoundNum--;
					createQuotedSymbolToken(RTerminal.SYMBOL_G, STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case 0x000:
		case 0x001:
		case 0x002:
		case 0x003:
		case 0x004:
		case 0x005:
		case 0x006:
		case 0x007:
		case 0x008:
		case 0x00B:
		case 0x00E:
		case 0x00F:
		case 0x010:
		case 0x011:
		case 0x012:
		case 0x013:
		case 0x014:
		case 0x015:
		case 0x016:
		case 0x017:
		case 0x018:
		case 0x019:
		case 0x01A:
		case 0x01B:
		case 0x01C:
		case 0x01D:
		case 0x01E:
		case 0x01F:
		case 0x07F:
		case 0x080:
		case 0x081:
		case 0x082:
		case 0x083:
		case 0x084:
		case 0x085:
		case 0x086:
		case 0x087:
		case 0x088:
		case 0x089:
		case 0x08A:
		case 0x08B:
		case 0x08C:
		case 0x08D:
		case 0x08E:
		case 0x08F:
		case 0x090:
		case 0x091:
		case 0x092:
		case 0x093:
		case 0x094:
		case 0x095:
		case 0x096:
		case 0x097:
		case 0x098:
		case 0x099:
		case 0x09A:
		case 0x09B:
		case 0x09C:
		case 0x09D:
		case 0x09E:
		case 0x09F:
		case 0x0A0:
		case 0x0A1:
		case 0x0A2:
		case 0x0A3:
		case 0x0A4:
		case 0x0A5:
		case 0x0A6:
		case 0x0A7:
		case 0x0A8:
		case 0x0A9:
		case 0x0AA:
		case 0x0AB:
		case 0x0AC:
		case 0x0AD:
		case 0x0AE:
		case 0x0AF:
		case 0x0B0:
		case 0x0B1:
		case 0x0B2:
		case 0x0B3:
		case 0x0B4:
		case 0x0B5:
		case 0x0B6:
		case 0x0B7:
		case 0x0B8:
		case 0x0B9:
		case 0x0BA:
		case 0x0BB:
		case 0x0BC:
		case 0x0BD:
		case 0x0BE:
		case 0x0BF:
			break;
		default:
			if (Character.isLetterOrDigit(c1)) {
				scanIdentifier();
				createSymbolToken();
				return;
			}
			break;
		}
		consumeUnknown();
	}

	protected void searchNext1(final int c1) {
		switch(c1) { 
		case SourceParseInput.EOF:
			fFoundNum--;
			createFix(RTerminal.EOF);
			return;
		case '\r':
			if (fInput.get(2) == '\n') {
				fFoundNum++;
				handleNewLine(fInput.getIndex()+fInput.getLength(2));
				createLinebreakToken("\r\n"); 
				return;
			}
			handleNewLine(fInput.getIndex()+fInput.getLength(1));
			createLinebreakToken("\r"); 
			return;
		case '\n':
		case '\f':
			handleNewLine(fInput.getIndex()+fInput.getLength(1));
			createLinebreakToken("\n"); 
			return;
		case ' ':
		case '\t':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case ' ':
				case '\t':
					continue LOOP;
				default:
					fFoundNum--;
					createWhitespaceToken();
					return;
				}
			}
		case '!':
			if (fInput.get(2) == '=') {
				fFoundNum++;
				createFix(RTerminal.REL_NE);
				return;
			}
			createFix(RTerminal.NOT);
			return;
		case '\"':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '\\':
					if (fInput.get(++fFoundNum) == SourceParseInput.EOF) {
						fFoundNum--;
					}
					continue LOOP;
				case '\"':
					createStringToken(RTerminal.STRING_D, STATUS_OK);
					return;
				case '\r':
					if (fInput.get(++fFoundNum) != '\n') {
						fFoundNum--;
					}
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case '\n':
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case SourceParseInput.EOF:
					fFoundNum--;
					createStringToken(RTerminal.STRING_D, STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case '#':
			final RTerminal type;
			if (fInput.get(2) == '\'') {
				type = RTerminal.ROXYGEN_COMMENT;
				fFoundNum++;
			}
			else {
				type = RTerminal.COMMENT;
			}
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case SourceParseInput.EOF:
				case '\r':
				case '\n':
					fFoundNum--;
					createCommentToken(type);
					return;
				default:
					continue LOOP;
				}
			}
		case '$':
			createFix(RTerminal.SUB_NAMED_PART);
			return;
		case '%':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '%':
					createSpecialToken(STATUS_OK);
					return;
				case '\n':
				case '\r':
				case SourceParseInput.EOF:
					fFoundNum--;
					createSpecialToken(STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case '&':
			if (fInput.get(2) == '&') {
				fFoundNum++;
				createFix(RTerminal.AND_D);
				return;
			}
			createFix(RTerminal.AND);
			return;
		case '\'':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '\\':
					if (fInput.get(++fFoundNum) == SourceParseInput.EOF) {
						fFoundNum--;
					}
					continue LOOP;
				case '\'':
					createStringToken(RTerminal.STRING_S, STATUS_OK);
					return;
				case '\r':
					if (fInput.get(++fFoundNum) != '\n') {
						fFoundNum--;
					}
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case '\n':
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case SourceParseInput.EOF:
					fFoundNum--;
					createStringToken(RTerminal.STRING_S, STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case '(':
			createFix(RTerminal.GROUP_OPEN);
			return;
		case ')':
			createFix(RTerminal.GROUP_CLOSE);
			return;
		case '*':
			createFix(RTerminal.MULT);
			return;
		case '+':
			createFix(RTerminal.PLUS);
			return;
		case ',':
			createFix(RTerminal.COMMA);
			return;
		case '-':
			if (fInput.get(2) == '>') {
				fFoundNum++;
				if (fInput.get(3) == '>') {
					fFoundNum++;
					createFix(RTerminal.ARROW_RIGHT_D);
					return;
				}
				createFix(RTerminal.ARROW_RIGHT_S);
				return;
			}
			createFix(RTerminal.MINUS);
			return;
		case '.':
			switch (fInput.get(2)) {
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':
				fFoundNum++;
				consumeNumberInFloat();
				return;
			default:
				scanIdentifier();
				createSymbolToken();
				return;
			}
		case '/':
			createFix(RTerminal.DIV);
			return;
		case '0':
			if (fInput.get(2) == 'x') {
				fFoundNum++;
				consumeNumberInHex();
				return;
			}
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
			consumeNumberInDec();
			return;
		case ':':
			if (fInput.get(2) == ':') {
				fFoundNum++;
				if (fInput.get(3) == ':') {
					fFoundNum++;
					createFix(RTerminal.NS_GET_INT);
					return;
				}
				createFix(RTerminal.NS_GET);
				return;
			}
			createFix(RTerminal.SEQ);
			return;
		case ';':
			createFix(RTerminal.SEMI);
			return;
		case '<':
			switch (fInput.get(2)) {
			case '=':
				fFoundNum++;
				createFix(RTerminal.REL_LE);
				return;
			case '-':
				fFoundNum++;
				createFix(RTerminal.ARROW_LEFT_S);
				return;
			case '<':
				if (fInput.get(3) == '-') {
					fFoundNum++;
					fFoundNum++;
					createFix(RTerminal.ARROW_LEFT_D);
					return;
				}
			default:
				createFix(RTerminal.REL_LT);
				return;
			}
		case '=':
			if (fInput.get(2) == '=') {
				fFoundNum++;
				createFix(RTerminal.REL_EQ);
				return;
			}
			createFix(RTerminal.EQUAL);
			return;
		case '>':
			if (fInput.get(2) == '=') {
				fFoundNum++;
				createFix(RTerminal.REL_GE);
				return;
			}
			createFix(RTerminal.REL_LT);
			return;
		case '?':
			createFix(RTerminal.QUESTIONMARK);
			return;
		case '@':
			createFix(RTerminal.SUB_NAMED_SLOT);
			return;
		case '[':
			if (fInput.get(2) == '[') {
				fFoundNum++;
				createFix(RTerminal.SUB_INDEXED_D_OPEN);
				return;
			}
			createFix(RTerminal.SUB_INDEXED_S_OPEN);
			return;
		case ']':
			createFix(RTerminal.SUB_INDEXED_CLOSE);
			return;
		case '^':
			createFix(RTerminal.POWER);
			return;
		case 'A':
		case 'B':
		case 'C':
		case 'D':
		case 'E':
		case 'G':
		case 'H':
		case 'J':
		case 'K':
		case 'L':
		case 'M':
		case 'O':
		case 'P':
		case 'Q':
		case 'R':
		case 'S':
		case 'U':
		case 'V':
		case 'W':
		case 'X':
		case 'Y':
		case 'Z':
		case 'a':
		case 'c':
		case 'd':
		case 'g':
		case 'h':
		case 'j':
		case 'k':
		case 'l':
		case 'm':
		case 'o':
		case 'p':
		case 'q':
		case 's':
		case 't':
		case 'u':
		case 'v':
		case 'x':
		case 'y':
		case 'z':
			scanIdentifier();
			createSymbolToken();
			return;
		case 'F':
			scanIdentifier();
			if (fFoundNum == 5
					&& fInput.subequals(2, C1_FALSE)) {
				createFix(RTerminal.FALSE);
				return;
			}
			createSymbolToken();
			return;
		case 'I':
			scanIdentifier();
			if (fFoundNum == 3
					&& fInput.subequals(2, 'n', 'f')) {
				createFix(RTerminal.INF);
				return;
			}
			createSymbolToken();
			return;
		case 'N':
			scanIdentifier();
			switch(fFoundNum) {
			case 2:
				if (fInput.get(2) == 'A') {
					createFix(RTerminal.NA);
					return;
				}
				break;
			case 3:
				if (fInput.subequals(2, 'a', 'N')) {
					createFix(RTerminal.NAN);
					return;
				}
				break;
			case 4:
				if (fInput.subequals(2, 'U', 'L', 'L')) {
					createFix(RTerminal.NULL);
					return;
				}
				break;
			case 8:
				if (fInput.subequals(2, C1_NA_real_)) {
					createFix(RTerminal.NA_REAL);
					return;
				}
				break;
			case 11:
				if (fInput.subequals(2, C1_NA_integer_)) {
					createFix(RTerminal.NA_INT);
					return;
				}
				if (fInput.subequals(2, C1_NA_complex_)) {
					createFix(RTerminal.NA_CPLX);
					return;
				}
				break;
			case 13:
				if (fInput.subequals(2, C1_NA_character_)) {
					createFix(RTerminal.NA_CHAR);
					return;
				}
				break;
			}
			createSymbolToken();
			return;
		case 'T':
			scanIdentifier();
			if (fFoundNum == 4
					&& fInput.subequals(2, 'R', 'U', 'E')) {
				createFix(RTerminal.TRUE);
				return;
			}
			createSymbolToken();
			return;
		case 'b':
			scanIdentifier();
			if (fFoundNum == 5
					&& fInput.subequals(2, C1_break)) {
				createFix(RTerminal.BREAK);
				return;
			}
			createSymbolToken();
			return;
		case 'i':
			scanIdentifier();
			if (fFoundNum == 2) {
				if (fInput.get(2) == 'f') {
					createFix(RTerminal.IF);
					return;
				}
				if (fInput.get(2) == 'n') {
					createFix(RTerminal.IN);
					return;
				}
			}
			createSymbolToken();
			return;
		case 'e':
			scanIdentifier();
			if (fFoundNum == 4
					&& fInput.subequals(2, 'l', 's', 'e')) {
				createFix(RTerminal.ELSE);
				return;
			}
			createSymbolToken();
			return;
		case 'n':
			scanIdentifier();
			if (fFoundNum == 4
					&& fInput.subequals(2, 'e', 'x', 't')) {
				createFix(RTerminal.NEXT);
				return;
			}
			createSymbolToken();
			return;
		case 'f':
			scanIdentifier();
			switch (fFoundNum) {
			case 3:
				if (fInput.subequals(2, 'o', 'r')) {
					createFix(RTerminal.FOR);
					return;
				}
				break;
			case 8:
				if (fInput.subequals(2, C1_function)) {
					createFix(RTerminal.FUNCTION);
					return;
				}
				break;
			}
			createSymbolToken();
			return;
		case 'r':
			scanIdentifier();
			if (fFoundNum == 6
					&& fInput.subequals(2, C1_repeat)) {
				createFix(RTerminal.REPEAT);
				return;
			}
			createSymbolToken();
			return;
		case 'w':
			scanIdentifier();
			if (fFoundNum == 5
					&& fInput.subequals(2, C1_while)) {
				createFix(RTerminal.WHILE);
				return;
			}
			createSymbolToken();
			return;
		case '{':
			createFix(RTerminal.BLOCK_OPEN);
			return;
		case '|':
			if (fInput.get(2) == '|') {
				fFoundNum++;
				createFix(RTerminal.OR_D);
				return;
			}
			createFix(RTerminal.OR);
			return;
		case '}':
			createFix(RTerminal.BLOCK_CLOSE);
			return;
		case '~':
			createFix(RTerminal.TILDE);
			return;
		case '`':
			LOOP: while (true) {
				switch (fInput.get(++fFoundNum)) {
				case '\\':
					if (fInput.get(++fFoundNum) == SourceParseInput.EOF) {
						fFoundNum--;
					}
					continue LOOP;
				case '`':
					createQuotedSymbolToken(RTerminal.SYMBOL_G, STATUS_OK);
					return;
				case '\r':
					if (fInput.get(++fFoundNum) != '\n') {
						fFoundNum--;
					}
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case '\n':
					handleNewLine(fInput.getIndex()+fInput.getLength(fFoundNum));
					continue LOOP;
				case SourceParseInput.EOF:
					fFoundNum--;
					createQuotedSymbolToken(RTerminal.SYMBOL_G, STATUS2_SYNTAX_TOKEN_NOT_CLOSED);
					return;
				default:
					continue LOOP;
				}
			}
		case 0x000:
		case 0x001:
		case 0x002:
		case 0x003:
		case 0x004:
		case 0x005:
		case 0x006:
		case 0x007:
		case 0x008:
		case 0x00B:
		case 0x00E:
		case 0x00F:
		case 0x010:
		case 0x011:
		case 0x012:
		case 0x013:
		case 0x014:
		case 0x015:
		case 0x016:
		case 0x017:
		case 0x018:
		case 0x019:
		case 0x01A:
		case 0x01B:
		case 0x01C:
		case 0x01D:
		case 0x01E:
		case 0x01F:
		case 0x07F:
		case 0x080:
		case 0x081:
		case 0x082:
		case 0x083:
		case 0x084:
		case 0x085:
		case 0x086:
		case 0x087:
		case 0x088:
		case 0x089:
		case 0x08A:
		case 0x08B:
		case 0x08C:
		case 0x08D:
		case 0x08E:
		case 0x08F:
		case 0x090:
		case 0x091:
		case 0x092:
		case 0x093:
		case 0x094:
		case 0x095:
		case 0x096:
		case 0x097:
		case 0x098:
		case 0x099:
		case 0x09A:
		case 0x09B:
		case 0x09C:
		case 0x09D:
		case 0x09E:
		case 0x09F:
		case 0x0A0:
		case 0x0A1:
		case 0x0A2:
		case 0x0A3:
		case 0x0A4:
		case 0x0A5:
		case 0x0A6:
		case 0x0A7:
		case 0x0A8:
		case 0x0A9:
		case 0x0AA:
		case 0x0AB:
		case 0x0AC:
		case 0x0AD:
		case 0x0AE:
		case 0x0AF:
		case 0x0B0:
		case 0x0B1:
		case 0x0B2:
		case 0x0B3:
		case 0x0B4:
		case 0x0B5:
		case 0x0B6:
		case 0x0B7:
		case 0x0B8:
		case 0x0B9:
		case 0x0BA:
		case 0x0BB:
		case 0x0BC:
		case 0x0BD:
		case 0x0BE:
		case 0x0BF:
			break;
		default:
			if (Character.isLetterOrDigit(c1)) {
				scanIdentifier();
				createSymbolToken();
				return;
			}
			break;
		}
		consumeUnknown();
	}
