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

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

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

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

Конечный преобразователь, построенный повходной спецификации, описывается с виде кода на языке F# и сохраняется вфайле (Lexer.fs). Далее данный файл может быть использован в пользовательском приложении, в рамках которого разрабатывается лексический анализатор,который устроен следующим образом. На вход принимается конечный автомат62над символами, результатом работы является конечный автомат над алфавитомтокенов анализируемого языка, полученный с помощью интерпретатора и преобразователя, построенного генератором. Входной конечный автомат может бытьпостроен с помощью компоненты построения регулярной аппроксимации. Основные структуры данных — конечный автомат и конечный преобразователь —и функции работы с ними описаны в соответствующей библиотеке.Рисунок 11: Архитектура лексического анализатораЛексический анализатор реализован на основе инструмента FsLex [87], который является стандартным генератором лексических анализаторов для языкаF#.

При реализации был переиспользован язык описания лексики и некоторыеструктуры данных.Реализованный генератор лексических анализаторов обладает следующимиособенностями.– Поддерживаются разрывные токены, то есть токены формируемые изнескольких строковых литералов.– Сохраняется привязка лексических единиц к исходному тексту программы:сохраняется информация о строковом литерале, из которого был создан токен, и его координаты внутри этой строки. Так как одна лексическая единица может формироваться из нескольких строковых литералов, то привязкасохраняется отдельно для каждой части.– Поддерживается обработка входных конечных автоматов, содержащихциклы.63– Так как значение токена может формироваться с помощью цикла и, какследствие, быть бесконечным, то каждый токен содержит конечный автомат, порождающий все его возможные значения, а не единственное значение, как это делается в классическом лексическом анализе [11, 88].Генератор синтаксических анализаторов, названный ARNGLR (AbstractRNGLR), реализован на основе алгоритма, описанного в разделе 2.2.

Его архитектура представлена на рисунке 12.Рисунок 12: Архитектура синтаксического анализатораГенератор реализован как один из модулей YC и может принимать на входвнутреннее представление грамматики (Intermidiate Language, IL), которое может быть получено с помощью различных фронтендов (Frontends). В рамкахYC.SEL.SDK основным фронтендом является YARD, так как он предоставляетнаиболее развитые средства для описания грамматик. По грамматике обрабатываемого языка строятся управляющие таблицы анализатора, которые сохраняются в файле Parser.fs.

Построенные таблицы должны быть включены в разрабатываемое приложение (компонента UserApplication). Интерпретатор, предназначенный для синтаксического разбора конечного автомата, полученный после лексического анализа, реализован в виде отдельной библиотеки ARNGLR.Runtime,которая также должна быть подключена к разрабатываемому приложению. В64результате работы интерпретатора будет получен SPPF, который может быть использован для дальнейшей обработки (например, подсчёта метрик). Для упрощения работы с SPPF реализован ряд вспомогательных функций.3.1.2Архитектура YC.SEL.SDK.ReSharperReSharper — это расширение к Microsoft Visual Studio IDE, предоставляющее широкий спектр дополнительной функциональности по анализу и рефакторингу кода. ReSharper поддерживает несколько языков, например C#, VisualBasic .NET, JavaScript, и этот список может быть расширен благодаря наличиюсвободно распространяемого ReSharper SDK, описание которого было представлено ранее в разделе 1.7.2.

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

Обычно поддержканового языка реализуется в виде независимой компоненты. Если пользовательхочет получить поддержку какого-либо языка в своей среде разработки, то ондолжен установить соответствующий пакет. При этом поддержка различныхязыков осуществляется независимо, однако часто выделяется общая функцио-65нальность, которая может быть оформлена в виде отдельного повторно используемого пакета.Для предоставления описанных выше возможностей была реализована надстройка над YC.SEL.SDK, упрощающая создание расширений для ReSharperназванная YC.SEL.SDK.ReSharper. В неё включены компоненты, реализующиефункции, которые упрощают взаимодействие YC.SEL.SDK и ReSharper.SDK.Назначение основных из них описаны ниже.– Общая точка расширения, необходимая для подключения функциональности для различных встроенных языков, которая может быть реализована вразличных расширениях, к ReSharper через общий интерфейс.

Также общая точка расширения позволяет использовать общую функциональность,необходимую для работы со встроенными языками.– Отображение в IDE информации, полученной в ходе анализа. Например,подсветка синтаксиса и ошибок. Вывод диагностических сообщений с информацией об ошибках.– Преобразование данных, из формата, используемого в ReSharper.SDK, вформат для YC.SEL.SDK. Например, преобразование графа потока управления внешнего языка, построенного ReSharper.SDK, в формат, пригодныйдля построения регулярной аппроксимации средствами YC.SEL.SDK.– Управление работой анализаторов, необходимое, с одной стороны, дляобеспечения своевременной реакции на изменения в коде, совершённыепользователем, а с другой, для прекращения вычислений, результаты которых уже не актуальны.

Управление построено на основе общего дляReSharper механизма, обеспечивающего асинхронную работу анализов.При этом вычисления могут быть прерваны, если, например, пользовательвнёс в код изменения, делающие анализ или его результаты некорректными.При использовании встроенных языков могут использоваться различные способы выполнения сформированного запроса. Таким образом, необходимо предоставить возможность настройки расширений конечным пользователем. Для это-66го в рамках YC.SEL.SDK.ReSharper была реализована возможность управленияследующими параметрами расширений.– Подсветка синтаксиса для каждого языка. Предоставлена возможность указать цвет для каждого типа токена.– Указание парных элементов, то есть для каждого языка можно указать, какие лексические единицы считать парными: для каждой пары указывается“левый” (открывающая скобка) и “правый” (закрывающая скобка) элементы.

При расположении курсора в тексте рядом с одним из элементов парыбудут подсвечены соответствующие элементы. Пример подсветки парныхэлементов приведён на рисунке 23.– Точки интереса или хотспоты (hotspot) — места в программе, в которыхдолжно быть сформировано финальное выражение. При этом необходимо знать, какой хотспот какому языку соответствует.

При этом нужноучитывать, что одному языку может соответствовать несколько хотспотов. Например, динамически сформированный SQL-запрос в программена языке программирования C# может быть выполнен с помощью методаExecuteQuery класса DataContext 1 или же текст запроса может бытьпередан как аргумент конструктора класса SqlCommand 2 с последующимвыполнением с помощью метода ExecuteReader.Настройка указанных выше параметров хранится в соответствующих конфигурационных файлах в формате XML, которые на данный момент редактируются вручную. Настройка подсветки синтаксиса и парных элементов совмещена водном файле, и для каждого языка создаётся отдельный такой файл.

Конфигурационный файл с точками интереса является общим для всех языков и, соответственно, для всех установленных расширений поддержки встроенных языков.В листинге 15 приведён пример конфигурации подсветки синтаксиса и парных скобок для языка Calc. Для указания цвета используются имена, принятые1Документация метода ExecuteQuery .NET класса DataContext (дата обращения: 28.06.2015): https://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.executequery(v=vs.110).aspx2Документация класса SqlCommand (дата обращения: 28.06.2015): https://msdn.microsoft.com/ru-ru/library/sebfsz50(v=vs.110).aspx67в ReSharper (например, "CONSTANT_IDENTIFIER_ATTRIBUTE"), что должносделать настройку цветов более единообразной.

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

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

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

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