Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТА_конспект.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

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

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

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}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]