Partilhar via


Common Language Runtime e a avaliação da expressão

Compiladores, como, por exemplo, Visual Basic e C# (pronunciado c sharp), que visam o tempo de execução de linguagem comum (CLR), produzem MSIL Microsoft Intermediate Language (), que é posterior compilado para código nativo. O CLR fornece um mecanismo de depuração (DE) para depurar o código resultante. Se você pretende integrar sua linguagem de programação proprietária Visual Studio IDE, você pode optar por compilar para MSIL e, portanto, não precisará escrever seu próprio DE. No entanto, você terá que escrever um avaliador de expressão (EE) que é capaz de avaliar expressões dentro do contexto da sua linguagem de programação.

Discussão

Expressões de linguagem de computador geralmente são analisadas para produzir um conjunto de objetos de dados e um conjunto de operadores usados para manipulá-los. Por exemplo, a expressão "A + B" pode ser analisada para aplicar o operador de adição (+) para os dados de objetos "A" e "B", possivelmente resultando em outro objeto de dados. O conjunto total de objetos de dados, operadores e suas associações com mais freqüência são representados em um programa como uma árvore, com os operadores dos nós da árvore e os objetos de dados nos locais. Uma expressão que foi dividida em forma de árvore é normalmente chamada de uma árvore analisada.

Depois que uma expressão tem sido analisada, um provedor de símbolo (SP) é chamado para avaliar cada objeto de dados. Por exemplo, se "A" é definida nas mais de um método e, em seguida, a pergunta "Qual A?" deve ser respondida antes que o valor de a pode ser determinado. A resposta retornada pelo SP é algo como "O terceiro item no quadro de pilha do quinto" ou "O que é de 50 bytes além do início da memória estática a alocado para este método".

Além de produzir o MSIL para o próprio programa, os compiladores do CLR também podem produzir informações de depuração muito descritivas que são gravadas em um arquivo de banco de dados do programa (. PDB). Desde que um compilador de linguagem do proprietário produz informações de depuração no mesmo formato que os compiladores do CLR, SP do CLR é capaz de identificar que o nome do idioma objetos de dados. Depois que um objeto de dados nomeado tiver sido identificado, o EE usa um objeto de fichário para associar (ou ligar) o objeto de dados para a área de memória que contém o valor do objeto. Em seguida, o DE pode obter ou definir um novo valor para o objeto de dados.

Um compilador proprietário pode fornecer o CLR, informações de depuração, chamando o ISymbolWriter interface (que é definido na.NET Framework no namespace System.Diagnostics.SymbolStore). Compilação para MSIL e gravar informações de depuração através dessas interfaces, um compilador proprietário pode usar DE CLR e SP. Isso simplifica bastante uma linguagem proprietária de integrar o IDE Visual Studio.

Quando o DE CLR chama o EE proprietária para avaliar uma expressão, o DE fontes a EE com interfaces para uma controladora de armazenamento e um objeto de fichário. Assim, escrever um meio de mecanismo de depuração baseados em CLR é necessário apenas implementar as interfaces do avaliador de expressão apropriada; o CLR se encarrega de ligação e o símbolo de tratamento para você.

Consulte também

Outros recursos

Escrevendo um avaliador da expressão em tempo de execução de linguagem comum