SU1334149A1 - Синтаксический анализатор - Google Patents

Синтаксический анализатор Download PDF

Info

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
Application number
SU864007832A
Other languages
English (en)
Inventor
Сергей Николаевич Вавилов
Виталий Константинович Водопьянов
Валерий Николаевич Цымбал
Original Assignee
Предприятие П/Я Р-6668
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Предприятие П/Я Р-6668 filed Critical Предприятие П/Я Р-6668
Priority to SU864007832A priority Critical patent/SU1334149A1/ru
Application granted granted Critical
Publication of SU1334149A1 publication Critical patent/SU1334149A1/ru

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
онец)
SU864007832A 1986-01-15 1986-01-15 Синтаксический анализатор SU1334149A1 (ru)

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)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
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) マイクロプログラム制御装置