Partilhar via


IDebugExpressionEvaluator3::Parse2

Converte uma seqüência de caracteres de expressão em uma expressão analisada, dada o provedor de símbolo e o endereço do quadro avaliar.

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

Parâmetros

  • upstrExpression
    [in] A seqüência da expressão a ser analisado.

  • dwFlags
    [in] Uma coleção de PARSEFLAGS constantes que determinam como a expressão é para ser analisado.

  • nRadix
    [in] Base a ser usado para interpretar qualquer informação numérica.

  • pSymbolProvider
    [in] Interface do provedor do símbolo.

  • pAddress
    [in] Endereço da estrutura de avaliar.

  • pbstrError
    [out] Retorna o erro como texto legível.

  • pichError
    [out] Retorna a posição do caractere do início do erro na seqüência de expressão.

  • ppParsedExpression
    [out] Retorna a expressão analisada em um IDebugParsedExpression objeto.

Valor de retorno

Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro.

Comentários

Este método produz uma expressão analisada, não um valor real. Uma expressão analisada está pronta para ser avaliada, ou seja, convertida em um valor.

Exemplo

O exemplo a seguir mostra como implementar este método para um CEE objeto que expõe a IDebugExpressionEvaluator3 interface.

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

Consulte também

Referência

IDebugExpressionEvaluator3