Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konwertuje ciąg wyrażenia na wyrażenie przeanalizowane, biorąc pod uwagę dostawcę symboli i adres ramki oceniania.
Składnia
HRESULT Parse2 (
string upstrExpression,
enum_PARSEFLAGS dwFlags,
uint nRadix,
IDebugSymbolProvider pSymbolProvider,
IDebugAddress pAddress,
out string pbstrError,
out uint pichError,
out IDebugParsedExpression ppParsedExpression
);
Parametry
upstrExpression
[in] Ciąg wyrażenia, który ma zostać przeanalizowany.
dwFlags
[in] Kolekcja stałych PARSEFLAGS określających sposób analizowania wyrażenia.
nRadix
[in] Radix do interpretacji wszelkich informacji liczbowych.
pSymbolProvider
[in] Interfejs dostawcy symboli.
pAddress
[in] Adres ramki oceny.
pbstrError
[out] Zwraca błąd jako tekst czytelny dla człowieka.
pichError
[out] Zwraca położenie znaku początku błędu w ciągu wyrażenia.
ppParsedExpression
[out] Zwraca przeanalizowane wyrażenie w obiekcie IDebugParsedExpression .
Wartość zwracana
Jeśli operacja powiedzie się, zwraca wartość S_OK; w przeciwnym razie zwraca kod błędu.
Uwagi
Ta metoda generuje wyrażenie przeanalizowane, a nie wartość rzeczywistą. Przeanalizowane wyrażenie jest gotowe do obliczenia, czyli przekonwertowane na wartość.
Przykład
W poniższym przykładzie pokazano, jak zaimplementować tę metodę dla obiektu CEE , który uwidacznia interfejs 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);
}