protected Literal literal(char delimiter, char escape) throws IOException, ParseException {
		if (peek == delimiter) {
			StringBuilder sb = new StringBuilder();
			for (readChar(); peek >= 0 && peek != delimiter; readChar()) {
				if (peek == escape) {
					readChar();
					if (peek < 0) break;
				}
				sb.append((char)peek);
			}
			if (peek < 0) {
				throw new ParseException(line, col, "Unterminated literal");
			}
			peek = ' ';
			return new Literal(sb.toString());
		}
		return null;
	}