АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Автомат с магазинной памятью

Читайте также:
  1. GIP-M. АВТОМАТИЗИРОВАННОЕ ПРОЕКТИРОВАНИЕ ДОРОГ
  2. III Механизация, Электрификация и автоматизация сельскохозяйственного производства
  3. А. Автоматическая блокировка – однопутный участок.
  4. Автоматизация документооборота
  5. Автоматизация документооборота компании
  6. Автоматизация звука в слогах и словах.
  7. Автоматизація виробництва
  8. Автоматизація процедури інвентаризації
  9. Автоматизація та комп'ютерно-інтегровані технології
  10. Автоматизированная информационная система для гостиниц «Отель- Симпл»
  11. Автоматизированная система управления гостиницей «Русский отель»

Распознавание КС-грамматик выполняется автоматом с магазинной памятью. Автомат с магазинной памятью определяется семеркой:

PM = (Q, S, Г, d, q 0, z 0, F),

где Q – конечное множество состояний автомата;

S – конечный входной алфавит;

Г – конечное множество магазинных символов;

d (q, ck, zj) – функция переходов;

q 0 Î Q – начальное состояние автомата;

z 0 Î Г – символ, находящийся в магазине в начальный момент,

F Í Q – множество заключительных (допускающих) состояний.

Пример. Синтаксический анализатор выражений.

Алфавит языка записи выражений: S = {<Ид>, +, –, *, /, (,), ◄, ►}. Грамматика описывается синтаксическими диаграммами, представленными на рисунке 8.

Рисунок 8 – Синтаксические диаграммы

Подставляем диаграммы одна в другую, исключая промежуточные нетерминалы Терм и Множитель. В результате получаем полную синтаксическую диаграмму (см. рисунок 9), которая состоит из двух частей: основной и рекурсивной, что связано с наличием рекурсивного вложения правил продукции.

Рисунок 9 – Синтаксическая диаграмма

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

Таблица 8 – Таблица переходов автомата

  <Ид> + - * / ( )
                   
  ¯ S =3         ¯ S =3      
                  К

 

  <Ид> + - * / ( )
X                  
              ­ S   ­ S
  ¯ S =6         ¯ S =6      
                   
                   
              ­ S   ­ S
  ¯ S =10         ¯ S =10      
                   
  ¯ S =Y         ¯ S =Y      
Y             ­ S   ­ S

Условные обозначения:

К – конец разбора, E – состояние ошибки (все пустые ячейки должны содержать E),

¯ Y = <состояние> – рекурсивный вызов распознавателя, справа указан номер состояния после возврата из данного вызова;

­ Y – возврат из рекурсии, следующее состояние определяется значением Y,

При разработке алгоритма используем следующие обозначения:

Mag – стек (магазин) распознающего автомата, элементы, записываемые в стек, – терминальные и нетерминальные символы; ¯ – запись в стек, ­ – чтение из стека;

q – текущее состояние;

Table (<Текущее состояние>, <Анализируемый символ>) – элемент таблицы (матрицы) переходов, состоящий из следующих полей: q – следующее состояние (в том числе «¯» – рекурсивный вызов, «­» – возврат из рекурсии), S – состояние после возврата из рекурсии, если необходим рекурсивный вызов, или Æ;

String – исходная строка;

Ind – номер символа исходной строки.

Алгоритм программы, реализующей автомат, будет выглядеть следующим образом:

q:=1

Ind:= 1

Mag:=Æ

Цикл-пока q ¹ «E» и q ¹ «К»

q:= Table [ q, String [ Ind ]]. q

Если q = ¢¯¢

то Mag ¯ Table [ q, String [ Ind ]]. S

q:= X

иначе Если q = ¢­¢

то Mag ­ q

иначе Ind:= Ind +1


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)