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

Страницы работы

Фрагмент текста работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Лабораторная работа №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();    //Таблица идентификаторов

Похожие материалы

Информация о работе