다음을 통해 공유


IDebugExpressionEvaluator3::Parse2

계산 프레임의 기호 공급자 및 주소를 고려하여 식 문자열을 구문 분석된 식으로 변환합니다.

구문

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 개체에서 구문 분석된 식을 반환합니다.

Return Value

성공하면 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);
}

참고 항목