1. Тема: «Синтаксис языков программирования. Формальные
грамматики».
2. Цели работы: изучение основных понятий метаязыка
формальных грамматик, свойств грамматик и
нетерминальных символов, рекурсивности и однозначности грамматик,
недостижимости, бесплодности, аннулируемости и
рекурсивности нетерминальных символов, отношений предшествования и последования между символами, освоение технологий
разработки формальных грамматик.
3. Порядок выполнения работы:
3.1. Изучить интерфейс пакета ВебТрансЛаб,
предназначенный для работы с синтаксическими правилами.
3.2. На примерах 3 и 4 (грамматики Ga1 и Ga2 из учебного
пособия) изучить и освоить:
-
ввод и
редактирование правил грамматики;
-
построение
синтаксических акцепторов с целью вычисления свойств грамматики
и ее символов;
-
просмотр свойств
символов грамматики (следует достичь понимания того, почему те или иные символы
грамматики имеют свой конкретный набор свойств);
-
понятия множеств предшественников и множеств последователей для
нетерминальных символов;
-
понятие множеств
выбора правил грамматики и их пересечений для правил с одинаковыми
нетерминалами в левой части.
3.3. Ориентируясь на свой вариант задания на расчетно-графическую
работу, модифицировать (расширить) грамматики Ga1
и Ga2
до грамматик операторов присваивания, условного оператора и оператора цикла,
добавляя новые нетерминалы и правила по технологии
разработки «снизу вверх». Изучить свойства полученных грамматик и их символов.
3.4. Используя полученные навыки работы с грамматиками и
программным обеспечением, начать поэтапную разработку грамматики по технологии
«сверху вниз» для заданного варианта курсовой работы.
3.5. Оценить свои субъективные проблемы и трудности разработки
формальных грамматик при использовании разных технологий («снизу вверх» и
«сверху вниз»). Выбрать наиболее субъективно подходящую технологию для
выполнения задания на расчетно-графическую работу.
3.6. Подготовить, сдать и защитить отчет по теме.