SU1334149A1 - Синтаксический анализатор - Google Patents
Синтаксический анализатор Download PDFInfo
- Publication number
- SU1334149A1 SU1334149A1 SU864007832A SU4007832A SU1334149A1 SU 1334149 A1 SU1334149 A1 SU 1334149A1 SU 864007832 A SU864007832 A SU 864007832A SU 4007832 A SU4007832 A SU 4007832A SU 1334149 A1 SU1334149 A1 SU 1334149A1
- Authority
- SU
- USSR - Soviet Union
- Prior art keywords
- decoder
- input
- code
- memory block
- terminal
- Prior art date
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Изобретение относитс к вычислительной технике и может быть использовано в автоматизированных системах обработки данных и производства программ дл ЭВМ в услови х с жесткими требовани ми к быстродействию и аппаратурным затратам. Цель изобретени - повышение быстродействи , сокращение аппаратурных затрат и расширение функциональных возможностей за счет обеспечени полного синтаксического анализа исходных вьфажений. Дл достижени указанной цели в устройство введены шифратор 4 основ, буферный регистр 8, накапливающий сумматор- вычитатель 9 и дешифратор 10 аксиомы. Реализаци блока пам ти на реверсивных сдвигающих регистрах, введение накапливающего сумматора-вычитател и дешифратора аксиомы приводит к сокращению аппаратурных затрат и существенному повьш1ению быстродействи синтаксического анализатора. Применение шифратора основ, дешифратора приоритетов в сочетании с дешифратором аксиомы и другими блоками синтаксического анализатора обеспечивает полный синтаксический анализ вводимого текста. з.п. ф-лы, 3 ил. с б (Л с
Description
13
Изобретение относитс к вычислительной технике и можегт быть исполь- эовано в автоматизиронанных системах обработки данных и производства программ дл ЭВМ.
Цель изобретени - повышение быстродействи , сокращение аппаратурных затрат и расширение функциональных возможностей за счет обеспечени полноге синтаксического анализа входных выражений.
Синтаксический анализатор экономи- ,чески целесообразно использовать в автоматизированных системах обрабо1жи данных с возможностью полного синтаксического анализа входных выражений в услови х с жесткими требовани ми к быстродействию и аппа)эатурным затра- там.
На фиг. 1 изобр.ажена структурна схема синтаксического анализатора; на фиг, 2 - структурна схема блока пам ти; на фиг. 3 - блок-схема микропрограммного управлени анализатором,
Синтаксический анализатор (фиг. 1 ) содержит входной регистр 1, дешифратор 2.лексических единиц, блок 3 управлени , вьтолненный, например, на программируемых логических матрицах, шифратор 4 основ, блок 5 пам ти, де- шифратор 6 кодов операции, дешифратор 7 приоритетов, буферный регистр 8, накапливающий сумматор-вычитатель 9 и дешифратор 10 аксиомы.
В состав блока 5 пам ти входит группа реверсивных регистров 11 сдвига .
Дл задани грамматики входного зыка разработан функционально полный набор видов основ, где терминальным .символом или терминалам будем называть символ однозначности, соответствующий символу входного зыка. Не- терминальньтй символ или нетерминал - это символ, эквивалентный одному или целой группе символов входного зыка
Входной регистр 1 используетс дл хранени очередной лексической единицы исходного выражени , дешифратор 2 лексических единиц раздел ет лексические единицы на операнды, операции , скобки.
Блок 3 управлени управл ет работой всех элементов устройства. Пример его функционировани дл операции + и х описан блок-схемой микропрограммного управлени (фиг. З), гд входные сигналы X, s -9 Формируе
492
дешифратор2 лексических единиц, Х. - дешифратор7 приоритетов; ХтХ.Х,р - дешифраторкодов операции; X,., - дешифратор аксиомы. На выходе блока 3 управлени фог)мируютс сигналы микроопераций YY ,...,Y и Y , а так-
у Y Y Y Y
1 2 S 6 14
, вл ющиес совокупност ми микроопераций . Содержательный смысл входных и выходных сигналов следующий:
1, если лексическа единица исходного выражени есть от- крыванада скобка;
же сигналы Y Y,
X.
0
15
5
о
Q
-
35
45
50
X
X,
Хе
X,
X.
X.
X,
0,в противном случае;
1,если лексическа единица исходного выражени есть операнд;
0,в противном случае,
1,если лексическа единица исходного выражени есть знак плюс;
О, В противном случае;
1 , если лек.си ческа . единица ис.ходного выражени есть знак умножить;
10, в противном случае;
Г 1, если лексическа единица
исходного выражени есть закрывающа скобка;
, в противном случае;
1, если приоритет терминала, занесенного в N-e разр ды блока 5 пам ти, больше приоритета терминала, наход щегос в () разр дах блока пам ти;
.0, в противном случае;
1, если терминал в (N-l) разр дах блока 5 пам ти, I есть код знака плюс;
10, в противном случае;
1, если терминал в (N-l) разр дах блока 5 пам ти есть код знака ум - ожить;
0,в противном случае;
1,если лексическа единица исходного вьфажени есть знак конца выражени
О, в противном случае;
X
10
11
1, если терминал в (N-i) разр дах блока 5 пам ти, есть код открывающей скобки;
0,в противном случае;
1,если в сумматоре содержитс код нетерминала F
О,- в противном случае.
YI YI . У. , У. , У., У-1; Y,
10
ь 1У1 УЗ У, У4 У«1 2
fyi У4 Y/ у,,; V; у fy« У,, J; Y, у, yj Уи ; Vg у,, ; УЭ у ; У,„
у,э ;Л
- г ; - ; з 1с
Jy9. Y, у, у, у. У
15
1; Y,,
у
t2
- запись кода терминала От- .крывающа скобка в буфер-, ный регистр 8; у - сложение кода терминала
(нетерминала) в накапливающем сумматоре-вычитателе 9, поступающего из буферного регистра 8; у - запись кода терминала От20
25
крывающа скобка в блок 5 пам ти;
- чтение следующей лексической единицы исходного выра- 30 женин из входного регистра 1 ;
б
-запись кода нетерминала F в буферный регистр 8;
-запись кода нетерминала основы FxF в буферный регистр 8;
-вычитание кода нетерминала основы из содержимого накапливающего сумматора-вы - читател 9;
-сдвиг на 2 разр да вправо (в CTqpoHy старших разр дов ) содержимого блока 5 пам ти;
-запись кода нетерминала основы
в буферный ре
гистр 8;
-запись кода нетерминала основы F+F в буферный регистр 8;
-сдвиг на 1 разр д .вправо содержимого блока 5 пам ти;
-выдача сообщени Ошибка ;
-сдвиг на I разр д влево содержимого блока 5 пам ти;
-запись кода терминала Знак плюс в буферный регистр 8;
10
15
0
5
0
5
0
5
0
5
у - запись кода терминала Знаь умножить в буферный регистр 8; у, - запись кода терминала Знак
плюс в блок(5 пам ти; у - запись кода терминала V3HaK
умножить в блок 5 пам ти; у - запись кода терминала - Закрывающа скобка в блок .5 пам ти;
у - запись кода терминала Конец исходного выражени (знак в блок 5 пам ти. Шифратор 4.основ формирует коды терминалов и нетерминалов.
Блок пам ти 5 - это пам ть с последовательным безадресным принципом записи и чтени . В состав блока пам ти (фиг. 2) входит группа реверсивных сдвигающих регистров I1. Запись информации производитс в старшие (N-e) разр ды регистров.
Реверсивные регистры 1I сдвига блока 5 пам ти поразр дно сдвигают коды терминалов и совместно с дешифратором 7 приоритетов осуществл ют сравнение приоритетов терминалов, а также совместно с дешифратором 6 кодов операций производ т выбор основы дл свертки исходного выражени .
Буферный 8 регистр используетс дл хранени кодов терминалов и нетерминалов .
Накапливающий сумматор-вычитатель 9 вьшолн ет либо -функцию сложени кодов терминалов и нетерминалов, либо функцию вычитани кодов нетерминала оснЬв.
Дешифратор 10 аксиомы выдел ет код нетерминала . F, определенньш в качестве начального нетерминала (или аксиомы ) и соответствующего успешному завершению синтаксического анализа.
Устройство работает следующим образом .
Лексические единицы исходного выражени последовательно поступают на входной реп стр 1, а затем на дешифратор 2 лексических единиц, который вьщел ет операнды, операции, скобки и конец выражени .
При поступлении лексической единицы , например, открывающей скобки (Xj О, X, 1) дешифратор 2 лексических единиц запускает блок 3 управлени , который вырабатывает совокупность микрооперации (У,). Управл ющие сигналы с блока 3 управлени по1 .334149
ступают на вход шифратора 4 основ и формируют код терминала, открывающей Ькобки, а затем разре1П ают запись кода терминала в буферный регистр 8 (микроопераци у. ) и сложение его с содержимым накапливающего сумматора- вычитател 9 (микроопераци у), а также осуществл ют сдвиг на 1 разр д влево содержимого блока 5 пам ти (микроопераци у ), запись в N-e разр ды блока 5 пам ти кода терминального символа и разрешает чтение следующей лексической единицы из выходного регистра 1 (микроопераци
у,)..
Если следующа лексическа единица есть операнд (Xj Os Х О, Xj l), то блок 3 управлени вьтол н ет совокупность микрооперации (У YJ): на шифраторе 4 основ формируетс код нетерминала F, производитс запись кода нетерминального символа F в буферный регистр 8 (микроопераци Ус) происходит сложение содер- жимого накапливающего сумматора-вы- читател 9 и кода, выполн етс сдвиг на 1 разр д влево содержимого блока
5 пам ти(микроопера1 ;н У.,) и вырабатываетс - разрешаюп1ий сигнал на чтение очередной лексической единицы из входного регистра 1, Если лексическа единица; не опе раци (Х О, Х/ о), то происходит формирование сигнала ( ) , сообщс1.ющего об ошибке
После записи кода терминала в старшие разр дь реверсивных регистров сдвига блока 5 пам ти, содержимое N-X и (N-l)-x разр дов поступает на дешифратор 7 приоритета,-который формирует логический сигнал отношени приоритетов текущего терминального символа и предшествующего. Если код терминала, занесенный в М-е разр ды реверсивных регистров сдвига блока 5 пам ти, имеет приоритет меньший или равный приорк тету кода терминала , занесенного в (N-l)-e разр ды .(Xj 0), то код терминала с (N-l)-x разр дов блока 5 пам ти поступает на вход дешифратора 6 кедов операции,, который формирует.сигнал, определ ющий вид основы дл свертки исходного вьфажени . Депшфратор б кодов операции запускает блок 3 управлени , ко- торый разрешает выполнение сигналов (Y,). Если в (N-)-X разр дах реверсивных сдвигающих регистров находитс , например, код терминала
5i
5
Знак плюс (Х О, Xj ), то в буферный регистр 8 записываетс код нетермингзла основы F+F (микроопераци у ), затем из содержимого накапливающего сумматора - вычитател 9 вычитаетс код нетерминала основы (микроопераци у ), а в буферный регистр 8 заноситс код нетерминала F (микроопераци У,)9 после чего производитс сложение кода нетерминала с содержимым накапливающего сум- матора-вычитател 9 (микроопераци у ) и осуществл етс сдвиг на 2 разр да вправо содержимого реверсивных сдвигающих регистров блока 5 пам ти . (микроопераци у), Сигнал с дешифратора 2 лексических единиц, соответствующий текун5ей .пексической единице,
0
0
0
5
0
например, знаку плюс
(Ху О, Хэ О,
Xj 1), инициирует блок 3 управлени , управл ющие сигналы которого разрешают сдвиг на 1 разр д влево содержимого реверсивньк сдвигающих регистров блока 5 пам ти и вьшолнение совокупностей микрооперации (Y, У).
Если код терминала, занесенный в N-e разр ды реверсивных сдвигающих регистров блока 5 ггам ти, имеет боль- П1ий приоритет., чем код терминала, содержащийс в (N-l)-x разр дах .X, 1 5 то дешифратор 7 приоритетов не разрешает прохождение на блок 3 управлени сигнгала с дешифратора 6 кодов операции Содержимое блока 5 пам ти (сдвигаемых) сдвигаетс на 1f- разр д вправо., код терминала выталкиваетс из N-X разр дов в реверсивных регистрах сдвига (микроопераци у ) , блок 5 пам ти подготавливаетс к .приему кода терминала (Yj): содержимое блока 5 пгш ти сдвигаетс влево на 1 разр д (микроопераци У j)« Текуща .лексическа единица с дешифратора 2 с помощью блока 3 управлени формирует код терминала, кот орый заноситс .в буферный регистр 8 и блок 5 пам ти, добавл етс к содержимому накапливающую сумматора-вычитател 9, а затем происходит переход к очередной лексической единице.
Ес.пи следующа лексическа единица есть закрывающа скобка (Хj О, Хф О, Xf i). То дешифратор 2 лексических единиц запускает блок 3 управлени , управл ющие сигналы которого разрешают формирование на шифраторе 4 основ кода тевминала Закры- в;1юща скобка и запись кода терми5
1
нала в блок 5 пам ти (микроопераци у ), откуда код терминала поступает также на вход дешифратора 7 приоритетов . Дешифратор 7 приоритетов разрешает (Xg о) прохождение сигнала с дешифратора 6 кодов операции, ко- торьй определ ет выбор вида основы. Если в (N-I)-X разр дах реверсивных регистров сдвига находитс , напри- мер, код терминала Открывающа скобка (Х О, Хд 0, Х 1), то дешифратор 6 кодов операции возбуждает блок 3 управлени , выходные сигналы ( 15 которого выполн ют запись нетерминала основы (р) в буферный регистр 8 (микроопераци у,), разрешает чтение очередной лексической единицы из выходного регистра 2 (микроопераци У) вычитание из содер- жимого нак.апливающего сумматора-вычи тател 9 кода нетерминала основы (микроопераци затем в буферный регистр 8 заноситс код нетерминала F (микроопераци у ), производитс сложение содержимого накапливающего сумматора-вьгчитател 9 с кодом нетерминала (микроопераци У2) и осуществл етс сдвиг на 2 разр да вправо содержимого реверсивных сдвигающих регистров блока 5 пам ти (микроопераци Уд). Если текуща лексическа единица есть закрывающа скобка X
, то дешифратор 2 лексических единиц запускает блок 3 управлени , который выполн ет (Yj) сдвиг на 1 разр д влево содержимого реверсивных сдвигающих регистров (микроопераци ), а затем на шифраторе 4 основ происходит формирование кода термина- ла Закрывающа скобка и запись (Yg) кода терминала в блок 5 пам ти (микроопераци Y j ). Далее работа устройства повтор етс .
Если очередна лексическа едини- ца есть конец выражени # (Xj 0., Х О, Xj О, Х5 1), то дешифратор 2 лексических единиц запускает блок 3, выходные сигналы которого разрешают шифратору 4 основ формиро- вани кода терминала Конец выражени и запись (Y,J,) кода терминала в старшие разр ды реверсивных регистров сдвига блока 5 (микроопераци у ). С.блока 5 пам ти коды терминалов из N-ro и (N-l)-ro разр дов реверсивных регистров сдвига поступают на дешифратор 7 приоритетов, с которого снимаетс сигнал (Х ( 0),
5 0 5 о
5
0
ц Q
5
49° .
разрешающий прием сигнала от. дешифратора 6 кодов операции, которь1Й анализирует код терминала, содержащийс в (N-I)-X разр дах реверсивных сдвигающих регистров, и формирует сигнал выбора вида основы. Если выбрана несуществующа основа (Х-, О Xg О У о) , то в блоке 3 управлени формируетс управл ющий сигнал вьща- чи ошибки (Y,J ). Если, например, выбрана основа FxF (Х, 1), то блок 3 управлени формирует выходные сигналы (Y , Y ), которые опреде,- л ют последовательность работы устройства . Далее дешифратор 2 лексичес- ких единиц анализирует текущую лексическую единицу - конец выражени i( (Xj О Xg l) - и запускает блок 3 управлени , который передает на вход дешифратора 10 аксиомы содержимое сумматора - вычитател 9. Если в накапливающем сумматоре-вычитателе 9 находитс код нетерминала F (х 1), то дешифратор 10 аксиомы возбуждает в блоке 3 управлени сигнал, по которому процесс синтаксического анализа завершаетс успещно. Если содержимое накапливающего сумматора-вы- читател 9 отлично от кода нетерминала F ( 0), то дешифратор 10 аксиомы возбужает бпок 3 управлени , управл ющие сигналы которого формируют сигнал ошибки (Y).
I. .
Пример 1. Пусть входное выражение имеет вид (А + (в + С)) «
Процесс синтаксического анализа производитс следующим образом.
На входной регистр 1 поступает .. лексическа единица С, котора дешифратором 2 лексических единиц определ етс как открывающа скобка
(Х, О, и производитс запуск блока 3 управлени , формирующего совокупность микроопераций, которые блокируют входной регистр 1, запускаетс шифратор 4 основ на формирование кода терминала Открывающа скобка, затем производитс запись кода терминала в буферный регистр 8, сложение кода терминала с содержимым накапли-- вающего сумматора-вычитател 9. В блоке 5 пам ти происходит сдвиг на один разр д влево содержимого ревер- сивносдвигающих регистров, в старшие разр ды которых записываетс код терминала , после чего разрешаетс -чтение с входного регистра 1 следующей
13
лексической единицы исходного выражени .
Лексическа единица А дешифриру етс дешифратором 2 как операид (Xj « 1) и выдаетс сигнал на запуск блока 3 управлени , который разрешает формирование на шифраторе 4 основ кода нетерминала F, заносит его в буферный регистр 8, суммирует содер- жимое накапливающего сумматора-вычи- тател 9 с кодом нетерминала, производит сдвиг на один разр д влево содержимого блока 5 цам ти и снимает блокировку с входного регистра 1, с которого поступает очередна лексическа единица +.
Дешифратор 2 лексических единиц распознает ее как операцию (Х 1) и возбуждает блок 3 управлени , ко- торый запускает шифратор 4 основ, формирующий код терминала Знак плюс записываемый в буферный регистр 8 и в N-6 разр ды реверсивных сдвигающих регистров блока 5 пам ти, проис- ходит сложение кода терминала с содержимым накапливающего сумматора- вычитател 9. Код терминала (+) Знак плюс с раэТр дов и код терминала Открывающа скобка с (N-1)разр дов реверсивные регистров сдвига поступает на дешифратор 7 приоритета . Так как приоритет терминала Знак плюс больше приоритета терминала Открывающа скобка (Х 1), то дешифратор 7 приоритетов блокирует запуск дешифратора 6 кодов операции блока 3 управлени , которы разрешает ввод и анализ следующей .лексической единицы (.
Лексическа единица, поступающа на дешифратор 2, определ етс как открывающа (точка) скобка С помощь блока 3 управлени ши фратор 4 основ формирует код терминала открывающей скобки, который заноситс в буферный регистр 8, складываетс с содержимым накапливающего сумматора-вычитател 9, а также производитс сдвиг на один разр д влево содержимого блока 5 пам ти и разрешаетс считывание следующей лексической единицы в из входного регистра 1,
В процессе дешифрировани дешифратор 2 лексических единиц определ ет .ее как операнд (Х 1) и запускает блок 3 управлени , выходные сигналы с которого разрешают шифратору 4 основ формирование кода нетерминала
910
F, запись его в буферный регистр 8, сложение кода с содержимым накапливающего сумматора-вычитател 9 и чтение очередной лексической единицы с входного регистра 1.
Поступивша на дешифратор 2 лексическа единица, +, есть операци (Х% l). Блок 3 управлени на шифраторе 4 основ формирует код терминаа Знак плюс и записывает его в старшие разр ды блока 5 пам ти, откуа код терминала поступает также на дешифратор 7 приоритета, на второй вход которого поступает из (N-l)-x разр дов блока 5 пам ти код терминала Открывающа скобка, Дешифратор 7 (Х 1) блокирует прием сигнала с дешифратора 6 кодов операции блоком 3 управлени . В блоке 5 пам ти производитс сдвиг на один разр д вправо содержимого реверсивных сдвигающих регистров, а затем сдвиг содержимого блока 5 пам ти влево на 1 разр д, Дешифратор 2 дешифрирует текущую лексическую единицу + (Xj 1) и запускает шифратор 4 основ, с которого код терминала (+) Знак плюс од- повременно заноситс в буферный ре- 8 и блок 5 пам ти, а затем . складываетс содержимым накапливающего сумматора-вычитотел 9. После зто- го происходит считывание очередной лексической единицы с входного регистра 1 ,
Лексическа единица С - операнд, который формирует на шифраторе 4 код нетерминала F . Код нетерминала записываетс в буферный регистр 8, и одновременно, сдвигаетс содержимое блока 5 пам ти влево на один разр д, затем код нетерминала суммируетс с содержимым накапливающего сумматора- вычитател 9.
Очередна лексическа единица )г поступает на дешифратор 2 и определ етс как закрывающа скобка, блокируетс входной регистр 1,. формируетс код терминала Закрывающа скобка, который записываетс в блок 5 пам ти и поступает на дешифратор 7 приоритетов , который по приоритетам кодов текущего (Закрывающа скобка) и предыдущего (Знак плюс) терминалов формирует сигнал (Х О), разрешаю- П5ИЙ выбор вида основы свертки. Дешифратор 6 кодов операции по коду предыдущего терминала определ ет вид основы -(Xg )„ Код нетерминала осиоII1
вы F+F заноситс в буферный регист 8 и вычитаетс из содержимого накапливающего сумматора-вычитател 9, а содержимое блока 5 пам ти сдвигаетс на 2 разр да вправо. Код нетерминала F заноситс в буферный регистр 8 и складываетс с содержимым накапливающего сумматора-вычитател 9. Дешифратор 2 определ ет текущую лексичес- кую единицу как закрывающую скобку. Блок 3 управлени формирует си гнал, который производит сдвиг влево на один разр д содержимого блока пам ти и запись кода терминала Закрывающа скобка в старшие разр ды реверсив- но сдвигающих регистров. Дешифратор 7 приоритетов разрешает выбор основы (F) (Х, 1), так как в (N-l)-x разр дах реверсивных регистрах сдвига содержитс код терминала Открывающа скобка. Код нетерминала основы записываетс в буферный:.-регистр 8 и -вычитаетс из содержимого накапливающего сумматора-вычитател 9, Одновре- менно сдвигаетс содержимое блока 5 пам ти на два разр да вправо и снимаетс блокировка с входного регистра 1 , с которого на дешифратор 2 поступает лексическа единица ). В буферный регистр 8 заноситс код нетерминала F и складываетс С содер- жимым накапливающего сумматора-вьгчи- тател 9.
Текуща лексическа единица ) определ етс дешифратором 2 как закрывающа скобка (Ху 1), происходит блокирование входного регистра I. Далее устройство работает по циклу, приведенному выше.
Текуща лексическа единица Х определ етс дешифратором 2 как операци (Х 1). Сформированный шиф- ратором 4 код терминала Знак умно- жить заноситс в блок 5 пам ти, запускаетс дешифратор 7 приоритетов, формирующий запрещающий си.гнал (х, 1). Код терминала заноситс в блок 5 пам ти, складываетс с содержимым накапливающего сумматора-вычитател 9 и осуществл етс переход к следующей лексической единице.
Очередна лексическа единица D - операнд, В накапливающем сум- маторе-вычитателе 9 добавл етс код нетерминала F, производитс сдвиг влево на один разр д содержимого блока 5 пам ти и выбираетс следующа
49
12
лексическа единица - конец выражени
Itji М
Дешифратор 2 выдел ет лексическую единицу и запускает шифратор 4 основ формирующий код терминала Конец выражени , который заноситс в блок 5 пам ти и запускает дешифратор 7 приоритетов . Последний разрешает выбор основы вида F+F (х, 1). Сначала код Нетерминала основы вычитаетс из содержимого накапливающего сумматора вычитател 9, а затем к содержимому добавл етс код нетерминала F, далее дешифратор 2 определ ет текущую лексическую единицу как конец выражени (х 3 1). Блок 3 управлени разрешает выдачу содержимого накапливающего сумматора-вычитател 9 на дешифратор 10 аксиомы. Так как в накапливающем сумматор -вычитателе 9 находитс код нетерминала F, то дешифратор 10 аксиомы запускает блок 3 управлени , который успешно завер - шает синтаксический анализ исходного выражени .
Пример 2. Пусть исходное выражение имеет вид ({А +. В) х С# , которое содержит ошибку - нет закрывающей скобки.
Лексическа единица ( поступает через входной регистр 1 на дешифратор 2 и определ етс как открывающа скобка. Запускаетс блок 3 управлени , который блокирует входной регистр 1, формирует на шифраторе 4 основ код терминала Открывающа скобка , который записываетс в буферный регистр 8, сдвигает содержимое блока 5 пам ти на один разр д влево. Код терминала заноситс в блок 5 пам ти, одновременно суммируетс с содержимым накапливающего сумматора-вычитател 9, затем снимаетс блокировка с входного регистра 1 и следующа логическа i единица ( поступает на дешифратор 2 лексических единиц, Лексическа единица ( есть открывающа , и цикл работы устройства повтор етс .
Очередна лексическа единица А дешифрируетс -как операнд. На шифраторе 4 формируетс код нетерминала F, :который поступает в буферный регистр 8, суммируетс с содержимым накапливающего сумыагорагвычитател 9, содержимое блока 5 пам ти сдвигаетс на один разр д и происходит переход к следующей лексической единиII .11
це - +. + - операци ,. формируетс код соответствующего термингша, который заноситс в блок 5 пам ти, откуда поступает на дешифратор 7 приори- тетов,- блокирующий приегм сигнала блоком 3 управлени с дешифратора 6 кодов операции. Код терминала записываетс в буферньй регистр 8 и складываетс с содержимым накапливающего сум- матора-вьгчитател 9, после выбираетс очередна лексическа единица В.
Дешифратор 2 определ ет ее как операнд . Содержимое накапливающего сум- матора-вычитател 9 увеличиваетс на значение кода нетерминала F , блок 5 пам ти подготавливаетс к приему очередного кода термингша.
Следующа лексическа единица ) дешифрируетс как закрывающа скобка Шифратор 4 формирует код терминала Закрывающа скобка, который записываетс в блок 5 пам ти и поступает на вход дешифратора 7, в который по при- оритетам текущего кода терминала и предьщутцего (Знак плюс) разрешает блоку 3 управлени выбор основы F-f . Код нетерминала основы вычитаетс из содержимого накапливающего сум
матора-вьгчитате11 9, а в блоке 5 пам ти содержимое сдвигаетс на два разр да вправо, содержимое сумматора складываетс с кодом терминала F. Дешифратор 2 определ ет, что текуща лексическа единица - закрывающа скобка. Код терминала Закрывающа скобка заноситс в блок 5 пам ти, запускаетс дешифратор 7 приоритета, который разрешает выбор основы (Р). Блок 3 управлени считывает очередную лексическую единицу ), одновременно из содержимого накапливающего сумматора-вычитател 9 вычитаетс код нетерминала основы, сбрасываетс содержимое 2 старших разр дов в блоке 5 пам ти, к содержимому накапливающего сумматора-вычитател 9 добавл етс код нетерминала F.
Текуща лексическа единица Х - операци . Код терминала Знак умножить записываетс в блок 5 пам ти, складываетс с содержимым накапливающего сумматора-вычитател , 9 и происходит переход к анализу следз ющей лек- сической единицы С.
с операнд, код нетерминала F суммируетс с содержимым накапливающего сумматора-вычитател 9, а
блок 5 пам ти сдвигает содержимое на 1 разр д влево.
Очередна лексическа единица - конец выражени #. Код терминала записываетс в блок 5 пам ти, поступает на дешифратор 7 приоритетов. Возбуждаетс блок 3 управлени и выбираетс основа FxF, код нетерминала , который вычитаетс из содержимого накапливающего суммато{)а-вычита- тел 9, сбрасываетс 2 старших разр да блока 5 пам ти,, а содержимое на капливающего сумматора-вычитател 9 увеличиваетс на код нетерминала F
Дешифратор 2 определ ет, что текуща лексическа единица - конец выражени и содержимое накапливающего сумматора-вычитател 9 по сигналу с блока 3 микропрограммного управлени поступает на дешифратор 10 аксиомы, который опредеш ет что содержимое сумматора отлично от кода нетерминала F и возбуждает в блоке 3 микропрограммного управлени сигнал ошибки,
Claims (2)
1. Синтаксический анализатор, со- держащий входной регистр, дешифратор лексических единиц, блок управлени , блок пам ти, дешифратор кодов операции и дешифратор приоритетов, причем информационньш вход входного регист- ра вл етс информационным входом анализатора, вьпкод входного регистра подключен к входу дешифратора лексических единиц., выход которого св зан с первым входом логических условий блока управлени , первый выход которого подключен к входу синхронизации входного регистра, а выходы первой груцпы блока отравлени соединены входами управлени группы блока пам ти , первьш выход которого соединен с входом дешифратора.кодов операции и с первым входом дешифратора приоритетов , а второй выход блока пам ти под.ключен к второму входу дешифратора приоритетов, причем выходы дешифратора кодов операции и дешифратора приоритетов подключен к второму и третьему входам логических условий блока управлени соответственно, отличающийс тем, что, с целью повьшгени быстродействи , сокращени аппаратурных затрат и расширени функциональных возможностей :эа счет обеспечени полного синтакси
513
ческого анализа входных выражений, в него введены шифратор основ, буферный регистр, накапливающий сумматор- вычитатель и дешифратор аксиомы, при- чем выходы второй группы блока управлени соединены с входами шифратора основ, выход которого подключен к информационным входам блока пам ти и буферного регистра, вход синхрониза- 1ДИИ которого соединен с вторым выходом блока управлени , а выход буферного регистра подключен к информационному входу накапливающего суммато- ра-вычитател , входы управлени кото- рого соединены с выходами третьей группы блока управлени , выход накапливающего сумматора-вычитател под-. клюмен к входу дешифратора аксиомы, выход которого соединен с четвертым входом логического услови блока управлени , третий и четвертый выходы
РкберсиКный
сддигаюций peiucmp
/I 2 I
1 г
1/1
916
которого вл ютс выходами npHSHa k oB Ошибка и Конец анализа устройства соответственно.
2. Устройство по п. 1, отличающеес тем, что блок пам ти содержит п: реверсивных сдвигающих регистров разр дности N, где п - число разр дов кода терминалов, N - максимальное число терминалов во входном выражении, причем группа выходов . (N-I) разр дов и группа выходов N разр дов реверсивных сдвигающих реги- стров- ,образуют первый и второй выходы блока соответственно, а входы управлени сдвигами информации на один разр д влево, на один разр д вправо и на два разр да вправо реверсивных сдвигающих регистров -соответственно объединены и образуют входы управлени группы блока.
am wuippamefia всно9 ,yj,yiS:yif,yil
Л
K- У
,Л -/, N
Уа
г .
п
1 I 2 I
ТТ f
к дешидзратору приоритета
дешисрратерап nogoS операций приоритета
Фиг. 2
lA -/ N
L-.
JL
СЗЕ
YtT XZL-ZJ
Составитель А. Ушаков Редактор Е, Копча Техред И.Попович Корректор М. Демчик
„,...J-- - - - -.---- - -« - -- --- -
Заказ 3964/ 6 Тираж 672 Подписное
ВНИИПИ Государственного комитета СССР
по делам изобретений и открытий 113035, Москва, Ж-35, Раушска наб., д. 4/5
Произ0одстненно-полиграфическое предпри тие, г„ Ужгород, ул. Проектна , 4
Фив,3
онец)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SU864007832A SU1334149A1 (ru) | 1986-01-15 | 1986-01-15 | Синтаксический анализатор |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SU864007832A SU1334149A1 (ru) | 1986-01-15 | 1986-01-15 | Синтаксический анализатор |
Publications (1)
Publication Number | Publication Date |
---|---|
SU1334149A1 true SU1334149A1 (ru) | 1987-08-30 |
Family
ID=21216445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SU864007832A SU1334149A1 (ru) | 1986-01-15 | 1986-01-15 | Синтаксический анализатор |
Country Status (1)
Country | Link |
---|---|
SU (1) | SU1334149A1 (ru) |
-
1986
- 1986-01-15 SU SU864007832A patent/SU1334149A1/ru active
Non-Patent Citations (1)
Title |
---|
Авторское свидетельство СССР 637818, кл. G 06 F 11/00, 1976. Авторское свидетельство СССР № 1130879, кл. G 06- р 15/38, 1982. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fu et al. | Coda: An end-to-end neural program decompiler | |
Fisher | Very long instruction word architectures and the ELI-512 | |
JPS6351287B2 (ru) | ||
US3200379A (en) | Digital computer | |
US4376977A (en) | Computer system with scannable program memory | |
SU1334149A1 (ru) | Синтаксический анализатор | |
US4566062A (en) | Timing control system in data processor | |
SU1399741A1 (ru) | Синтаксический анализатор | |
KR920008142B1 (ko) | 마이크로 프로그램 처리장치 | |
EP0180077B1 (en) | A data processing machine for compiling computer programs | |
SU1439591A1 (ru) | Синтаксический анализатор | |
SU1233155A1 (ru) | Микропрограммное устройство управлени с контролем | |
Morris et al. | A system program generator | |
Maliavko | Neutralization of Syntax Errors in the Compiler of the Functional-Imperative Language El | |
SU1465894A1 (ru) | Параллельный синтаксический анализатор | |
SU1034043A1 (ru) | Устройство дл лексического анализа метамикроассемблера | |
Scowen | A new technique for improving the quality of computer programs | |
SU1439594A1 (ru) | Синтаксический анализатор | |
SU1742832A1 (ru) | Устройство дл перевода арифметических выражений в линейные регул рные префиксные формы | |
RU2034329C1 (ru) | Устройство управления | |
US5490277A (en) | Digital computation integrated circuit | |
SU474806A1 (ru) | Устройство микропрограммного управлени при к-значном кодировании | |
SU583440A1 (ru) | Процессор | |
SU802963A1 (ru) | Микропрограммное устройство управле-Ни | |
JP2614934B2 (ja) | マイクロプログラム制御装置 |