다음을 통해 공유


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. 그렇지 않으면 오류 코드를 반환 합니다.

설명

이 메서드는 구문 분석 된 식을 실제 값을 생성합니다. 구문 분석 된 식을 반환 계산 될 준비가 됩니다.

예제

다음 예제에서는이 메서드를 구현 하는 방법을 보여 줍니다 있는 CEE 를 노출 하는 개체는 IDebugExpressionEvaluator3 인터페이스.

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