private static Expression  parseFunction()
    {
    	System.out.println("解析函数表达式");
        int opType = CurrentToken.type;
        eat( opType );
        eat( TokenType.OpenParen );
        Expression exp = parseAddExpression();
        eat( TokenType.CloseParen );

        switch ( opType )
        {
        case TokenType.Sine:
            return new SineExpression( exp );
        case TokenType.Cosine:
            return new CosineExpression( exp );
        case TokenType.Tangent:
            return new TangentExpression( exp );
        case TokenType.ASine:
            return new ASineExpression( exp );
        case TokenType.ACosine:
            return new ACosineExpression( exp );
        case TokenType.ATangent:
            return new ATanExpression( exp );
        case TokenType.Ln:
            return new LnExpression( exp );
        case TokenType.Log:
            return new LogExpression( exp );
        default:
            try {
				throw new Exception( "Unexpected Function type: " + opType );
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
        return null;
    }