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);
}