Поделиться через


Среда и вычисление выражений

Компиляторы, как произнесенные Visual Basic и c# (C острым), целевой объект среды CLR, MSIL продукта (MSIL), который позже компилироваться в машинный код. Среда CLR предоставляет обработчик отладки (DE) для отладки результирующий код. Если планируется объединить свой собственный язык программирования, в интегрированной среде разработки Visual Studio, можно выбрать, чтобы компилировать в MSIL и поэтому написание собственного DE. Однако можно написать средство оценки выражений (EE), способный вычисления выражения в контексте выбранного языка программирования.

Обсуждение

Выражения компьютерного языка обычно анализируются для создания набора объектов данных и набор операторов, используемых для работы с ними. Например, выражение "" A+B может быть проанализировано, к которому применяется оператор сложения (+) к объектам данных "a" и "б", возможно, что в другом объекте данных. Полный набор объектов данных, операторов и их ассоциации наиболее часто представлены в программе в виде дерева с операторами на узлах дерева и объектами данных на ветвлениях. Выражение, которое было сломано вниз по форме дерева анализированным часто называется деревом.

Как только выражение было проанализировано, поставщик символов (sp) вызывается для вычисления каждый объект данных. Например, если "a", указанные как в более чем один метод, вопрос ", а?" быть отвеченно перед значением a может быть установленно. Ответ, возвращенный пакетом обновления что-то как "третий элемент на пятом кадре стека" или "a, 50 байт за началом статическую память, выделенную в данный метод."

Помимо самого создания MSIL для программы, компиляторы среда CLR также могут создавать очень описательные сведения об отладке, которая записывается в файл базы данных программы (pdb). Если компилятор собственническ-языка создает отладочные данные в том же формате, что и компиляторы среды CLR, пакет обновления среды CLR может определить, что именованные объекты данных языка. Как только именованный объект данных был определен, EE использует объект привязки к сподвижнице (или привязке) объект данных в область памяти, которая содержит значение объекта. DE затем может получить или задать новое значение для объекта данных.

Собственный компилятор может предоставить данные отладки среды CLR путем вызова ISymbolWriter интерфейс (который определен в платформе .NET Framework в пространстве имен System.Diagnostics.SymbolStore). Путем компилировать в MSIL и запись отладочной информации через эти интерфейсы, собственный компилятор может использоваться среда CLR DE и пакет обновления. Это значительно упрощает интеграции собственный язык в интегрированную среду разработки Visual Studio.

Когда среда CLR вызывает собственный DE EE для вычисления выражения, DE поставку EE с интерфейсами к пакету обновления и объект привязки. Таким образом, создание среды CLR-основанное обработчик отладки означает, что необходимо только реализовать соответствующие интерфейсы вычислителя выражений; среда CLR позаботится о привязке и символ для обработки.

См. также

Другие ресурсы

Запись вычислителя выражений среды CLR