Устройство для преобразования выражений в польскую инверсную запись Советский патент 1987 года по МПК G06F17/27 G06F9/44 G06F17/17 

Описание патента на изобретение SU1290358A1

fO

15

20

25

Изобретение относится к вычислиельной технике и может быть испольовано в автоматизированных системах бработки данных и производства программ для электронных вычислительных машин (ЭВМ).

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

На фиг,1 представлена структурная схема устройстваз на фиг. 2 - структурная схема блока памяти, на фиг.З- структурная схема блока микропрограммного управления на фиг.4 - схема реверсивного регистра сдвига на фиг.5 - схема реверсивного регистра сдвига блока памяти/ на фиг.6 - блок- схема микропрограммного управления устройством.

, Устройство содержит регистр 1 , дешифратор 2 лексических единиц, блок 3 памяти, дешифратор 4, блок 5 микропрограммного управления, реверсивный регистр 6 сдвига, коммутатор 7, регистр Sijреверсивные регистры 9 сдвига, программируемая логическая матрица И 10, программируемая логическая матрица ИЛИ 11, узел 12 памяти, элемент ИЛИ 13, гене- 35 ратор 14 тактовых импульсов, триггер 15, элемент 16 задержки, элемент И 17, группу 18 триггеров, группу 1 9 элементов ИЛИ, группу 20 элементов И, группу 21 триггеров, груп- 40 пу 22 элементов ИЛИ, группу 23 элементов И, элемент НЕ 24, узел 25 записи разряда.

Регистр 1 используется для хране- 45 ния очередной лексической единицы исходного выражения, дешифратор 2 лексических единиц разделяет лексические единицы на операнды, операции, скобки.

Блок 3 памяти - это память с пос- 50 ледовательным безадресным принципом записи и чтения. Дешифратор 4 совместно с блоком памяти реализуют логическую функцию выработки и сравнения приоритетов.

5

30

55

Блок 5 микропрограммного управления организует взаимодействие всех элементов устройства и его функцио

.нирование описано блок-схемой микропрограммного управления (фиг.6), где входные сигналы X , х , х формирует дешифратор 4, сх noxg- дешифратор 2 лексических единиц, х,, х,(,, - блок 6 контроля, сигналы микро- команд с у по y,g формирует блок 5 микропрограммного управления. Содержательный смысл входных сигналов и микрокоманд следующий:

1, если ход операции, занесенный в старшие разряды регистров сдвига блока 3 памяти, имеет больший приоритет, чем код операции, занесенный в предшествующие старшим разряды регистров - в противном случае.

1.

г

}

если содержимое старших разрядов регистров сдвига блока 3 памяти равно значению кода Пустой символ О-в противном случае.

1, если содержимое старших разрядов регистров сдвига блока 3 памяти равно значению кода открывающей скобки

О - в противном случае

1

I О 1.

если очередная лексическая единица исходного выражения есть открывающая скобкаj

-в противном случае, если очередная лексическая единица исходного выражения есть операнд;

-в противном.случае.

1,

х

х.

если очередная лексическая единица исходного выражения есть операнду О-в противном случае.

если очередная лексическая единица исходного выражения есть закрьшающаяся скобка 0 - в противном случае.

1, если очередная лексическая единица исходного выражения есть конец выражения j j

О-в противном случае.

1, если содержимое третьего разряда реверсивного ре- гистра 6 сдвига есть едини- ца

О-в противном случае.

, если содержимое первого разряда реверсивного регистра 6 сдвига есть единица5

-в противном случае.

, если содержимое четвертого разряда реверсивного регистра 6 сдвига eqTb единица,

-в противном случае,

разблокировать/ заблокировать регистр 1,

записать содержимое регистра 1 в N-e (старшие) разряды регистров сдвига блока памяти;

30

35

сдвинуть влево содержимое регистров сдвига блока памяти переключить коммутатор 7 на запись из регистра 1j установить начальные значения 20 регистра 6 (значение кода 0100) и регистров сдвига блока 3 памяти (значение кода О в (N-1) разрядах), выдать сигнал ошибки Отсут- ствует закрывающая скобка , переключить коммутатор 7 на запись из (N-1) разрядов регистров сдвига блока 3 памяти J. сдвинуть вправо на один разряд содержимое сдвига блока 3 памяти-,

переключить коммутатор 7 на запись из N разрядов регистров сдвига блока 3 памяти, выдать сигнал ошибки Отсутствует открывающая скобка, выдать сигнал ошибки Лексическая единица не принадлежит алфавиту лексических единиц }

выдать сигнал ошибки Число операндов равно числу операций. Пропущен операнд J сдвинуть вправо на один разряд содержимое регистра 6,- сдвинуть влево на один разряд содержимое регистра 6;

вьщать сигнал ошибки Число 50 операций больше числа операндов. Пропущен операнд ; вьщать сигнал ошибки Число операндов превьшгает число операций больше чем на единицу. 55 Пропущена операция.

Регистр 6 проверяет наличие и по- ядок следования лексических единиц

У4 У. у, у

у.

У,о У..

45,

5

0

5

0

0 5

0

5,

в исходном выражении и совместно с блоком микропрограммного управления осуществляет классификацию ошибок, Коммутатор 7 управляет передачами лексических единиц, а регистр 8 предназначен для хранения очередной лексической единицы в форме польской инверсной записи. Реверсивные регистры сдвига блока 3 памяти поразрядно сдвигают код операций и совместно с дешифратором 4 осуществляют сравнение приоритетов. Программируемая логическая матрица И 10 совместно с программируемой логической матрицей ИЛИ 11 и узлом 12 памяти органи- 3iTOT работу блока микропрограммного управления. Элемент ИЛИ 13 вырабаты- вает сигнал Останов устройства. Генератор 14 тактовых импульсов совместно с триггером 15 и элементом И 17 организуют сигналы запуска устройства. Элемент 16 задержки предназначен для начальной установки узла памяти блока перед пуском устройства.

Группа 18 триггеров блока контроля образует четыре разряда реверсивного сдвигающего регистра, каждый из которых соответствует определенному клас- ру ошибок блока контроля. Группы 19 элементов ИЛИ совместно с группами элементов И организуют входные цепи реверсивного сдвигающего регистра таким образом, что начальная установка соответствует установке второго триггера (фиг,4) в единичное состояние, а остальных в нулевое.

Группа 21 триггеров реверсивного регистра сдвига блока памяти образует разряды реверсивного сдвигающего регистра. Группа 22 элементов ШТИ совместно с группой 23 элементов И и элементом НЕ 24 организуют входные цепи .реверсивного сдвигающего регистра блока памяти таким образом, что начальная установка соответствует установке разряда, предшествующего -старшему (фиг,5), в О. При этом элемент НЕ и связанные с ним элементы И образуют узел 25 записи разряда регистра 1, предназначенный для организации информационного входа реверсив- ;ного регистра сдвига блока памяти.

Устройство работает следующим об- разом.

Лексические единицы исходного выражения- последовательно поступают на

регистр 1, а затем на дешифратор 2 и на старший разряд блока 3 памяти, причем дешифратор разделяет их на опранды, операции, скобки рткрьшающие, скобки закрывающие и конец выраже- ния ;.

Если очередная лексическая единиц есть операнд, то дешифратор 2 запускет блок 5 микропрограммного управления, управляющие сигналы которого (микрокоманды у, у. ) переключают коммутатор 7 на запись лексической единицы из регистра 1 в регистр 8, а также осуществляют сдвиг вправо на один разряд содержимого регистра 6. Если содержимое четвертого разряда регистра 6 есть ноль, что означает отсутствие ошибки Число операндов превьш1ает число операций больше, чем на единицу, происходит переход к анализу следующей лексической единиц Если же содержимое четвертого разряда регистра 6 есть единица, что соответствует наличию ошибки Число операндов превышает число операций больше, чем на единицу. Пропущена операция, блок 5 микропрограммного управления вырабатьшает микрокоманды блокировки регистра 1 (у.) и вьщачи сигнала ошибки (y,g) Число операндо превьппает число операций больше, чем на единицу. Пропущена операция, заи

регистра 1 в старшие разряды регистров сдвига блока 3 памяти, сдвигают влево на один разряд содержимое регистра 6 сдвига, блокируют регистр 1. Если содержимое первого разряда регистра 6 сдвига равно единице, блок 5 микропрограммного управления вырабатывает сигнал ошибки Число операций больше числа операндов. Пропущен операнд, формируется Останов, и процесс перевода прекращается. Если содержимое первого разряда регистра 6 сдвига равно нулю, дешифратор 4, на который поступает содержимое старших и предшествующих старшим разрядов регистров сдвига блока 3 памяти, формирует логический сигнал отношения приоритетов текущей и предшест- 20 вующей операций. Если код операции, занесенный в старшие разряды регистров сдвига блока 3 памяти, имеет больший приоритет, чем код операции, занесенной в разряды, предшествующие старшим, дешифратор 4 запускает блок 5 микропрограммного управления, управляющий, сигнал которого сдвигает влево на один разряд содержимое ре-, гистров сдвига блока 3 памяти, затем разблокируется регистр 1, и происходит п€феход к1 анализу следующей лексической единицы. Если код операции, занесенньй в старшие разряды регистров сдвига блока 3 памяти,

тем формируется Останов, и процесс перевода прекращается.

Если очередная лексическая единица 35 меньше или равен коду операции, за - есть открывакицая скобка, дешифратор 2 несенной в предшествующие старшим

разряды регистров сдвига блока 3 памяти, дешифратор 4 запускает блок 5 микропрограммного управления, управ- ляющий сигнал которого (микрокоманда у) переключает коммутатор 7 на запись содержимого из предшествующих старшим разрядов регистров сдвига блока 3 памяти в регистр 8. Затем блок 5 мик- 45 ропрограммно го управления сдвигает на один разряд вправо (микрокоманды Уд) содержиз юе регистров сдвига блока 3 памяти. Процедура разрешения переключения коммутатора 7 на запись содер- блокирующий регистр 1, происходит пе- 50 жимого : федшествующих старшим разря- реход к анализу следующей лексической Дов регистров сдвига блока 3 памяти единицы.S регистр 8 и разрешения сдвига впра. ,во содержимого регистров сдвига блоЕсли очередная лексическая единица ка 3 памяти выполняется до тех пор, есть операция, дешифратор 2 лексичес- 55 пока в предшествующих старшим разря- ких единиц запускает блок 5 микропрограммного управления, управляющие сигналы которого (микрокоманды у,

лексических единиц запускает блок 5 микропрограммного управления, управляющие сигналы которого (микрокоманды У, , У, ) записьюают открывающую скобку из регистра 1 в старшие раз-- ряды регистров сдвига блока 3 памяти и блокируют регистр 1. Затем блок 5 микропрограммного управления вырабатывает управляющий сигнал (микрокоманду Уд), сдвигающий влево, содержимое регистров сдвига блока 3 памяти, а вслед за этим вырабатывается управляющий сигнал (микрокоманда у, ), разн

у, ) записывают лексическую едидах регистров сдвига блока 3 памяти

не будет находиться код операции с приоритетом меньшим, чем приоритет

текущей операции.

10

5

03586

ницу (в данном случае операцию) из

регистра 1 в старшие разряды регистров сдвига блока 3 памяти, сдвигают влево на один разряд содержимое регистра 6 сдвига, блокируют регистр 1. Если содержимое первого разряда регистра 6 сдвига равно единице, блок 5 микропрограммного управления вырабатывает сигнал ошибки Число операций больше числа операндов. Пропущен операнд, формируется Останов, и процесс перевода прекращается. Если содержимое первого разряда регистра 6 сдвига равно нулю, дешифратор 4, на который поступает содержимое старших и предшествующих старшим разрядов регистров сдвига блока 3 памяти, формирует логический сигнал отношения приоритетов текущей и предшест- 20 вующей операций. Если код операции, занесенный в старшие разряды регистров сдвига блока 3 памяти, имеет больший приоритет, чем код операции, занесенной в разряды, предшествующие старшим, дешифратор 4 запускает блок 5 микропрограммного управления, управляющий, сигнал которого сдвигает влево на один разряд содержимое ре-, гистров сдвига блока 3 памяти, затем разблокируется регистр 1, и происходит п€феход к1 анализу следующей лексической единицы. Если код операции, занесенньй в старшие разряды регистров сдвига блока 3 памяти,

30

ка 3 памяти выполняется до тех пор, пока в предшествующих старшим разря-

дах регистров сдвига блока 3 памяти

не будет находиться код операции с приоритетом меньшим, чем приоритет

текущей операции.

Если очередная лексическая единиц есть закрывающая скобка, дешифратор запускает блок 5 микропрограммного управления, управляющие сигналы которого (микрокоманды уд, у,) сдвигают вправо на один разряд содержимое регистров сдвига блока 3 памяти и блокируют регистр 1. Значение содержимого старших разрядов регистров сдвигов блока 3 памяти.поступает на дешифратор 4. Если содержимое старших разрядов регистров сдвига блока 3 памяти есть код открывающей скобки, то дешифратор 4 запускает блок 5 микропрограммного управления, управляющий сигнал которого (микрокоманды у.) сдвигает вправо содержимое регистров сдвига блока 3 памяти, происходит разблокирование регистра 1 и переход к анализу следующей лексической единицы, т.е. закрывающая и первая из встретившихся открывающих скобок в регистр 8 не попадают. Если содержимое старших разрядов регистров сдвига блока 3 памяти не является кодом открывающей скобки, дешифратор 4 запускает блок микропрограммного управления, управляющий сигнал которого (микрокоманда Уд) переключает коммутатор 7 на запись содержимого старших разрядов регистров сдвига блока 3 памяти в регистр 8, сдвигает на один разряд вправо содержимое регистров сдвига блока 3 памяти. Дешифратор 4 определяет значение кода старших разрядов регистров сдвига блока 3 памяти. Если это значение есть код пустого символа, чТо означает отсутствие в исходном выражении символа открываю-, щей скобки, дешифратор 4 запускает блок 5 микропрограммного управления, управляющий сигнал которого (микрокоманда ) формирует сигнал ошибки Отсутствует открывающая скобка, формирует Останов и процесс, перевода прекращается. Если значение кода старших разрядов регистров сдвига блока 3 памяти не является кодом пустого символа, дешифратор 4 определяет значение кода старших разрядов регистров сдвига блока 3 памяти, и процесс анализа на наличие в блоке памяти -открывающей скобки продолжается до тех пор, пока не будет найдена открывающая скобка (что соответствует правильности исходного выражения), или обнаружен код пустого символа (что соответствует ошибке).

O

5

Если очередная лексическая единица есть символ Конец вьфажения, то дешифратор 2 запускает блок 5, управляющий сигнал которого (микрокоман- - да у,) блокирует регистр 1. Дешифратор 4 определяет значение кода стар- ших разрядов сдвига блока 3 памяти. Если значение кода старших разрядов

регистров сдвига блока 3 памяти есть код пустого символа, блок 5 анализирует значение содержимого третьего разряда регистра 6 сдвига. Если это значение равно единице, то блок 5 переключает коммутатор 7 на запись содержимого регистра 1 в регистр 8 (микрокоманда у). Процесс перевода нормально завершен. Устройство готово к переводу следующего выражения. Если значение третьего разряда регистра

0 6 сдвига равно нулю, то регистр 6 запускает блок 5 микропрограммного уп-. равления, формирует сигнал у ошибки Число операндов равно числу операций. Отсутствует операнд, выраба-

5 тьшается Останов, и процесс перевода прекращается. Если значение кода старших разрядов регистров сдвига блока 3 памяти отлично от кода пустого символа, дешифратор 4 запускает блок 5

0 микропрограммного управления, который анализирует значение выходного сигнала дешифратора 4. Если в старших разрядах регистров сдвига блока 3 памяти находится лексическая единица

(скобка открьшающая), то блок 5 микропрограммного управления вырабатывает сигнал у ошибки Отсутствует закрывающая скобка и осуществляет останов работы устройства. Если ошибка отсутствует, то дешифратор 4 запускает блок 5, управлякнций сигнал которого

0

(микрокоманда у„) переключает коммутатор 7 на запись из старших разряцоз регистров сдвига блока 3 памяти в ре5 гйстр 8, и происходит сдвиг вправо на один разряд содержимого регистров сдвига блока 3 памяти. Затем дешифратор 4 определяет значение кода старших разрядов.регистров сдвига блока 3

0 памяти и запускает блок 5; Процесс повторяется до тех пор, пока не будет обнаружен код пустого символа или не будет обнар5 ен код открывающей скобки (что свидетельствует о наличии f

5 ошибки в исходном выражении) в старших разрядах регистров сдвига блока 3 памяти, определяемых дешифратором 4.

Если очередная лексическая единица не является ни операндом, ни oneрацией, ни открывающей скобкой, ни закрьшающей скобкой, ни символом конца вьфажения, то дешифратор 2 запускает блок 5 микропрограммного управления, который формирует сигнал ошиб- 5 ряд содержимого регистров сдвига

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

ки Лексическая единица не принадлежит алфавиту лексических единиц, блокируется регистр 1, вырабатьгаается Останов, и процесс перевода прекращается.

. П р им е.р 1. Пусть входное выражение имеет вид АхВ+С/ (D-E)J где ; используется как лексическая единица Конец выражения.

блока 3.памяти. После этого регистр разблокируется.

Следующая лексическая единица В записьшается в регистр 1 и дешифруе 0 ся как операнд С помощью блока 5 коммутатор 7 подключается на запись из регистра 1, и лексическая единица в переписьюается из регистра 1 в регистр 8, происходит сдвиг вправ

Процесс перевода исходного выраже- 15 на один разряд содержимого регистра 6 (на регистре образуется код 0010). Производится переход к след щей лексической единице, . Очередная лексическая единица 20 записывается в регистр 1 и определ ется дешифратором 2 как операция,

блокируется регистр 1, осуществляе сдвиг на один разряд влево содержи мого регистра 6, т.е. на указанном

ния в польскую инверсную запись заключается в следующем. Производится начальная установка значений регистра 6 и блока 3 памяти, т,е, в регистр 6 заносится код 0100, в разряды, предшествунмцие старшим разрядам регистров сдвига блока 3 памяти, заносится значение кода пустого символа. На регистр 1 поступает лексическая единица А, которая определяет- 25;регистре образуется код 0100, Так ся дешифратором 2 как операнд, и с помощью блока 5 микропрограммного управления производится подключение входа коммутатора 7 на запись лексической единицы А из регистра 1 в регистр 8, а также сдвиг вправо на один разряд содержимого регистра 6 (на регистре образуется код 0010), Блок 5 микропрограммного управления анализирует значение четвертого разряда регистра 6, Так как оно равно нулю, производится переход к следующей лексической единице.

как значение первого разряда регис ра 6 сдвига равно нулю, дешифратор формирует значение X|g О,

Из регистра 1 код + записьтае

30 в старшие разряды регистров сдвига блока 3 памяти. Значение кода +, занесенное- в старшие разряды регис ров сдвига блока 3 памяти, и значе кода х, занесенного в предшеству

ij щие старшим разряды регистров сдви блока 3 памяти, поступают на дешиф ратор 4, которьй формирует значени выходного сигнала х О, так как приоритет предьщущей операции боль

На регистр 1 поступает следующая лексическая единица х, которая фиксируется дешифратором 2 как знак операции. Производится блокировка регистра 1, Из регистра 1 код х записывается в старшие разряды регистров сдвига блока 3 памяти. Осуществляется сдвиг влево на один разряд содержимого регистра 6, т.е. на указанном регистре образуется код 0100. При этом дешифратор 4 формирует значение отсутствия ошибки, так как значение первого разряда регистра 6 равно нулю. Значение кода х, занесенное в старшие разряды регистров сдвига блока 3 памяти, и значение кода пустого символа, которое находится в предшествующих старшим разрядах регистров сдвига блока 3 памяти, поступают на дешифратор 4,

ряд содержимого регистров сдвига

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

Следующая лексическая единица В записьшается в регистр 1 и дешифрует- ся как операнд С помощью блока 5 коммутатор 7 подключается на запись из регистра 1, и лексическая единица в переписьюается из регистра 1 в регистр 8, происходит сдвиг вправо

на один разряд содержимого регистра 6 (на регистре образуется код 0010). Производится переход к следующей лексической единице, . Очередная лексическая единица + 20 записывается в регистр 1 и определяется дешифратором 2 как операция,

блокируется регистр 1, осуществляется сдвиг на один разряд влево содержимого регистра 6, т.е. на указанном

25;регистре образуется код 0100, Так

егистре образуется код 0100, Так

как значение первого разряда регист-. ра 6 сдвига равно нулю, дешифратор 4 формирует значение X|g О,

Из регистра 1 код + записьтается

в старшие разряды регистров сдвига блока 3 памяти. Значение кода +, занесенное- в старшие разряды регистров сдвига блока 3 памяти, и значение кода х, занесенного в предшествующие старшим разряды регистров сдвига блока 3 памяти, поступают на дешифратор 4, которьй формирует значение выходного сигнала х О, так как приоритет предьщущей операции больше,

чем последующей. С помощью блока 5 коммутатор 7 переключается на запись из предшествующих старшим разрядов регистров сдвига блока 3 памяти и производится запись содержимого этих

разрядов в регистр 8 (в данном случае лексической единицы х). Затем осуществляется сдвиг на один разряд вправо содержимого регистров сдвига блока 3 памяти и осуществляется запись в старшие разряды регистров сдвига блока 3 памяти лексической единицы + с регистра 1. Значения старших и предшествующих старшим разрядов сдвига блока 3 памяти поступают на

дешифратор 4, который формирует выходной сигнал х, 1, так как приоритет операции +, код которой хранится в старших разрядах, больше приоритета пустого символа, хранимого в

11

предшествующих старшим разрядах регистров блока 3 памяти. С помощью блока 5 производится сдвиг влево на один разряд содержимого регистров

На регистр 1 принимается очередная

лексическая единица -, которая определяется дешифратором 2 как операция. Производится блокировка регистсдвига блока 3 памяти. После этого ре-з ра 1 . Код - из регистра 1 записыtt/-iii

гистр 1 разблокируется.

Следующая лексическая единица.С записывается в регистр 1, определяется дешифратором 2 как операнд, и с

вается в старшие разряды регистров , сдвига блока 3 памяти. Осуществляется сдвиг влево на,один разряд содержимого регистра 6 (на регистре обрапомощью блока 5 производится переклю- tO зуется код 0100). При этом дешифрачение входа коммутатора 7 на запись операнда С в регистр 8, а также сдвиг вправо на один разряд содержимого регистра 6 (на регистре образуеттор 4 формирует сигнаш отсутствия опшбки, а дешифратор 2, на который поступают значения старших разрядов (код -) и предшествующих старшим

ся код 0010). Так как значение четвер- 5 разрядов (код С) регистров сдвига того разряда регистра 6 равно нулю, блока 3 памяти, формирует выходной блок 5 переходит к управлению работой сигнал х, 1, по которому с помощью устройства к анализу следующей лексической единицы.

Очередная лексическая единица / 20 сдвига блока 3 памяти. После этого определяется дешифратором; 2 как опера- регистр 1 разблокируется, ция. Производится блокировка регистра 1 . Из регистра 1 с помощью блока 5 / записьгоается в старшие разряблока 5 производится сдвиг влево на один разряд содержимого регистров

Очередная лексическая единица Е принимается на регистр 1. Она является операндом. На регистре 6 обра- 25 зуется код 0010, и код Е записьша- ется в регистр 8.

На регистр 1 принимается следующая лексическая единица ). Дешифратором 2 она определяется как скобкод

ды регистров сдвига блока 3 памяти. Осуществляется сдвиг влево на один разряд содержимого регистра 6 .(на регистре образуется код 0100). При этом дешифратор 4 формирует сигнал .отсут- .

ствия ошибки. Значение кода /, за- 30 ка закрывающая. С помощью блока 5 несенного в старшие разряды регистров осуществляется сдвиг на один разряд сдвига блока 3 памяти, и значение кода +, занесенное ранее и находящееся в предшествующих старшим разрядах регистров сдвига блока 3 памяти, пос- 35 ™ выходного сигнала х,, О, .так как тупают на дешифратор 4, который фор- .старших разр.чдах регистров сдвига мирует значение выходного сигнала X, 1, по которому с помощью блока 5 производится сдвиг влево на один разряд содержимого регистров сдвига бло- 40 .а 5 осуществляется переключение

коммутатора

вправо содержимого регистров сдвига

блока 3 памяти и блокируется ре-. гистр 1. Дешифратор формирует значе-

блока 3 памяти находится код лексической единицы - (т.е. код, отличный от открывающей скобки). С помощью

ка 3 памяти, после чего регистр 1 разблокируется.

Очередная логическая единица С записывается в регистр 1 и определяется дешифратором 2 как скобка от-, крывающая. С помощью блока 5 блокируется регистр 1, и значение кода С переписьшается из регистра 1 в старшие разряды регистров сдвига блока 3 памяти. После этого осуществляется сдвиг влево на один разряд содержи- мого регистров сдвига блока 3 памяти, регистр 1 разблокируется..

Очередная лексическая единица D . принимается на регистр 1. Она является операндом. На регистре 6 образуется код 0010, и код D записывается в регистр 8.

7 на запись из старших разрядов сдвига блока 3 памяти, и код лексической единицы г переписывается в регистр 8. Затем осуществляется

45 сдвиг вправо на один разряд содержимого регистров сдвига блока 3 памяти. Дешифратор 4 формирует значение выходного сигнала х О, так как зна- : чения старших разрядов регистров

5Q сдвига блока 3 памяти не равны значению кода Пустой символ, что означает наличие в блоке 3 памяти кодов операций и скобок, т.е. необходимость дальнейшего перевода с целью обнару,J2 жения окружающей скобки в блоке 3 памяти. Сигнал с выходом дешифратора 4 запускает блок 5 микропрограммного управления, которьй анализирует значение выходного сигнала и, так как

ло1290358 .12

На регистр 1 принимается очередная

лексическая единица -, которая определяется дешифратором 2 как операция. Производится блокировка регист

вается в старшие разряды регистров , сдвига блока 3 памяти. Осуществляется сдвиг влево на,один разряд содержимого регистра 6 (на регистре обраразрядов (код С) регистров сдвига блока 3 памяти, формирует выходной сигнал х, 1, по которому с помощью

блока 5 производится сдвиг влево на один разряд содержимого регистров

сдвига блока 3 памяти. После этого регистр 1 разблокируется,

Очередная лексическая единица Е принимается на регистр 1. Она является операндом. На регистре 6 обра- зуется код 0010, и код Е записьша- ется в регистр 8.

На регистр 1 принимается следующая лексическая единица ). Дешифратором 2 она определяется как скобка закрывающая. С помощью блока 5 осуществляется сдвиг на один разряд ™ выходного сигнала х,, О, .так как .старших разр.чдах регистров сдвига .а 5 осуществляется переключение

вправо содержимого регистров сдвига

блока 3 памяти и блокируется ре-. гистр 1. Дешифратор формирует значе-

ка закрывающая. С помощью блока 5 осуществляется сдвиг на один разряд ™ выходного сигнала х,, О, .так как .старших разр.чдах регистров сдвига а 5 осуществляется переключение

блока 3 памяти находится код лексической единицы - (т.е. код, отличный от открывающей скобки). С помощью

30 ка закрывающая. С помощью блока 5 осуществляется сдвиг на один разряд 35 ™ выходного сигнала х,, О, .так как .старших разр.чдах регистров сдвига 40 .а 5 осуществляется переключение

коммутатора

7 на запись из старших разрядов сдвига блока 3 памяти, и код лексической единицы г переписывается в регистр 8. Затем осуществляется

45 сдвиг вправо на один разряд содержимого регистров сдвига блока 3 памяти Дешифратор 4 формирует значение выходного сигнала х О, так как зна- чения старших разрядов регистров

5Q сдвига блока 3 памяти не равны значению кода Пустой символ, что означает наличие в блоке 3 памяти кодов операций и скобок, т.е. необходимость дальнейшего перевода с целью обнару,J2 жения окружающей скобки в блоке 3 памяти. Сигнал с выходом дешифратора 4 запускает блок 5 микропрограммного управления, которьй анализирует значение выходного сигнала и, так как

131290358

- 1 (в старших разрядах регистров сдвига блока 3 памяти находится код открывающей скобки), блок 5 разрешает сДвиг вправо на один разряд содержимого регистров сдвига блока памяти. При этом значение кода открывающей скобки, находившееся до сдвига в старших разрядах регистров сдвига блока 3 памяти, после сдвига теряется и в регистр 8 не попадает. Разблокируется регистр 1.

10

ни ин

ра де ще

ни в ле ля в ед де ва сд ос ги вл

Очередная лексическая единица ; записывается на регистр 1 и дешифри- руется как код конца выражения, Де- 5 шифратор 2 запускает блок 5, которьй блокирует регистр 1, Дешифратор 4 формирует значение выходного сигнала х„ О , так как значение старших разПроцесс перевода входного выр ния и обнаружения ошибки заключае в следзпощем. На регистр 1 поступа лексическая единица А, которая ляется операндом и переписывается в регистр 8, Очередная лексическа единица + поступает на регистр дешифрируется как операция и запи вается в старшие разряды регистро сдвига блока 3 памяти, после чего осуществляется сдвиг содержимого гистров блока 3 памяти на один ра влево, так как значение выходного

рядов регистров сдвига блока 3 памяти 20 сигнала х дешифратора 4 равно 1, не равно коду nycToiro символа, а равно коду операции /, и значение выходного сигнала Хз О, так как значение старших разрядов регистров сдвига блока 3 памяти не равно значению кода открывающей скобки, и запускает блок 5, которьй переключает коммутатор 7 на запись со старших разрядов регистров сдвига блока 3 памяти (лексическая единица / переписывается - в регистр 8), а затем разрешает сдвиг вправо на один разряд содержимого регистров сдвига блока 3 памяти, и в старшие разряды регистра сдвига блоРазблокируется регистр 1.

На регистр 1 поступает лексиче единица В, которая является опе дом и переписогоается в регистр 8,

Очередная лексическая единица поступает на регистр 1, дешифриру как скобка закрывающая. Блокирует регистр 1, и осуществляется сдвиг вправо на один разряд соде ржимого гистров сдвига блока 3 памяти. Де ратор 4 формирует выходной сигнал Xj О, так как в старших разрядах регистров сдвига блока 3 памяти н находится код открывающей скобки

ка 3 памяти попадает лексическая еди- 35 (там находится код лексической едини- ница +, Так как дешифратор 4 форми- цы +) и запускает блок 5, которьй рует значения выходных сигналов х О, Xj О, аналогичным образом лекси- :ческая единица + переписьгоается в

разрешает запись кода + из старших

разрядсй сдвига блока 3 памяти через коммутатор 7 в регистр 8, а затем разрешает сдвиг вправо на один разряд содержикюго регистров сдвига блока 3 памяти. В старших разрядах регистров сдвига блока 3 памяти образуется код пустого символа. Дешифратор 4 формирегистр 8, и после сдвига в старших. 40 разрядах регистров сдвига блока памя- ,ти образуется код пустого символа, в этом случае дешифратор 4 формирует значение выходного сигнала х 1 и

запускает блок 5, который анализирует 45 рует выходной сигнал х Г, так как значение третьего разряда регистра 6, значение старших разрядов регистров

сдвига блока 3 памяти равно коду пустого символа и запускает блок 5, который формирует сигнал ошибки Отсутразрядсй сдвига блока 3 памяти через коммутатор 7 в регистр 8, а затем разрешает сдвиг вправо на один разряд содержикюго регистров сдвига блока 3 памяти. В старших разрядах регистров сдвига блока 3 памяти образуется код пустого символа. Дешифратор 4 формиа, так как значение последнего равно единице (отсутствие ошибки), блок 5 разрешает переключение коммутатора 7

на запись лексической единицы ; из 50 ствует открывающая скобка и формирурегист1)а 1 в регистр 8, Устройство закончило перевод выражения и готово к приему следующего выражения.

ет останов работы устройства.

Пример 3. Пусть входное выражение :имеет вид АВ + ; , т.е. содержит ошибку - подряд идущие операнТаким образом, на регистр 1 посту- 55 ды с пропущенным знаком операции между ними.

пило выражение А х В + С / (D - Е); а через регистр 8 на выход устройства выражение поступило в виде АВ х CDE- / +

Полученньй порядок следоваПроцесс обнаружения ошибки заключается в следующем. Первая лексичес

ния си1 1волов соответствует польской инверсной записи входного выражения.

Пример 2„ Пусть входное выражение имеет вид А + В/ ; , т.е. содержит ошибку - отсутствие открьгоаю- щей скобки.

Процесс перевода входного выражения и обнаружения ошибки заключается в следзпощем. На регистр 1 поступает лексическая единица А, которая является операндом и переписывается в регистр 8, Очередная лексическая единица + поступает на регистр 1, дешифрируется как операция и записывается в старшие разряды регистров сдвига блока 3 памяти, после чего осуществляется сдвиг содержимого регистров блока 3 памяти на один разряд влево, так как значение выходного

сигнала х дешифратора 4 равно 1,

Разблокируется регистр 1.

На регистр 1 поступает лексическая единица В, которая является операндом и переписогоается в регистр 8,

Очередная лексическая единица ) поступает на регистр 1, дешифрируется как скобка закрывающая. Блокируется регистр 1, и осуществляется сдвиг вправо на один разряд соде ржимого регистров сдвига блока 3 памяти. Дешифратор 4 формирует выходной сигнал Xj О, так как в старших разрядах регистров сдвига блока 3 памяти не находится код открывающей скобки

(там находится код лексической едини- цы +) и запускает блок 5, которьй

разрешает запись кода + из старших

(там находится код лексической едини- цы +) и запускает блок 5, которьй

рует выходной сигнал х Г, так как значение старших разрядов регистров

разрядсй сдвига блока 3 памяти через коммутатор 7 в регистр 8, а затем разрешает сдвиг вправо на один разряд содержикюго регистров сдвига блока 3 памяти. В старших разрядах регистров сдвига блока 3 памяти образуется код пустого символа. Дешифратор 4 формиПроцесс обнаружения ошибки заключается в следующем. Первая лексическая единица А поступает на регистр 1. Дешифрируется как операнд. Дешифратор 2 запускает блок 5, который записывает лексическую единицу . А регистра 1 в регистр 8 через ком- мутатор 7 и разрешает сдвиг вправо на один разряд содержимого-регистра 6 где после сдвига образуется код 0010 (при начальной установке был код 0100). Блок 5 анализирует значение старшего разряда регистра 6 и, так как это значение равно нулю, производит переход к следующей лексической единице.

Очередная лексическая единица В поступает на регистр 1. Она является операндом, с помощью блока 5 В пере письгоается в регистр 8, осуществляется сдвиг вправо на один разряд содержимого регистра 6, где образуется код 0001. Блок 5 микропрограммного управления анализирует значение старшего разряда регистра 6 и, так как оно равно единице, выдает сигнал у.

ошибки Число операндов превьш1ает число операций больше чем на единицу.

Пропущена операция

блокирует реществляется сдвиг вправо на один раз ряд содержимого регистров сдвига бло ка 3 памяти (значение кода ( теряется) и производится переход к следующей лексической единице исходного выражения.

Очередная лексическая единица ;

гистр 1 и формирует останов работы

устройства.

Пример 4. Пусть входное выра-30 дешифрируется как конец выражения.

жение имеет вид А + ХВ, т.е. содержит Дешифратор 2 запускает блок 5, который блокирует регистр 1. Так как в старших разрядах регистров сдвига

ошибку - пропущен операнд.

Процесс перевода и обнаружения ошибки заключается в следующем. Перблока 3 памяти находится код лексивая лексическая единица А есть.one- 35 ческой единицы ( (вторая из скобок ранд. Она переписывается,в регистр 8, на регистре 6 формируется код 0010.

Следующая лексическая единица + есть операция. Она записывается в

потеряна, так как была встречена закрывающая скобка, а первая из открывающих скобок присутствует в блоке 3 памяти), дешифратор 4 формирует значение выходного сигнала Xg О и запускает блок 5, который анализирует значение выходного сигнала, формируемого дешифратором 4, а так .как х 1, блок 5 формирует сигнал у

блок 3 памяти, на регистре 6 форми- 40 руется код 0100. Очередная лексическая единица х есть операция. Она

потеряна, так как была встречена закрывающая скобка, а первая из открывающих скобок присутствует в бло ке 3 памяти), дешифратор 4 формирует значение выходного сигнала Xg О и запускает блок 5, который анализирует значение выходного сигнала, формируемого дешифратором 4, а так .как х 1, блок 5 формирует сигнал

записывается в блок 3 па.мяти, блокируется регистр 1, и после сдвига влево на один разряд содержимого регист- 45 ошибки Отсутствует закрывающая ра 6 на нем образуется код 1000. скобка и формирует останов работы Блок 5 анализирует значение первого

устройства.

разряда регистра 6 и, так как оно равустройства.

но единице,вьщает сигнал у, ошибки Пропущенный операнд будет обнару- Число операций больше числа операн- 50 после исправления ошибки, связанной с отсутствием закрывающей скобки, при повторном переводе вырадов. Пропущен операнд. и формирует останов работы устройства.

Пример 5. Пусть исходное выражение имеет вид ((А +) ; , т.е. 55 пропущена закрьшающая скобка и операнд. Лексические единицы (, ( заносятся в регистры сдвига блока 3 па- Мяти

Лексическая единица А переписывается в регистр 8. Лексическая единица + записывается в регистры сдвига блока 3 памяти, осуществляетс сдвиг на один разряд вправо содержимого регистров сдвига блока 3 памяти Очередная лексическая единица дешифрируется как скобка закрывающая. С помощью блока 5 блокируется регистр 1 .и осуществляется сдвиг вправо на один разряд содержимого регистров сдвига блока 3 памяти, в результате чего в старших разрядах регистров сдвига блока 3 памяти образуется лексическая единица +, которая записывается в регистр 8, и осуществляется сдвиг на один разряд вправо содержимого.регистров сдвига блока 3 памяти, так как в старших разрядах ре.гистров сдвига блока 3 памяти образуется код лексической

единицы (,

и так как х 1, осу

ществляется сдвиг вправо на один разряд содержимого регистров сдвига бло- ка 3 памяти (значение кода ( теряется) и производится переход к следующей лексической единице исходного выражения.

Очередная лексическая единица ;

ешифрируется как конец выражения.

блока 3 памяти находится код лексической единицы ( (вторая из скобок

потеряна, так как была встречена закрывающая скобка, а первая из открывающих скобок присутствует в блоке 3 памяти), дешифратор 4 формирует значение выходного сигнала Xg О и запускает блок 5, который анализирует значение выходного сигнала, формируемого дешифратором 4, а так .как х 1, блок 5 формирует сигнал у

ошибки Отсутствует закрывающая скобка и формирует останов работы

ошибки Отсу скобка и фо

устройства.

женин в польскую инверсную запись. Формула изобретения

1. Устройство для преобразования выражений в польскую инверсную запись, содержащее дешифратор, первый регистр.

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

ра подключен к входу второго регистр

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

2. Устройство по п,1, отличающееся тем, что блок памяти содержит реверсивные регистры сдвига, входы сдвига влево, сдвига вправо, записи и установочные входы которых являются соответственно входами сдвига влево, сдвига вправо, записи и установочным входом блока, входы старших разрядов регистров сдвига соединены

с информационным входом блока, выходы старших разрядов регистров сдвига и выходы разрядов, предшествующих старшим являются соответственно выходом старшего разряда и информационным

Фиг2

/7ycff

XfXf.

4 О

Xw

У1 Ув а,,г Уа Уа

J4 15

Гб

13

12

Н

JO

//

Похожие патенты SU1290358A1

название год авторы номер документа
Синтаксический анализатор 1987
  • Водопьянов Виталий Константинович
  • Зайцев Сергей Павлович
  • Волков Виталий Николаевич
  • Назарьян Георгий Вартанович
  • Орлов Юрий Алексеевич
SU1439591A1
Устройство для перевода выражений в польскую инверсную запись 1988
  • Водопьянов Виталий Константинович
  • Одриковский Николай Иосифович
  • Зубко Владимир Алексеевич
  • Назарьян Георгий Вартанович
  • Зайцев Сергей Павлович
  • Волков Виталий Николаевич
SU1571616A1
Синтаксический анализатор 1986
  • Волков Виталий Николаевич
  • Вавилов Сергей Николаевич
  • Водопьянов Виталий Константинович
  • Цымбал Валерий Николаевич
SU1399741A1
Синтаксический анализатор 1986
  • Вавилов Сергей Николаевич
  • Водопьянов Виталий Константинович
  • Цымбал Валерий Николаевич
SU1334149A1
Параллельный синтаксический анализатор 1987
  • Водопьянов Виталий Константинович
  • Орлов Юрий Алексеевич
  • Вавилов Сергей Николаевич
  • Волков Виталий Николаевич
  • Зайцев Сергей Павлович
SU1465894A1
Устройство для синтаксического контроля 1986
  • Водопьянов Виталий Константинович
  • Орлов Юрий Алексеевич
  • Цымбал Валерий Николаевич
  • Завьялов Валерий Николаевич
  • Назарьян Георгий Вартанович
SU1396146A1
Устройство для перевода арифметических выражений в линейные регулярные префиксные формы 1988
  • Водопьянов Виталий Константинович
  • Назарьян Георгий Вартанович
  • Домрачев Александр Анатольевич
  • Зайцев Сергей Павлович
SU1742832A1
Синтаксический анализатор 1987
  • Водопьянов Виталий Константинович
  • Волков Виталий Николаевич
  • Зайцев Сергей Павлович
  • Назарьян Георгий Вартанович
  • Орлов Юрий Алексеевич
SU1439594A1
Устройство для синтаксического контроля 1986
  • Водопьянов Виталий Константинович
  • Завьялов Валерий Николаевич
  • Зайцев Сергей Павлович
  • Цымбал Валерий Николаевич
  • Вавилов Сергей Николаевич
SU1392563A1
Устройство для перевода выражений в польскую инверсную запись 1982
  • Брякалов Геннадий Алексеевич
  • Булгаков Александр Александрович
  • Захаров Анатолий Иванович
  • Калмыков Николай Андреевич
  • Ковалев Виктор Васильевич
SU1130879A1

Иллюстрации к изобретению SU 1 290 358 A1

Реферат патента 1987 года Устройство для преобразования выражений в польскую инверсную запись

Изобретение относится к вычислительной технике. Целью изобретения является повьппение достоверности работы за счет обеспечения контроля парности открывающей и закрывающей скобок, принадлежности символов / входного выражения множеству лексических единиц баланса операторов и операций, обеспечения классификации ошибок и повьппения быстродействия. .Устройство содержит регистр 1, депгаф- ратор 2 лексических единиц, блок 3 памяти, дешифратор 4, блок 5 микропрограммного управления, реверсивный регистр 6 сдвига, коммутатор 7, рет- гистр 8. 6 ил. нтт W со ел 00 gjuf.t

Формула изобретения SU 1 290 358 A1

Xs

fpus:

(A g/yf4)

ipueo

Произв.-полигр. пр-тие, г. Ужгород,

фигб ВНИИПИ Заказ 7905/49 Тираж 673

Документы, цитированные в отчете о поиске Патент 1987 года SU1290358A1

Устройство для перевода выражений в польскую инверсную запись 1980
  • Захаров Анатолий Иванович
  • Брякалов Геннадий Алексеевич
  • Ковалев Виктор Васильевич
  • Калмыков Николай Андреевич
SU890403A1
Приспособление для точного наложения листов бумаги при снятии оттисков 1922
  • Асафов Н.И.
SU6A1
Устройство для перевода выражений в польскую инверсную запись 1982
  • Брякалов Геннадий Алексеевич
  • Булгаков Александр Александрович
  • Захаров Анатолий Иванович
  • Калмыков Николай Андреевич
  • Ковалев Виктор Васильевич
SU1130879A1
Приспособление для точного наложения листов бумаги при снятии оттисков 1922
  • Асафов Н.И.
SU6A1

SU 1 290 358 A1

Авторы

Водопьянов Виталий Константинович

Завьялов Валерий Николаевич

Цымбал Валерий Николаевич

Даты

1987-02-15Публикация

1985-08-30Подача