Главная » Просмотр файлов » Диссертация

Диссертация (1150733), страница 8

Файл №1150733 Диссертация (Синтаксический анализ динамически формируемых программ) 8 страницаДиссертация (1150733) страница 82019-06-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

Например, это могут быть генераторы синтаксических анализаторов,основанные на различных алгоритмах или принтеры, генерирующие текст грамматики в определённом формате или на заданном языке. YC является расширяемой платформой: модуль любого типа может быть реализован, в том числе, спереиспользованием уже существующих, и подключён к платформе.В рамках YC разработан язык спецификации грамматик YARD, поддерживающий атрибутные грамматики, грамматики в EBNF 5 и многое другое.

В листинге 9 представлена грамматика языка арифметических выражений Calc на языкеYARD.5EBNF — расширенная форма Бэкуса-Наура. Грамматики в этой форме позволяют использовать регулярныевыражения в правых частях правил [84].401234[<Start>]expr: factor [MULT expr]powExpr: NUM | LBR expr RBRfactor: powExpr [POW factor]Листинг 9: Пример грамматики языка арифметических выражений на языкеYARDСинтаксис языка YARD удобен для разработчика, однако генераторы, какправило, не поддерживают обработку грамматик в этом формате. Часто требуется, чтобы правая часть правила грамматики не содержала регулярных выражений, а состояла бы из цепочки из терминалов и нетерминалов. Это необходимодля работы алгоритма построения таблиц.

Для решения этой задачи в YC реализован ряд преобразований грамматик. В результате их применения к грамматике, представленной в листинге 9, можно получить грамматику, представленнуюв листинге 10.12345678[<Start>]expr: factorexpr: factor MULT exprpowExpr: NUMpowExpr: LBR expr RBRfactor: powExprfactor: powExpr POW factorstartRule: exprЛистинг 10: Пример преобразованной грамматики языка арифметическихвыраженийТакже в рамках платформы YC в качестве одного из модулей был реализовангенератор синтаксических анализаторов на основе RNGLR-алгоритма. Это позволяет переиспользовать общие функции и структуры данных при разработкеанализатора для встроенных языков. Таким образом, алгоритм анализа встроенных языков и соответствующий генератор может быть реализован в рамкахплатформы YC в качестве одного из модулей. При этом можно использовать готовый язык описания грамматики и преобразования, а также переиспользоватьнеобходимые элементы генератора анализаторов на основе RNGLR-алгоритма.Таким образом, YC был выбран в качестве основы для реализации благодаряудобной архитектуре и большому количеству готовых решений.411.7.2ReSharper SDKДля демонстрации разработанного в рамках данной работы инструментапредставляется целесообразным создать на его основе целевое решение.

Дляэтого требуется окружение, способное обрабатывать внешний язык, посколькутакие операции, как построение дерева разбора, базовый анализ (например, построение графа потока управления или графа потока данных), лежат за пределами нашей задачи. При этом такие инструменты должны предоставлять необходимую для решения основной задачи функциональность. Также необходимоиметь удобный способ взаимодействия с пользователем: необходимо получатькод для анализа и адекватно отображать результаты. Один из самых распространённых способов работы с программным кодом — это работа в интегрированнойсреде разработки.Так как реализация программных средств в данной диссертационной работе выполнялось на платформе Microsoft .NET, то соответствующее окружениетакже должно работать на данной платформе.

Одной из самых известных средразработки для платформы .NET, позволяющей создавать расширения на .NETязыках, является Microsoft Visual Studio IDE [85]. Она и была выбрана в качествеосновы для интеграции инструмента статического анализа строковых выражений. Однако у данной среды разработки достаточно сложный механизм созданиярасширений, что является следствием его универсальности. При решении нашейзадачи универсальность не требовалась, поэтому можно было бы использоватьболее простые механизмы.Такой механизм предоставляется ReSharper SDK [80].

ReSharper [86] — расширение для Microsoft Visual Studio, предоставляющее пользователю широкийнабор дополнительных анализов кода. Для разработчиков предоставляется свободно распространяемый набор библиотек (SDK), реализующий анализаторыдля C#, VB.NET и др. Большая часть функциональности ReSharper выделена вданные библиотеки, что даёт возможность сторонним разработчикам создаватьсобственные расширения к ReSharper. В контексте данной работы это позволяет упростить создание плагинов для поддержки различных встроенных языков.Кроме того, ReSharper SDK предоставляет более удобную “обёртку” для многимих интерфейсаов Microsoft Visual Studio, что упрощает взаимодействие с ней иможет быть использовано при предоставлении результатов пользователю.42Следует также отметить, что ReSharper является многоязыковым инструментом, то есть поддерживает большой набор различных языков и спроектировантак, чтобы максимально упростить поддержку новых языков. Это позволяет создавать инструменты, обрабатывающие не только различные встроенные языки,но также и различные внешние.Может быть выделена следующая функциональность ReSharper SDK, необходимая для реализации поддержки встроенных языков в Microsoft Visual Studio.– Построение дерева разбора внешнего языка (C#, JavaScript и другие, поддерживаемые ReSharper), узлы которого содержат координаты конструкцийв исходном коде, что позволяет точно связывать текстовое и структурноепредставление кода.– Анализ потока данных и анализ потока управления для поддерживаемыхязыков.

На основе существующих анализов можно строить более сложные,необходимые, например, для построения регулярной аппроксимации.– Вывод сообщений об ошибках и графическое выделение некорректныхмест в текстовом редакторе.– Взаимодействие с редактором кода, позволяющее настраивать подсветкусинтаксиса, получать позицию курсора и управлять ею, что нужно длядинамической подсветки парных элементов.Таким образом ReSharper SDK и Microsoft Visual Studio IDE выбраны в качестве основы для разработки целевого инструмента, реализующего представленные в данной работе результаты.1.8ВыводыНа основе проведённого обзора можно сделать следующие выводы, обосновывающие необходимость проведения исследований в области статическогоанализа динамически формируемых строковых выражений.– Проблема анализа строковых выражений актуальна в нескольких областях: поддержка встроенных языков в интегрированных средах разработки,43оценка качества кода, содержащего динамически формируемые строковыевыражения, реинжиниринг программного обеспечения.– Большинство реализаций поддерживают конкретные внешние и встроенние языки и, как правило, решают одну достаточно узкую задачу.

Приэтом они плохо расширяемы, как в смысле поддержки других языков, таки в смысле решения новых задач. Полноценные средства разработки инструментов статического анализа динамически формируемых выражений,упрощающие создание решений для новых языков, отсутствуют.– Для эффективного решения этих задач необходимо структурное представление динамически формируемого программного кода, однако существующие алгоитмы и инструменты этого не обеспечивают.Обзор также позволяет выявить следующие подходы, технологии и средства.– В качестве приближения множества значений целесообразно использоватьрегулярную аппроксимацию [30, 55], так как при работе с ней ряд важныхзадач является разрешимым в общем случае, что не верно для контекстносвободной.

Работа с регулярной аппроксимацией также упрощает решениезадачи лексического анализа встроенных языков.– Лексический и синтаксический анализы должны быть разделены. Этооправдано как с теоретической, так и с практической точек зрения, таккак лексический анализ не привносит потери точности и упрощается переиспользование спецификаций языков и самих анализаторов.– В качестве основы алгоритма синтаксического анализа динамически формируемых выражений можно выбрать алгоритм обобщённого синтаксического анализа [77], так как он реализует эффективное управление множеством стеков и деревьев разбора, что важно при работе с динамическиформируемыми выражениями.44Глава 2Алгоритм синтаксическогоанализа регулярнойаппроксимацииВ данной главе формально описана задача синтаксического анализа динамически формируемых выражений, а так же изложен алгоритм её решения.

Характеристики

Тип файла
PDF-файл
Размер
2,34 Mb
Высшее учебное заведение

Список файлов диссертации

Синтаксический анализ динамически формируемых программ
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6390
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее