МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Лабораторная работа №3
по дисциплине «Системное программное обеспечение»
на тему: «Лексика языков программирования. Расширение функциональности лексического акцептора»
Вариант № 4141243
Выполнил:
студент группы АМ-610
Ретунский А.Л.
Проверил:
Малявко А.А.
Новосибирск 2009 г.
Содержание
Цель работы.. 3
Задание. 4
Вариант задания. 5
Ход работы.. 6
Выводы.. 20
Изучение способов расширения лексических акцепторов до функциональности лексических анализаторов, структуры информационных таблиц трансляторов, методов организации поиска в таблицах и пополнения таблиц, алгоритмов преобразования цепочек символов (слов) в их внутренние эквиваленты – лексемы.
1. Ориентируясь на свой вариант задания, выбрать способ реализации и разработать совокупность действий, обеспечивающих:
- подавление лексически правильных слов (таких как последовательности символов форматирования текста и комментарии), не используемых при проверке синтаксиса;
- поиск в таблицах для таких групп слов, как идентификаторы и/или константы;
- пополнение таблиц;
- преобразование правильных слов в лексемы;
- формирование диагностических сообщений о лексических ошибках.
2. Используя пакет ВебТрансЛаб, освоить:
- включение структур данных и действий в систему регулярных выражений;
- обнаружение и анализ конфликтных ситуаций, возникающих при пересечении различных групп слов (например – идентификаторы / служебные слова в С-подобных языках программирования);
- методику разработки и отладки системы действий, обеспечивающих формирование и обработку таблиц идентификаторов/констант.
3.1. Построить программные модули (с графовым и табличным лексическим акцептором) на языке шаблонов ВебТрансЛаба, изучить их структуру и способ вызова действий, расширяющих акцептор до анализатора.
3.2. Провести разработку полной системы регулярных выражений и встроенных действий для лексики учебного языка, заданного на курсовую работу. При необходимости разработать действия для обработки конфликтных ситуаций. Построить и отладить лексический анализатор, убедиться в его работоспособности.
II.1 Идентификаторы и константы
Вариант: |
4 |
Идентификаторы |
<Б><Ц><пБЦ> |
Константы |
целые вещественные символьные 7-ричные L_T/ L_F |
II.2 Объявления примитивных типов (целое, вещественное, символьное, булево):
Вариант: |
1 |
int[e[g[e[r]]]] float char bool |
II.3 Объявления объектов и создание/уничтожение экземпляров
Вариант: |
4 |
Классов |
define |
Экземпляров |
get / drop |
II.4 Оператор присваивания:
Вариант: |
1 |
<И> := <В>; |
II.5 Условный оператор:
В-т: |
2 |
when <ЛВ> then <ОБ> [else <ОБ>] |
II.6 Переключатель
В-т: |
4 |
with <В> {?<К>:<ОБ> …} |
II.7 Оператор цикла:
В-т: |
3 |
for<И>from<К>to<К> [step <К>] <ОБ> |
1. Дляподавления лексически правильных слов (таких как последовательности символов форматирования текста и комментарии), не используемых при проверке синтаксиса, используется выражение - ignoreLastWord=true;
В моей системе регулярных выражений оператор ignoreLastWord используется в строчках (см. табл. 1):
3 – для подавления начала комментария;
5 - для подавления символов форматирования;
10 – для подавления начало символьной константы;
18 - для подавления окончания символьной константы;
19 –для подавления символа -\ в символьной константе;
20 –для подавления комментария;
21- для подавления окончания комментария;
Построим по шаблону lexAsGraphSyntAsOneSA_to_jsp и посмотрим, как происходит подавление лексически правильных слов (см. рис. 1):
Рис.1 Подавление лексически правильных слов
Как видно из рисунка произошло подавление символов, не используемых при проверке синтаксиса (комментарии, символы начала и конца символьной константы и символ -\ в символьной константе).
2. Создали в шаблоне lexAsGraphSyntAsOneSA_to_jsp класс для работы с таблицами:
class Hash
{
Hashtable iden = new Hashtable(); //Таблица идентификаторов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.