IDebugExpressionEvaluator3::Parse2
Platí pro:![]()
kód Visual Studio Visual Studio pro Mac
Visual Studio
Převede řetězec výrazu na analyzovaný výraz vzhledem k poskytovateli symbolů a adresu vyhodnocovacího rámce.
Syntax
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] Řetězec výrazu, který se má analyzovat.
dwFlags
[in] Kolekce konstant PARSEFLAGS , které určují způsob analýzy výrazu.
nRadix
[in] Radix, který se má použít k interpretaci libovolných číselných informací.
pSymbolProvider
[in] Rozhraní zprostředkovatele symbolů.
pAddress
[in] Adresa vyhodnocovacího rámce
pbstrError
[ven] Vrátí chybu jako text čitelný člověkem.
pichError
[ven] Vrátí pozici znaku začátku chyby v řetězci výrazu.
ppParsedExpression
[ven] Vrátí parsovaný výraz v objektu IDebugParsedExpression .
Návratová hodnota
Pokud je úspěšná, vrátí hodnotu S_OK, jinak vrátí kód chyby.
Poznámky
Tato metoda vytvoří parsovaný výraz, nikoli skutečnou hodnotu. Analyzovaný výraz je připravený k vyhodnocení, tj. převeden na hodnotu.
Příklad
Následující příklad ukazuje, jak implementovat tuto metodu pro CEE objekt, který zveřejňuje IDebugExpressionEvaluator3 rozhraní.
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);
}