private Expression readExpression()
	throws ParserException
	{
		try {
			Token token = stream.peek();
			     if (token.isKeyword("BEGIN"))  return readBlock();
			else if (token.isKeyword("DO"))     return readDo();
			else if (token.isKeyword("FOR"))    return readFor(); 
			else if (token.isKeyword("IF"))     return readIf();
			else if (token.isKeyword("PROC"))   return readProc();
			else if (token.isKeyword("WHILE"))  return readWhile();
			else                                return readExp0();
		} catch (TokenException e) {
			throw new ParserException("expression");
		}
	}