Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по теории автоматов.doc
Скачиваний:
109
Добавлен:
01.05.2014
Размер:
3.35 Mб
Скачать

Грамматика для выполнения арифметических операций.

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

Vт ={I , X , + , ( , )}

Vn ={ E }

E

R = {Ei+E;EI;Ei*E;E{E}}

E=>i+E=>i+E=>i+(E)=>i+(i*E)=>i+(i*i)

Набор данных правил не обеспечивает скобки для первых операндов.

Vт ={I , X , + , ( , )}

Vn ={ E }

E

R= {EE+E;EE*E;E(E);Ei}

E=>E+E=>E+E*E=>i+i*I (1244)

E=>E*E=>E*i=>E+E*i=>i+i*i(24144)

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

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

R = (E9E+E);EE*E,Ei)

E => (E+E) => (E+(E*E)) => (i+(i*i))

E => (E*E) => ((E+E)*E) => ((i+i)*i)

Грамматика получилась неоднозначной, однако каждая операция оказалась в своей скобке.

Приоритетность операции умножить по отношению к операции сложить обеспечивается благодаря скобкам.

Vт = {I, * , + , ( , )}

Vn={E,T,P}

E– арифметическое выражение

Т – слагаемое (или терм)

Р – произведение или сам множитель

R={ET,EPPP*P,P(T)*P,PP*(T)*P,PP*P,PI,TT+P,TP+T,TP+T,TT+T,Ti}

Нужно получить : i + i * i

8,8 i+P*P

5 i+P

12 T+P

9 T

3 E

E=>T=>T + P => либоT+(T)*P=>T+(T)*I либо i+P=>i+(I)*P=>i+(T+T)*P либо i+(T+T)*i=>i+(i+i)*I либо T+(T+T)*i=>i+(i+i)*i

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

Соответствие конечных автоматов и автоматных грамматик.

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

Множество допустимых цепочек автомата называется языком, который допустим данным автоматом.

Утверждение:

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

Этапы для заданной автоматной грамматики.

  1. Этап

Преобразование автоматной грамматики.

Ac

AcZ (AZc) Z – конец

  1. К грамамтики добавляется нетерминальный символ Z, который называется конечным.

  2. Правила вида Ac, гдеA- нетерминальный символ, аc– терминал, заменяют на правилаAcZилиAZcв зависимости от того левосторонняя или правосторонняя грамматика.

  3. Вводят дополнительное правило ZE, гдеEпустой символ, который относят кнетерминальным.

  1. Этап

Построение графа автомата и разметка.

    1. Ставим в соответствие каждому нетерминальному символу вершину графа, который помечается этим символом.

Для каждого правила AcB,AB– нетерминал,c– терминальный символ ставится в соответствие дуга между вершинамиAиB, которые помечаются символомc

Этапы для заданной автоматной грамматики.

  1. Начальному символу грамматики сопоставляется начальное состояние автомата

  2. Алфавиту нетерминальных символов – алфавит состояний.

  3. Алфавиту терминальных символов – алфавит входных слов.

  4. Операции Zeсоответствует конечная вершина автомата.

  5. Правилам грамматики соответствует функции перехода автомата.

Пример построения:

Vт = {с,d}

Vn={I}

I

R= {Ic;IIc;IId}

T=>Ic=>Id=>Iddc=>cddc

Цепочка росла справа налево , так как грамматика левосторонняя.

Построим автомат:

Vn={I, Z}

R = {IZc , IIc , IId , Ze }

S = {I , Z}

Z- конечная вершина

Автомат является недетерминальным так как из Iпод воздействием с у нас два перехода. ИзIZ;IIподаем ранее получаемую цепочку на вход автомата, начиная с крайне правила символа.

c

d

d

c

I

I

I

I

Z

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

A=<P , S , s0 , φ>

Vт :Pставим в соответствие алфавиту терминальных символов входного алфавита

Vn:Sалфавит нетерминальных символов – алфавит состояний.

I: s0

Получаем правила из функции возбуждения.

Следовательно si  sj

Vт = {0,1}

Vn={I,A,B}

I

R = {I0I;I1I;A0A;A1B;B0B;B1}

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