Город: Санкт-Петербург Новосибирск Казань Язык: Русский English

Технология построения поддержки IDE для языков программирования


Построение компилятора для языка программирования является сложной и трудоемкой задачей. Результатом работы компилятора является исполняемый код на целевой платформе, предупреждения и сообщения об ошибках. При попытках использовать компилятор для реализации расширенной функциональности IDE возникают дополнительные требования к функциональности компилятора. Эти требования связаны с необходимостью обеспечить мгновенный отклик на действия пользователя при изменяющемся исходном коде программы.

Будет рассказано про алгоритмы и структуры данных, которые используются в IDE для реализации основных функций компилятора: синтаксический анализ, разрешение ссылок, семантические анализы. Также будут рассмотрены основные подходы к реализации функциональности, присущей только IDE: автодополнение, поиск использований и т.д.

Краткое содержание:

  • Инкрементальный лексический анализ
  • Инкрементальный синтаксический анализ
  • Индексирование файлов
  • Разрешение ссылок
  • Поиск использований
  • Автодополнение
  • Поддержка генеративных и вложенных языков
  • Реализация простых рефакторингов, разрешение конфликтов
  • Инкрементальный анализ кода
  • Слабо типизированные языки программирования
  • Алгоритмы анализа потока данных
  • Примитивы синхронизации

Прочтения курсов

Семестр
осень 2014