Aracılığıyla paylaş


IDebugExpressionEvaluator3::Parse2

Bir ifade dizesini, sembol sağlayıcısı ve değerlendirme çerçevesinin adresi verildiğinde ayrıştırılmış bir ifadeye dönüştürür.

Sözdizimi

HRESULT Parse2 (
    string                     upstrExpression,
    enum_PARSEFLAGS            dwFlags,
    uint                       nRadix,
    IDebugSymbolProvider       pSymbolProvider,
    IDebugAddress              pAddress,
    out string                 pbstrError,
    out uint                   pichError,
    out IDebugParsedExpression ppParsedExpression
);

Parametreler

upstrExpression
[in] Ayrıştırılacak ifade dizesi.

dwFlags
[in] İfadenin nasıl ayrıştırılacağına karar veren PARSEFLAGS sabitleri koleksiyonu.

nRadix
[in] Sayısal bilgileri yorumlamak için kullanılacak sayı tabanı.

pSymbolProvider
[in] Sembol sağlayıcısının arabirimi.

pAddress
[in] Değerlendirme çerçevesinin adresi.

pbstrError
[out] Hatayı okunabilir metin olarak döndürür.

pichError
[out] İfade dizesindeki hatanın başlangıcının karakter konumunu döndürür.

ppParsedExpression
[out] IDebugParsedExpression nesnesinde ayrıştırılmış ifadeyi döndürür.

İade Değeri

Başarılı olursa döndürür S_OK; aksi takdirde bir hata kodu döndürür.

Açıklamalar

Bu yöntem, gerçek bir değer değil ayrıştırılmış bir ifade oluşturur. Ayrıştırılmış ifade değerlendirilmeye, yani bir değere dönüştürülmeye hazırdır.

Örnek

Aşağıdaki örnek, IDebugExpressionEvaluator3 arabirimini kullanıma sunan bir CEE nesnesi için bu yöntemin nasıl uygulandığını gösterir.

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

Ayrıca bkz.