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]PAR标准版FLAGS 常量集合,用于确定如何分析表达式。
nRadix
[in]用于解释任何数值信息的弧度。
pSymbolProvider
[in]符号提供程序的接口。
pAddress
[in]评估帧的地址。
pbstrError
[out]将错误作为人工可读文本返回。
pichError
[out]返回表达式字符串中错误开头的字符位置。
ppParsedExpression
[out]返回 IDebugParsedExpression 对象中的已分析表达式。
返回值
如果成功,则返回 S_OK
;否则,返回错误代码。
备注
此方法生成分析的表达式,而不是实际值。 已分析的表达式已准备好计算,即转换为值。
示例
以下示例演示如何为公开 IDebugExpressionEvaluator3 接口的 C企业版 对象实现此方法。
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);
}