Сборники трудов ИСП РАН


Языковой сервис FRIS для расширенной поддержки Fortran в Microsoft Visual Studio

И.С. Раткевич (РФЯЦ-ВНИИЭФ, Саров)

Аннотация

В данной статье рассматриваются вопросы построения языкового сервиса для расширенной поддержки языка программирования Fortran в интегрированной среде разработки Microsoft Visual Studio. Предлагается модель и общий подход к построению языковых сервисов.
Предлагаемая общая модель языкового сервиса состоит из пяти блоков: блока интеграции со средой разработки; блока анализа; блока хранения распознанных элементов; блока сериализации/десериализации элементов; блока модели представления элементов.
Блок интеграции с IDE соединяет языковой сервис с базовой инфраструктурой IDE. Он отвечает за подписку языкового сервиса на события редактирования текста пользователем в редакторе и за соответствующие отклики.
Блок анализа отвечает за проведение лексического, синтаксического и семантического анализа. Он собирает всю необходимую информацию об элементах языка программирования и помещает их в блок хранения распознанных элементов. Второй задачей данного блока является предоставление информации для подсветки синтаксиса редактируемого текста программы.
Блок хранения распознанных элементов является своеобразной базой данных всех элементов, необходимых для работы языкового сервиса. В общем случае он является разновидностью таблицы символов. Наполнение блока хранения может вестись из двух источников: из блока анализа, как результат разбора файлов с текстами программ, и из блока сериализации/десериализации элементов, как результат десериализации из ранее существующего специализированного описания программы, в случае использования модели API (Application Programming Interface) для произвольных библиотек.
Блок сериализации/десериализации элементов выполняет две функции. Во-первых, он позволяет сохранять содержимое программных проектов в виде XML файлов описания API и комментариев документирования к ним. Во-вторых, он позволяет восстанавливать содержимое программных проектов из их XML моделей.
Блок модели представления элементов является связующим звеном, своеобразным адаптером, элементов блока хранения, к тому виду, который необходим для использования в блоке интеграции с IDE. Так распознанные элементы могут содержать некоторую информацию, которая не требуется функциям технологии IntelliSense, или наоборот, не содержать нужной информации. В модели представления элементов организуются типы данных – обёртки для элементов блока хранения, соответствующие требованиям блока интеграции с IDE. Также здесь реализуются всевозможные функции выборки и поиска необходимой информации.
Доказательство работоспособности предложенной обобщённой модели приводится на примере разработанного автором языкового сервиса FRIS. Изложенный материал может быть в равной мере использован для построения языковых сервисов, как для других языков программирования, так и для других средств разработки.

Ключевые слова

FRIS; Fortran Intelligent Solutions; Fortran; Visual Studio Extensibility; Language Service; Visual Studio

Издание

Труды Института системного программирования РАН, том 27, вып. 3, 2015, стр. 9-28

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2015-27(3)-1

Полный текст статьи в формате pdf (на английском) Вернуться к содержанию тома