code: public Token scanCharacterConstant() {
  		int start = pos;
  		pos++;
  		char c = input.charAt(pos++);
  		if (c == '\\') {
  			// escape code
  			switch (input.charAt(pos++)) {
  			case 'b':
  				c = '\b';
  				break;
  			case 't':
  				c = '\t';
  				break;
  			case 'n':
  				c = '\n';
  				break;
  			case 'f':
  				c = '\f';
  				break;
  			case 'r':
  				c = '\r';
  				break;
  			case '"':
  				c = '\"';
  				break;
  			case '\'':
  				c = '\'';
  				break;
  			case '\\':
  				c = '\\';
  				break;
  			default:
  				syntaxError("unrecognised escape character", pos);
  			}
  		}
  		if (input.charAt(pos) != '\'') {
  			syntaxError("unexpected end-of-character", pos);
  		}
  		pos = pos + 1;
  		return new Token(Token.Kind.CharValue, input.substring(start, pos),
  				start);
  	}
docs: Scan a character constant, such as e.g. 'c'. Observe that care must be
  taken to properly handle escape codes. For example, '\n' is a single
  character constant which is made up from two characters in the input
  string.
  
  @return