Изучение конечных автоматов без памяти, способов определения КА – канонического, графового и табличного, методов построения недетерминированного КА по системе регулярных выражений

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

Содержание работы

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

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

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

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

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

ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ


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

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

Выполнил: Малахов С.А.                                             Преподаватель:

Группа: АМ-710                                                                 Малявко А.А.

Факультет: АВТФ

Вариант: 2332321

Новосибирск 2010


1. Цели работы

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

2. Задание

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

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

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

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

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

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

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

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

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

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

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

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

3. Индивидуальное задание

Идентификаторы и константы

2

<Б><Ц><пБЦ>

целые

вещественные

символьные

булевские

Объявления примитивных типов (целое, вещественное, символьное, булево):

3

int[e[g[e[r]]]]

double

litera

bool

Объявления объектов и создание/уничтожение экземпляров

3

object

build / destroy

Оператор присваивания:

2

<И> <- <В>;

Условный оператор:

В-т:

3

? (<ЛВ>) :<ОБ> [: <ОБ>]

Переключатель

2

switch<В> { by <К>:<ОБ> [break]}

Оператор цикла:

1

while(<ЛВ>) loop <ОБ>

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

В ходе работы были изучены принципы построения лексических правил на языке регулярных выражений (продолжение лабораторной работы №1). Было рассмотрено преобразование системы регулярных выражений в мультиавтоматный лексический акцептор, после чего были разработаны правила для выявления символьных констант, для этого было создано несколько автоматов, а также «привязать» действия к переходам.

После доработки фрагмента системы регулярных выражений были построены программные модули, управляемые:

·  графом состояний переходов,

·  таблично.

Были изучены: структура генерируемых программных модулей, вызов действий определенных в лексических правилах.

Была проверена правильность функционирования конечных автоматов построенных пакетом ВебТрансЛаб.

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

5.Вывод

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

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