Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка КР по ТЯП.doc
Скачиваний:
57
Добавлен:
16.05.2015
Размер:
431.1 Кб
Скачать

21

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Брянский государственный технический университет

Утверждаю

Ректор университета

__________А.В.Лагерев

__”________ 2004 г.

Теория языков программирования

И МЕТОДЫ ТРАНСЛЯЦИИ

СИНТЕЗ КОНЕЧНОГО РАСПОЗНАЮЩЕГО АВТОМАТА

Методические указания к выполнению курсовой работы

для студентов дневной формы обучения

специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»

Брянск 2004

УДК 004.42

Теория языков программирования и методы трансляции. Синтез конечного распознающего автомата: методические указания к выполнению курсовой работы для студентов дневной формы обучения специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем». - Брянск: БГТУ, 2004 г.- 20с.

Разработал:

А.Н. Горбунов

доц., канд. техн. наук

Рекомендовано кафедрой «Информатика и программное обеспечение» БГТУ (Протокол № 6 от 24.02.04)

1. Введение

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

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

  1. построить праволинейную грамматику;

  2. построить автоматную грамматику по праволинейной;

  3. построить недетерминированный конечный автомат;

  4. свести недетерминированный конечный автомат к детерминированному;

  5. минимизировать число состояний автомата;

  6. разработать программу, имитирующую работу автомата.

Порядок выполнения работы и результаты, которые должны быть получены при выполнении этапов работы, приведены в разд. 8.

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

Исходными данными для курсового проекта являются две таблицы — табл. 1 и табл. 2 и правила вывода R.

Табл. 1 состоит из трех строк, первая из которых содержит перечисление 18 символов Ci.

Во вторую строку Si записываются первые 18 символов фамилии, имени и отчества студента с обязательными пробелами между фамилией и именем, именем и отчеством.

В третью строку для каждой из 18 букв строки Si заносится символ из алфавита { x0, x1, x2, x3, x4, x5, x6, x7 } в соответствии с табл. 1.

Таблица 1

Ci

c1

c2

c3

c4

c5

c6

c7

c8

c9

c10

c11

c12

c13

c14

c15

c16

c17

c18

Si

И

В

А

Н

О

В

¬

А

Л

Е

К

С

Е

Й

¬

П

Е

Т

Xi

x3

x2

x1

x7

x4

x2

x5

x1

x0

x6

x7

x4

x6

x0

x5

x5

x6

x5

Табл. 2 построена на основе подсчета появлений каждой буквы русского алфавита в фамилиях, именах и отчествах. Затем буквы сформированы в восемь групп с таким расчетом, чтобы появление каждого из символов x0-x7 было равновероятным.

Таблица 2

А

Б

В

Г

Д

Е

Ж

3

И

Й

К

Л

М

Н

О

П

x1

x5

x2

x4

x6

x6

x4

x3

x3

х0

x7

х0

x3

x7

x4

x5

Р

С

Т

У

Ф

X

Ц

Ч

Ш

Щ

Ь

Ы

Э

Ю

Я

хо

x4

x5

x7

x2

x5

x1

x2

x2

хо

x6

x1

x1

x3

x7

x5

Грамматикой G [S] называется непустое множество правил вывода (продукционных правил), где S — начальный символ.

Правило вывода (продукция) представляет собой упорядоченную пару (R, х) и записывается в виде

R:: = х, где

R — левая часть правила (в данном случае символ);

х — непустая цепочка, образующая правую часть правила.

Грамматика задается на алфавите V, называемым словарем. Алфавит V - непустое множество элементов (символов). В свою очередь, цепочка х представляет некоторую последовательность символов алфавита V, возможно повторяющихся. Число входящих в цепочку символов называют длиной цепочки.

Словарь состоит из двух непересекающихся подмножеств:

Vn - словарь нетерминальных символов;

Vt - словарь терминальных символов.

Таким образом, формальная грамматика G есть четверка

G=(VN, Vt, S, R), причем S  Vn.

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

Для рассматриваемой в работе грамматики G=(Vn, Vt, S, R)

Vn={S,A,B,C,D,E,F};

Vt= {C1,C2, С3,..., C18};

R -- множество продукций (правил вывода):

S c1 c2 c3 A; S c1 c4 c5 B; S c6 С;

S с7 F; A c8D; A c9;

B c8 E; Bc9; Cc8 E; Cc9;

D c10 S; D c11; E c10 S; E с11

F c12 c13 c14 c15; F c16 c13 c14 c15; F с17 c18 c15.

Анализ продукций данной грамматики показывает, что все они праволинейны, следовательно, грамматика будет праволинейной.

Приведем грамматику к виду G'=(Vn, V't, S, R'), где

V't={ xo, x1,..., x7} — новый терминальный словарь;

R' — множество правил вывода, получаемых заменой символов из словаря Vt на символы из словаря Vт в соответствии с табл.1.

В рассматриваемом примере эти правила имеют вид

S х3x2x1 А| хзx7x4 B| x2С |x5 F;

А x1D| x0; В x1E| x0; C x1E| x0;

Dx6E| x7; Ex6S| x7;

F x4x6x0x5| x5x6xox5| x6x5x5,

здесь |- металингвистический символ «или».

Примерами цепочек, которые принадлежат языку L(G'), порождаемому грамматикой G', являются (x3 x2 x1 x0, x2 x1 x7, x5 x5 x6 x0 x5).

В то же время, цепочки x7 х3 х7 x4 х0, х3 x6 x5 x5 не принадлежат языку L(G'), так как их нельзя вывести в грамматике G' .

Языком L грамматики G(S) называется множество всех предложений L(Y), где Y — предложение.

Предложением называется состоящая из терминальных символов сентенциальная форма Y.

Сентенциальной формой называется цепочка Y , выводимая из начального символа S' , грамматики G(S'), что можно записать как

S=> * Y , где => * — рефлексивное транзитивное замыкание отношения простого вывода.

Грамматика G, порождаемая из грамматики G, является индивидуальным заданием студента.