Практикум Лабораторная работа №1 Название работы: «Лексика языков программирования. Регулярные выражения» - polpoz.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Лабораторная работа №6 Итоговое задание «Логическое программирование... 1 96.64kb.
Обоснование выбора средств и методов разработки Выбор языка программирования 2 424.95kb.
1. Программа дисциплины Целью изучения дисциплины «Программирование»... 7 860.11kb.
Лабораторная работа №5 Построение модели перцептрона Цель работы... 1 63.86kb.
Лабораторная работа №20 изучение осциллографа и проверка градуировки... 1 55.04kb.
Лабораторная работа №9 структура программы. Скалярные типы данных. 4 863.77kb.
Лабораторная работа №1 «Длинная арифметика» 1 80.64kb.
«Информатика» Главный редактор 1 48.96kb.
Лабораторная работа «Семейства растений класса Двудольные» 1 43.9kb.
Студентов гр. Кс-051, Стрелка Д. В., Осадчука О. М., Забузова С. 1 27.07kb.
Лабораторная работа №2 «Калькулятор» 1 264.54kb.
Скремблирование 1 39.34kb.
1. На доске выписаны n последовательных натуральных чисел 1 46.11kb.

Практикум Лабораторная работа №1 Название работы: «Лексика языков программирования. - страница №1/1

Лабораторный практикум

2.1. Лабораторная работа № 1


  1. Название работы: «Лексика языков программирования. Регулярные выражения».

  2. Цели работы: освоение основных навыков работы с учебным пакетом программ автоматизации разработки трансляторов ВебТрансЛаб, изучение и освоение пользовательского интерфейса пакета и форматов файлов с исходными данными/результатами работы, изучение метаязыка регулярных выражений и технологии разработки систем правил определения лексики языков программирования.

  3. Порядок выполнения работы (рекомендуется использовать примеры систем правил 1 и 2):

    1. Ознакомиться с перечнем версий учебного пакета, выбрать версию для освоения и дальнейшего использования.

    2. Изучить интерфейс выбранной версии пакета ВебТрансЛаб: запуск, регистрация, вид основного окна, команды меню, структура используемых каталогов (рабочий каталог пользователя, каталог программ пакета, каталоги шаблонов, лог-файлов и bat-файлов для сетевых версий) и назначение расположенных в этих каталогах файлов.

    3. Используя справку Вебтранслаба (команда меню «Справка» или «Помочь»), изучить структуру таблицы лексических правил (и данных лексического анализатора) основного окна, приемы и способы формирования/редактирования ее содержимого, назначение колонок «имя автомата», «имя группы слов», «регулярное выражение», «действие» и «примечание».

    4. Освоить:

      • открытие системы лексических и/или синтаксических правил;

      • редактирование лексических правил;

      • операции сортировки таблицы лексических правил, добавления пустых строк, удаления, вырезания и вставки правил;

      • сохранение правил в файле;

    1. Изучить структуру текстового xml-файла, содержащего систему правил; освоить внешние операции (в частности - редактирование) этих файлов.

    2. Изучить технологию разработки сложных систем регулярных выражений, ориентируясь на свой вариант задания на курсовую работу. Разработать и сохранить фрагмент системы регулярных выражений (пока без действий) для всех (или выбранной самостоятельно части) групп слов языка, заданного в курсовой работе.

    3. Подготовить, сдать и защитить отчет к лабораторной работе (в электронном виде, в формате MS Office 2003).

2.2. Лабораторная работа № 2


  1. Название работы: «Лексика языков программирования. Конечные автоматы без памяти для обнаружения слов в тексте программы».

  2. Цели работы: изучение конечных автоматов (КА) без памяти, способов определения КА – канонического, графового и табличного, методов построения недетерминированного КА по системе регулярных выражений, методов эквивалентных преобразований недетерминированных КА в оптимальные полностью определенные КА – лексические акцепторы.

  3. Порядок выполнения работы (рекомендуется использовать примеры систем правил 1 и 2):

    1. Используя пакет ВебТрансЛаб, освоить:

      • создание лексических правил на языке регулярных выражений (РВ);

      • использование операций «+, *, ?, конкатенации и выбора» языка РВ;

      • преобразование системы РВ в одноавтоматный лексический акцептор;

      • добавление правил и действий в систему РВ для построения мультиавтоматного лексического акцептора;

    1. Разработать (доработать разработанный при выполнении работы №1) фрагмент системы регулярных выражений для всех (или выбранной самостоятельно части) групп слов языка, определенного заданием на курсовую работу. Построить по этому фрагменту:

      • программный модуль, управляемый графом состояний и переходов;

      • программный модуль, управляемый таблично;

    1. Изучить структуру программных модулей, построенных ВебТрансЛабом, изучить алгоритмы работы лексического акцептора для графового и табличного способов реализации КА, сравнить реализации конечных автоматов, управляемых различными способами, между собой;

    2. Изучить реализацию вызова действий, определенных в лексических правилах и алгоритм работы формирователя лексем.

    3. Проверить функционирование конечных автоматов, построенных ВебТрансЛабом (подготовить тестовый пример, запустить каждый автомат на выполнение, протрассировать работу лексического акцептора в графовой и табличной реализации, убедиться в работоспособности автоматов, в противном случае – доработать систему РВ и добиться правильного функционирования лексического акцептора).

    4. Изучить те элементы языка шаблонов, которые используются для преобразования внутреннего представления конечного автомата в программную реализацию лексического анализатора.

    5. Подготовить, сдать и защитить отчет к лабораторной работе.

2.3. Лабораторная работа № 3


  1. Название работы: «Лексика языков программирования. Расширение функциональности лексического акцептора».

  2. Цели работы: изучение способов расширения лексических акцепторов до функциональности лексических анализаторов, структуры информационных таблиц трансляторов, методов организации поиска в таблицах и пополнения таблиц, алгоритмов преобразования цепочек символов (слов) в их внутренние эквиваленты – лексемы.

  3. Порядок выполнения работы:

    1. Ориентируясь на свой вариант задания на курсовую работу, выбрать способ реализации и разработать совокупность действий, обеспечивающих:

      • подавление лексически правильных слов (таких как последовательности символов форматирования текста и комментарии), не используемых при проверке синтаксиса;

      • поиск в таблицах для таких групп слов, как идентификаторы и/или константы;

      • пополнение таблиц;

      • преобразование правильных слов в лексемы;

      • формирование диагностических сообщений о лексических ошибках.

    1. Используя пакет ВебТрансЛаб, освоить:

      • включение структур данных и действий в систему регулярных выражений;

      • обнаружение и анализ конфликтных ситуаций, возникающих при пересечении различных групп слов (например – идентификаторы / служебные слова в С-подобных языках программирования);

      • методику разработки и отладки системы действий, обеспечивающих формирование и обработку таблиц идентификаторов/констант.

    1. Построить программные модули (с графовым и табличным лексическим акцептором) на языке шаблонов ВебТрансЛаба, изучить их структуру и способ вызова действий, расширяющих акцептор до анализатора.

    2. Провести разработку полной системы регулярных выражений и встроенных действий для лексики учебного языка, заданного на курсовую работу. При необходимости разработать действия для обработки конфликтных ситуаций. Построить и отладить лексический анализатор, убедиться в его работоспособности.

    3. Подготовить, сдать и защитить отчет к лабораторной работе.

2.4. Лабораторная работа № 4


  1. Название работы: «Синтаксис языков программирования. Формальные грамматики».

  2. Цели работы: изучение основных понятий метаязыка формальных грамматик, свойств грамматик и нетерминальных символов, рекурсивности и однозначности грамматик, недостижимости, бесплодности, аннулируемости и рекурсивности нетерминальных символов, отношений предшествования и последования между символами, приобретение навыков эквивалентных преобразований формальных грамматик, освоение технологий разработки формальных грамматик.

  3. Порядок выполнения работы:

    1. Изучить интерфейс пакета ВебТрансЛаб, предназначенный для работы с синтаксическими правилами.

    2. На примерах 3 и 4 (грамматики Ga1 и Ga2 из учебного пособия) изучить и освоить:

      • ввод и редактирование правил грамматики;

      • построение синтаксических акцепторов с целью вычисления свойств грамматики и ее символов;

      • просмотр свойств символов грамматики (следует достичь понимания того, почему те или иные символы грамматики имеют свой конкретный набор свойств);

      • понятия множеств предшественников и множеств последователей для нетерминальных символов;

      • понятие множеств выбора правил грамматики и их пересечений для правил с одинаковыми нетерминалами в левой части.

    1. Изучить способы эквивалентных преобразований грамматики из примера 4 для устранения пересечений множеств выбора правил с одинаковыми нетерминалами в левой части.

    2. Ориентируясь на свой вариант задания на курсовую работу, модифицировать (расширить) грамматики Ga1 и Ga2 до грамматик операторов присваивания, условного оператора и оператора цикла, добавляя новые нетерминалы и правила по технологии разработки «снизу вверх». Изучить свойства полученных грамматик и их символов.

    3. Используя полученные навыки работы с грамматиками и программным обеспечением, начать поэтапную разработку грамматики по технологии «сверху вниз» для заданного варианта курсовой работы.

    4. Оценить свои субъективные проблемы и трудности разработки формальных грамматик при использовании разных технологий («снизу вверх» и «сверху вниз»). Выбрать технологию для выполнения задания на курсовую работу.

    5. Подготовить, сдать и защитить отчет к лабораторной работе.



2.5. Лабораторная работа № 5


  1. Название работы: «Синтаксис языков программирования. Нисходящий синтаксический анализ, процедурная и автоматные реализации».

  2. Цели работы: изучение основных идей и понятий нисходящих методов синтаксического анализа, выявление свойств формальных грамматик, необходимых для реализации нисходящего восстановления дерева грамматического разбора, приобретение навыков построения процедурной и различных автоматных реализаций нисходящего анализа, исследование поведения нисходящих синтаксических акцепторов.

  3. Порядок выполнения работы:

    1. Используя пакет ВебТрансЛаб:

      • изучить и освоить проверку принадлежности грамматики к классу LL(1), используя в качестве проверяемых грамматики, полученные при выполнении работы №4;

      • построить конечный автомат со стековой памятью и несколькими состояниями (шаблон …SyntAsManySA…), разобраться в структуре управляющей таблицы автомата, уяснить способы формирования и использования всех полей;

      • построить конечный автомат со стековой памятью и одним состоянием, управляемый входным символом и символом, снятым с верхушки стека (шаблон …SyntAsOneSA…), разобраться в структуре управляющей таблицы автомата, уяснить способы формирования и использования клеток таблицы;

      • построить процедурную реализацию рекурсивного спуска (шаблон …SyntAsRD…), уяснить способы формирования функций этого акцептора;

      • построить реализацию нисходящего грамматического разбора с возвратами (шаблон …SyntAsFullTpDn…);

    1. Выполнить трассировку процессов нисходящего синтаксического акцепта, изучить поведение всех построенных синтаксических акцепторов при разборе как правильных предложений, так и предложений с намеренно внесенными синтаксическими ошибками.

    2. Проанализировать и сравнить между собой все полученные тексты программ и результаты выполнения пункта 3.2. Оценить степень пригодности изученных вариантов реализации нисходящих синтаксических акцепторов для выполнения курсовой работы.

    3. Изучить те элементы языка шаблонов, которые используются для преобразования внутреннего (формируемого преобразователем) представления конечного автомата со стековой памятью в программную реализацию нисходящего синтаксического акцептора.

    4. Подготовить, сдать и защитить отчет к лабораторной работе.

2.6. Лабораторная работа № 6


  1. Название работы: «Синтаксис языков программирования. Восходящий синтаксический анализ, автоматная реализация».

  2. Цели работы: изучение основных идей и понятий восходящего синтаксического анализа, свойств формальных грамматик, определяющих принадлежность грамматики к одному из классов LR, получение навыков построения автоматной реализации восходящего анализатора, исследование поведения восходящих синтаксических акцепторов.

  3. Порядок выполнения работы:

    1. Используя пакет ВебТрансЛаб:

      • построить табличную реализацию (шаблон …SyntAsTxLR…), разобраться в структуре управляющей таблицы автомата, уяснить способы формирования и использования всех полей;

      • построить процедурную реализацию (шаблон …SyntAsPxLR…), сравнить тексты построенных программных модулей, уяснить способы формирования операций восходящего синтаксического акцептора;

      • изучить структуру таблицы канонических и таблицы обобщенных конфигураций, связь этих таблиц с управляющей таблицей восходящего синтаксического акцептора;

      • выявить разрешенные преобразователем конфликты типов «сдвиг–свертка» и «свертка–свертка», разрешенные и, возможно, не разрешенные преобразователем, уяснить на этих примерах основы LR-классификации грамматик.

    1. Выполнить трассировку процессов нисходящего синтаксического акцепта, изучить поведение всех построенных синтаксических акцепторов при разборе как правильных предложений, так и предложений с намеренно внесенными синтаксическими ошибками.

    2. Проанализировать и сравнить между собой все полученные тексты программ и результаты выполнения пункта 3.2. Оценить степень пригодности изученных вариантов реализации нисходящих синтаксических акцепторов для выполнения курсовой работы.

    3. Изучить те элементы языка шаблонов, которые используются для преобразования внутреннего (формируемого преобразователем) представления конечного автомата со стековой памятью в программную реализацию восходящего синтаксического акцептора.

    4. Подготовить, сдать и защитить отчет к лабораторной работе.

2.7. Лабораторная работа № 7


  1. Название работы: «Семантика языков программирования. Преобразование программы в постфиксную запись и псевдокод».

  2. Цели работы: изучение задач и методов преобразования текста транслируемой программы вначале в постфиксную запись (ПФЗ) для выявления заложенной в алгоритм последовательности операций, затем в последовательность тетрад для построения псевдокода, приобретение навыков разработки действий, реализующих семантические проверки и преобразования.

  3. Порядок выполнения работы:

    1. Используя пакет ВебТрансЛаб, изучить и освоить:

      • способы включения структур данных и операций в грамматики, полученные в результате выполнения предыдущих лабораторных работ;

      • структуру и механизмы функционирования нисходящего и восходящего синтаксических анализаторов, способы вызова и моменты активизации действий, расширяющих функциональность синтаксических акцепторов;

      • методику разработки и отладки (трассировки) системы действий, обеспечивающих преобразование в постфиксную запись последовательности лексем, получаемой от лексического анализатора, выполнение семантических проверок и формирование последовательности тетрад.

    1. Использовать полученные навыки для разработки преобразователя в ПФЗ и семантического анализатора согласно заданию на курсовое проектирование.

    2. Подготовить, сдать и защитить отчет к лабораторной работе.

2.8. Лабораторная работа № 8


  1. Название работы: «Семантика языков программирования. Семантический анализ и элементы генерации объектного кода или интерпретации».

  2. Цели работы: изучение семантических свойств объектов транслируемой программы, методов их выявления и использования, типов данных и методов контроля типов, областей видимости переменных, локальных и нелокальных сред ссылок, способов передачи параметров, приобретение навыков преобразования псевдокода в объектный код или разработки элементов виртуальной машины для интерпретируемого языка.

  3. Порядок выполнения работы:

    1. Если заданием на курсовую работу предусмотрена разработка компилятора, то:

      • расширить далее систему действий для преобразования псевдокода в последовательность команд целевого языка;

      • расширить совокупность семантических проверок для выявления ошибок времени исполнения;

      • построить компилятор с учебного языка (или его подмножества), убедиться в его работоспособности.

    1. Если заданием на курсовую работу предусмотрена разработка интерпретатора, то:

      • расширить систему действий синтаксического анализатора, построенного при выполнении лабораторных работ 5 – 7, действиями для исполнения последовательности тетрад;

      • обеспечить выполнение семантических проверок для выявления ошибок времени исполнения при интерпретации;

      • построить интерпретатор (виртуальную машину) для учебного языка или его подмножества, убедиться в его работоспособности.

    1. Подготовить, сдать и защитить отчет к лабораторной работе.