Тема: Диагностика синтаксических ошибок в динамически формируемом коде
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
1. Постановка задачи 5
2. Обзор 6
2.1. Регулярная аппроксимация динамически формируемого выражения . . 6
2.2. Алгоритм ослабленного синтаксического анализа регулярной аппрокси¬
мации динамически формируемого выражения 6
2.3. Понятие синтаксической ошибки в алгоритмах LR-семейства 11
2.4. Проект YaccConstructor 12
3. Понятие синтаксической ошибки 14
4. Механизм диагностики ошибок 16
4.1. Компактное представление префиксов внутреннего графа 16
4.2. Алгоритм построения префиксов 17
4.3. Алгоритм диагностики ошибок 19
5. Корректность механизма диагностики ошибок 23
5.1. Корректность алгоритма построения префиксов 23
5.2. Корректность алгоритма диагностики ошибок 30
6. Экспериментальное исследование 34
7. Заключение 37
Список литературы 38
📖 Введение
Как правило, динамически формируемые выражения, описывающие код программ на встроенных языках, конструируются с использованием конкатенаций строковых литералов в ветках условных операторов, циклах и рекурсивных процедурах. Это при-водит к множеству возможных значений встроенного кода, что не позволяет в общем виде использовать статический анализ для проверки корректности формируемого вы¬ражения. В результате этого становятся недоступными такие типы функционально¬сти, как информирование о синтаксических ошибках, автодополнение и подсветка синтаксиса. Отсутствие этих возможностей повышает вероятность ошибок, которые обнаруживаются лишь во время выполнения программы, а также усложняет процесс разработки и тестирования.
Существует ряд инструментов, позволяющих проводить анализ динамически фор-мируемых строковых выражений: Java String Analyzer [5, 9], PHP String Analyzer [12], Alvor [8, 2, 1], IntelliLang [7], PHPStorm [14], Varis [13] (анализ этих технологий приве¬ден в работе [21]). Большинство реализаций проводят диагностику синтаксических ошибок, но плохо расширяемы: как в смысле поддержки других языков, так и в смысле решения новых задач. Существует алгоритм, описанный в статье [19] и ре¬ализованный как часть проекта YaccConstructor [11], который позволяет провести синтаксический анализ динамически формируемых выражений. В отличие от других инструментов, реализация данного алгоритма хорошо расширяема и строит конечное представление леса разбора относительно входной грамматики, которое может быть использовано в дальнейшем семантическом анализе. Недостаток данного алгоритма заключается в отсутствии механизма диагностики синтаксических ошибок. Устране¬нию этого недостатка и посвящена данная работа.
✅ Заключение
• Определено понятие синтаксической ошибки в терминах регулярной аппрокси¬мации динамически формируемого выражения.
• Разработан механизм диагностики ошибок в синтаксическом анализе регулярной аппроксимации динамически формируемого выражения.
• Доказана корректность предложенного механизма.
• Предложенный механизм реализован на языке программирования F# в рамках проекта YaccConstructor.
• Проведено экспериментальное исследование: тестирование работоспособности и тестирование производительности.
• Исходный код проекта YaccConstructor можно найти на сайте https://github. com/YaccConstructor/YaccConstructor, автор принимал участие под учётной записью rustam-azimov.
В дальнейшем планируется использовать результат работы модифицированного алгоритма синтаксического анализа для формирования сообщений об обнаруженных ошибках, удобных для пользователя. Кроме того, необходимо произвести теоретиче¬скую оценку сложности модифицированного алгоритма.



