Анализ кадра управляющей программы

 

Анализ кадра, написанного в контекстно-свободной грамматике, осуществляется с помощью автоматов с магазинной памятью – МП-автоматов.

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

Например:

В составлении правил контекстно-свободной грамматики есть только два ограничения:

• правая часть правила должна начинаться из терминала;

• для одинаковых нетерминалов в левой части разные правила должны иметь разные первые терминалы в правой части, например:

; .

МП-автомат задается тремя множествами, которые размещаются в памяти.

1. Множество входных символов Ti (терминалов входного языка), а также конечный маркер ⊣, что указывает на окончание цепочки терминалов, которые поступают со сканера.

2. Множество магазинных символов:

• нетерминалы, которые загружаются в память и потом выталкиваются из нее по правилам грамматики;

• терминалы из правил, которые стоят не на первом месте;

• маркер дна магазина

3. Множество управляющих воздействий, генерируемых МП-автоматом.

При работе МП-автомата выполняются стандартные процедуры:

1) операции, выполняемые над входом:

СДВИНУТЬ, т.е. перейти к анализу следующего терминала в цепочке;

ЗАДЕРЖАТЬ, т.е. текущий терминал задерживается для участия в следующем цикле работы;

2) операции над магазинной памятью:

ВЫТОЛКНУТЬ, т.е. из стековой памяти выталкивается верхний символ – терминал или нетерминал;

ЗАМЕНИТЬ – из магазина удаляется верхний символ и вместо него вводится другой символ или цепочка;

3) служебные операции:

ОТВЕРГНУТЬ – равносильна сигналу «Ошибка ввода» (все пустые места в управляющей таблице отвечают этой операции);

ДОПУСТИТЬ – МП-автомат работает как распознаватель соблюдения правил грамматики;

ВЫДАТЬ {zi} – автомат генерирует сигнал управления, если цепочка терминалов, которые поступили, позволяет выдачу соответствующего сигнала управления.

Работа автомата заканчивается тогда, когда проанализированы все терминалы, которые поступили на вход, и маркер дна магазина находится вверху (магазин пустой).