Common langage runtime et évaluation de l'expression
Compilateurs, tels que Visual Basic et c# (C-pointu prononcé), qui ciblent le common langage runtime (CLR), produit Microsoft Intermediate langage (MSIL), qui est compilé ultérieurement en code natif. Le CLR fournit un moteur de débogage (DE) pour déboguer le code résultant. Si vous projetez d'intégrer votre langage de programmation propriétaire dans l'IDE de Visual Studio, vous pouvez choisir de compilation en MSIL et par conséquent ne devez pas écrire votre propre De. Toutefois, vous devrez écrire un évaluateur d' (EE)expression qui est capable d'évaluer des expressions dans le contexte de votre langage de programmation.
Discussion
Les expressions de langage de programmation sont généralement analysées pour produire un jeu d'objets de données et un ensemble d'opérateurs utilisés pour les manipuler. Par exemple, l'expression « A+B » peut être analysée pour appliquer l'opérateur d'addition (+) aux objets de données « A » et « B », probablement en créant une autre objet de données. L'ensemble du total d'objets de données, opérateurs, et leurs associations le plus souvent sont représentés dans un programme comme arborescence, avec les opérateurs aux nœuds de l'arborescence et les objets de données aux branches. Une expression qui était décomposée en forme d'arborescence est souvent appelée une arborescence analysée.
Une fois qu'une expression était analysée, un fournisseur de symbole (SP) est appelé pour évaluer chaque objet de données. Par exemple, si « A » est deux définis méthode dans plusieurs, la question « qui A ? » doivent être traitées avant la valeur d'Un peut être sûr. La réponse retournée par SP est présenter comme « le troisième élément du cinquième frame de pile » ou « un qui est de 50 octets au delà de le début de la mémoire statique allouée à cette méthode. »
En plus de produire MSIL pour le programme lui-même, les compilateurs de CLR peuvent également générer des informations de débogage très descriptives qui sont écrites dans un fichier de base de données du programme (.pdb). Tant qu'un compilateur de propriété industrielle-langage produit des informations de débogage dans le même format que les compilateurs CLR, SP du CLR peut identifier ce langage nommé des objets de données. Une fois qu'un objet de données nommé a été marqué, l'évaluateur d'expression utilise un objet de classeur sur la associée (ou lier) l'objet de données à la zone de mémoire qui contient la valeur de cet objet. Le De peut ensuite obtenir ou définir une nouvelle valeur pour l'objet de données.
Un compilateur propriétaire peut fournir des informations de débogage CLR en appelant l'interface d' ISymbolWriter (définie dans le.NET Framework dans l'espace de noms System.Diagnostics.SymbolStore). Lors de la compilation en langage MSIL et en écrivant des informations de débogage à travers ces interfaces, un compilateur propriétaire peut utiliser le CLR et SP. Cela simplifie considérablement intégrant un langage propriétaire dans l'IDE de Visual Studio.
Lorsque le CLR appelle l'évaluateur d'expression propriétaire pour évaluer une expression, le De fournit l'évaluateur d'expression avec les interfaces à SP et d'un objet de classeur. Ainsi, l'écrire des moyens CLR-basés d'un moteur de débogage est nécessaire d'implémenter uniquement les interfaces appropriées évaluateur d'expression ; le CLR se charge de la liaison et de la gestion de symboles pour vous.