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

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

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

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

Реализация данных расширений также являлась апробацией предложенной архитектуры разработанного инструментального пакета.В рамках данного шага апробации были созданы лексические спецификации и грамматики соответствующих языков (код опубликован в открытом доступе 1 ). Далее, с помощью генераторов разработанного инструментария по этим1Репозиторий проекта YaccConstructor, содержащий набор различных грамматик (дата обращения: 29.07.2015):https://github.com/YaccConstructor/YC.GrammarZOO100грамматикам были построены синтаксические анализаторы, а по лексическимспецификациям — лексические анализаторы.При создании расширений был также апробирован механизм построения регулярной аппроксимации.

Для построения графа потока управления внешнеговода использовалась функциональность ReSharper SDK. Затем полученный графпереводился в обобщённое представление, по которому строилась регулярнаяаппроксимация средствами разработанного инструмента.После того, как отдельные части были готовы, они были объединены в готовый плагин на основе YC.SEL.SDK.ReSharper. В результате было полученодва расширения, предоставляющие поддержку соответствующих языков и ядро,содержащее общую, независимую от языков функциональность, обеспеченивающую взаимодействие между ReSharper и реализованными расширениями.Компоненты предоставляют подсветку синтаксиса (рисунок 22) и подсветкупарных элементов (рисунок 23). Для языка Calc также реализована статическаядиагностика семантических ошибок, а именно, поиск использования необъявленных переменных.

Это показывает, с одной стороны, возможность непосредственного использования SPPF для проведения анализа динамически формируемого кода, а с другой — возможность реализации дополнительной функциональности, не являющейся общей функциональностью SDK.Результаты статического поиска использования необъявленных переменныхпоказан на рисунке 24. В данном примере переменная x объявляется в однойиз веток условного оператора и не объявляется в другой, что может привести кошибке в точке использования, о чём сообщается пользователю.Рисунок 22: Пример подсветки синтаксиса для нескольких встроенных языков:SQL и Calc101(a) Одной открывающей скобкесоответствует несколько закрывающих(b) Одной закрывающей скобкесоответствует одна открывающаяРисунок 23: Пример подсветки парных скобокРисунок 24: Пример статического обнаружения семантических ошибок дляязыка CalcРисунок 25: Пример межпроцедурной обработки встроенных языков102Расширения опубликованы в виде готовых к использованию бинарных пакетов.

Функциональность, отвечающая за поддержку каждого языка, распространяется в виде самостоятельного бинарного пакета и может быть независимоподключена или отключена. Структура пакетов представлена на рисунке 26. Пакет YC.SEL.Plugins.Core содержит функции, общие для обработки произвольныхвстроенных языков, что показывает возможность эффективного переиспользования при разработке однотипных инструментов. Пакеты YC.SEL.Plugins.Calc иYC.SEL.Plugins.TSQL содержат функции, необходимые для поддержки соответствующих языков. Они расширяют возможности ReSharper как непосредственно,так и через YC.SEL.Plugins.Core, используя общие функции.Рисунок 26: Структура пакетов расширений для ReSharper, предоставляющихподдержку встроенных T-SQL и CalcДополнительно в результате разработки расширений было подтверждено, чтонезависимость шагов обработки динамически формируемых выражений позволяет гибко переиспользовать компоненты, реализующие эти шаги.

Например,анализаторы, разработанные в рамках расширений для ReSharper, используютсяв тестах, не связанных с ReSharper, то есть одни и те же анализаторы используются вместе с различными компонентами для построения аппроксимации.1035.5ОграниченияИспользуемые подходы и алгоритмы накладывают ограничения на платформу и инструменты, разрабатываемые на её основе. Данный раздел посвящёнобсуждению этих ограничений.Множество, являющееся аппроксимацией значений динамически формируемого выражения, принимаемое на вход алгоритмом синтаксического анализа, должно быть регулярным.

То есть аппроксимация задаёт регулярный язык,в то время как язык, генерируемый программой, может быть рекурсивноперечислимым. Это означает, что за на этапе построения аппроксимации будет происходить потеря точности. Например, нехвостовая рекурсия невыразима в терминах регулярных множеств. Точность построения конкретной регулярной аппроксимации зависит от конкретного алгоритма, используемого для этихцелей. Алгоритм может реализовывать или не реализовывать межпроцедурныйанализ, поддерживать или не поддерживать строковые операции, разными способами обрабатывать пользовательский ввод и другие ситуации, когда значениевыражения вычислить невозможно.

Наш алгоритм поддерживает межпроцедурный анализ и строковые операции.Эталонный язык должен быть описан детерминированной контекстносвободной грамматикой. Большинство языков программирования могут бытьописаны такой грамматикой. Однако бывают исключения, например, язык C++.С другой стороны, в документации языка может быть приведена неоднозначнаяграмматика, а её приведение к детерминированной может потребовать значительных временных затрат.Вопросы быстродействия инструментов зависят от контекста их использования. Если при реинжиниринге время обработки кода не всегда является существенным фактором, то для многих инструментов, используемых в средахразработки, время отклика критично. Особенно это важно для функциональности, работающей в режиме “на лету”: подсветка синтаксиса, автодополнение,подсказки. Так как платформа создавалась с ориентацией на разработку инструментов для реинжинирига, то некоторые компоненты направлены на увеличениеточности анализа в ущерб производительности.

Например, компонента построения регулярной аппроксимации гарантирующая построение приближения свер-104ху, учитывает циклы и строковые функции [55], что повышает точность анализа,однако производительность может оказаться слишком низкой для использованиякомпоненты в средах разработки. С другой стороны, при создании инструментадля IDE возможно заменить алгоритм построения аппроксимации на более быстрый, но менее точный. Например в инструменте Alvor [32], предназначенномпрежде всего для интерактивной работы в среде разработки, предлагается именно такой алгоритм.

При этом важно, что возможности платформы позволяюткомбинировать различные реализации компонент. То есть можно использоватьодин и тот же синтаксический анализатор с разными вариантами лексического для получения требуемых характеристик результирующего инструмента. Сдругой стороны, текущая реализация содержит возможности для различных оптимизаций, в частности, некоторые алгоритмы могут быть ускорены с помощьюраспараллеливания. Выбор оптимальных структур данных, например для конечных автоматов, активно использующихся в рамках платформы, является темойотдельного исследования [95].В 2015 году была опубликована работа [96], являющаяся одной из первых,посвящённой систематическому исследованию работы с SPPF в контексте обобщённого синтаксического анализа.

В рамках анализа динамически формируемыхвыражений исследований в этом направлении не обнаружено. По этой причинев рамках данной работы реализован только прототип библиотеки, позволяющейрешать некоторые задачи над SPPF в общем виде, например, поиск необъявленных переменных. Теоретическое исследование данного вопроса является отдельной задачей. С другой стороны, было доказано, что из построенного SPPFмогут быть извлечены деревья вывода для любых цепочек из аппроксимации, ас деревьями можно работать с помощью стандартных методов.105Глава 6Сравнение и соотнесениеВ данной главе представлено сравнение полученных результатов с основными существующими решениями в области анализа динамически формируемыхстроковых выражений. Описание существующих решений представлено в разделе 1.5 данной работы.В качестве инструментов, с которыми производилось сравнение, выбраныследующие: Alvor [64], JSA [68], PHPSA [69], IntelliLang [72], Varis [75].

Так жепроводилось сравнение с инструментом, названным нами условно AbsPars, реализованным авторами работ по абстрактному синтаксическому анализу [26–28].Несмотря на то что в свободном доступе реализации алгоритма, изложенногов указанных статьях, не обнаружено, самими авторами приводятся достаточноподробные результаты апробации реализации алгоритма, что позволяет сделатьнекоторые выводы о его основных возможностях. Кроме того, стоит отметить,что Varis является очень молодым инструментом: впервые он был представленв 2015 году на конференции ICSE1 . По этой причине детальная оценка его возможностей затруднена.Для сравнения инструментов были выбраны критерии, представленные втаблице 7.

Данные критерии позволяют оценить два основных результаты данной работы: алгоритм синтаксического анализа динамически формируемых выражений и архитектуру инструмента.1Международная конференция по разработке программного обеспечения ICSE (International Conference onSoftware Engineering).

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

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

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

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