private int readString(boolean verbatim) {
		read();
		prepareString();
		do {
			// check escapes
			switch (_val) {
				case (char) -1:
					throw new ScoreException("Unfinished string");
				case '\n':
				case '\r':
					if (!verbatim)
						throw new ScoreException("Cannot have a line break in a single-line string.");
					_sb.append(_val);
					break;
				case '\\':
					read();
					_sb.append(escape(_val));
					break;
				default:
					_sb.append(_val);
			}
			read();
		} while (_val != '\"'); // the end of the string
		read();
		return TK_STRINGLITERAL;
	}