Введение
1 Обзор 14
1.1 Языки и грамматики 14
1.2 Конечные автоматы и преобразователи 19
1.3 О применимости статического анализа строковых выражений 22
1.4 Подходы к анализу встроенных языков 24
1.5 Обзор инструментов для работы со встроенными языками 27
1.6 Алгоритмы и структуры данных для обобщённого синтаксического анализа
1.6.1 Алгоритм обобщённого LR-анализа 30
1.6.2 Структурированный в виде графа стек 32
1.6.3 Сжатое представление леса разбора 33
1.6.4 Алгоритм RNGLR 35
1.7 Используемые инструменты 38
1.7.1 YaccConstructor 38
1.7.2 ReSharper SDK 41
1.8 Выводы 42
2 Алгоритм синтаксического анализа регулярной аппроксимации 44
2.1 Постановка задачи 44
2.2 Описание алгоритма 47
2.3 Построение компактного представления леса разбора 51
2.4 Доказательство корректности алгоритма 53
3 Инструментальный пакет 58
3.1 Архитектура 58
3.1.1 Архитектура YS.SEL.SDK 60
3.1.2 Архитектура YC.SEL.SDK.ReSharper
3.2 Применение YC.SEL.SDK 68
3.3 Особенности реализации 73
4 Метод реинжиниринга встроенного программного кода 74
4.1 Особенности 74
4.2 Метод 76
5 Эксперименты, ограничения, обсуждение 89
5.1 Апробация в промышленном проекте по реинжинирингу 90
5.2 Экспериментальная оценка производительности алгоритма 93
5.3 Сравнение с инструментом Alvor 96
5.4 Разработка расширений для поддержки встроенных языков 99
5.5 Ограничения 103
6 Сравнение и соотнесение 105
Заключение 109
Литература


