IDebugExpressionEvaluator3:: Parse2

将表达式字符串转换为给定的一个分析的表达式符号提供程序和计算的帧的地址。

HRESULT Parse2 (
   LPCOLESTR                upstrExpression,
   PARSEFLAGS               dwFlags,
   UINT                     nRadix,
   IDebugSymbolProvider*    pSymbolProvider,
   IDebugAddress*           pAddress,
   BSTR*                    pbstrError,
   UINT*                    pichError,
   IDebugParsedExpression** ppParsedExpression
);
HRESULT Parse2 (
   string                     upstrExpression,
   enum_PARSEFLAGS            dwFlags,
   uint                       nRadix,
   IDebugSymbolProvider       pSymbolProvider,
   IDebugAddress              pAddress,
   out string                 pbstrError,
   out uint                   pichError,
   out IDebugParsedExpression ppParsedExpression
);

参数

  • upstrExpression
    [in] 要分析的字符串表达式。

  • dwFlags
    [in] 的 PARSEFLAGS 常数的集合确定表达式如何分析。

  • nRadix
    [in] 要使用的基数解释任何数字信息。

  • pSymbolProvider
    [in] 符号提供程序的接口。

  • pAddress
    [in] 计算帧的地址。

  • pbstrError
    [out] 返回错误作为可读的文本。

  • pichError
    [out] 返回错误的字符位置在表达式字符串。

  • ppParsedExpression
    [out] 返回在 IDebugParsedExpression 对象进行分析的表达式。

返回值

如果成功,则返回; S_OK否则,返回错误代码。

备注

此方法生成的分析的表达式,而不是实际值。 一个分析的表达式准备进行计算,也就是说,转换为值。

示例

下面的示例演示如何执行显示 IDebugExpressionEvaluator3 接口的 CEE 对象的方法。

HRESULT CEE::Parse2 ( LPCOLESTR in_szExprText,
  PARSEFLAGS in_FLAGS,
  UINT in_RADIX,
  IDebugSymbolProvider *pSymbolProvider,
  IDebugAddress *pAddress,
  BSTR* out_pbstrError,
  UINT* inout_pichError,
  IDebugParsedExpression** out_ppParsedExpression )
{
    // precondition
    REQUIRE( NULL != in_szExprText );
    //REQUIRE( NULL != out_pbstrError );
    REQUIRE( NULL != inout_pichError );
    REQUIRE( NULL != out_ppParsedExpression );

    if (NULL == in_szExprText)
        return E_INVALIDARG;

    if (NULL == inout_pichError)
        return E_POINTER;

    if (NULL == out_ppParsedExpression)
        return E_POINTER;

    if (out_pbstrError)
        *out_pbstrError = NULL;

    *out_ppParsedExpression = NULL;

    INVARIANT( this );

    if (!this->ClassInvariant())
        return E_UNEXPECTED;

    // function body
    EEDomain::fParseExpression DomainVal =
    {
        this,                   // CEE*
        in_szExprText,          // LPCOLESTR
        in_FLAGS,               // EVALFLAGS
        in_RADIX,               // RADIX
        out_pbstrError      ,   // BSTR*
        inout_pichError,        // UINT*
        pSymbolProvider,
        out_ppParsedExpression  // Output
    };

    return (*m_LanguageSpecificUseCases.pfParseExpression)(DomainVal);
}

请参见

参考

IDebugExpressionEvaluator3