Синтаксический анализатор Советский патент 1988 года по МПК G06F17/27 

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

ИН1. Sx. Вход упраЬле- J,

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

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

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

Реферат патента 1988 года Синтаксический анализатор

Изобретение относится к вычислительной технике и может быть использовано в автоматизированньпс системах .обработки данных и производства программ ЭВМ. Цель изобретения - повьппе- ние достоверности синтаксического контроля при одновременном повышении быстродействия и сокращении аппаратурных затрат. Для достижения указанной цели в устройство дополнительно введены дешифратор 6 и шифратор 4. Введение указанных элементов и порождаемых ими связей в сочетании с реализацией блока 5 памяти на реверсивных сдвигающих регистрах, а также с усовершенствованными алгоритмами 1|)ункдионирования блока 3 микропрограммного управления позволяет реализовать указанные преимущества и осуществить полный синтаксический анализ входных выражений. 3 ил., 2 табл. а € Л

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

Ошибка Успешный

aHQjjus

ОО

СО

О1

со

спешный

aHQjjus

Фиг.

114

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

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

На фиг, 1 представлена структурная схема синтаксического анализатора; на фиг„ 2 структурная схема блока памятиJ на фиг, 3 блок-схема микропрограммного управления синтаксическим анализатором.

Синтаксический анализатор (фиг„ 1) содержит входной регистр 1, дешифра™ тор 2 лексических единиц, блок 3 микропрограммного управления, выполненный , например 5 на программируемых логических матрицах,- шифратор 4, блок 5 памяти, дешифратор 6,

В состав блока 5 входят два реверсивных регистра 7 сдвига о

Входной регистр 1,-дешифратор 2 лексических единиц, шифратор 4 и дешифратор 6 могут быть реализованы известным способом па серийно вып ус- кавмой элементной базе.

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

Блок 3 микропрограммного управле

ния (1У1Ш ) управляет работой всех элементов анализатора. Алгоритм его функционирования описан блок-схемой микропрограммного управления (фиг, З где входные сигналы Х1-Х5 формирует дешифратор 2 лексических единиц (сигналы Х2-Х5) образуют группу выходов дешифратора 2 лексических еди- ницд сигнал Х1 подается на выход дешифратора) 5 а Х6-Х8 формирует дешифратор 6, причем на выход дешифратор б подается сигнал Х8, а сигналы Х6 и Х7 - на группу выходов. На выходе блока 3 управления формируются сигналы микроопераций Y1-Y11, а также сигналы микрокоманд YIZ-YIS, являюцщеся совокупностями микроопераций „ Содержательный сг-люл входньк и выходных сигналов следующий: .

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

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

0

5

О

5

0

ХЗ

Х4

Х5

Хб

Х7

Х8

1, если лексическая единица

исходного выражения есть

операнд;

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

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

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

1, если в трех последних разрядах регистров блока памяти находится код основы F X О в противном случае;

1, если в трех последних , разрядах регистров блока памяти находится - код основы (F); - О в противном случае;

1, если в последнем разряде регистров блока памяти находится код нетерминала F, а два предыдущих раз- )яда нулевые; О в противном случае;

31А3959

де Y - сброс в ноль регистров 7 блока 5 памяти;

у - ввод следующей лексической единицы во входной регистр 1;

у - сдвиг на 1 разряд влево

(в сторону младших разрядов)

содержимого регистров 7

блока 6 памяти; Q

у. - сдвиг на 2 разряда вправо

(в сторону старших разрядов) содержимого регистров 7 блока 5 памяти;

у - выработка кода терминала 15 открывающая скобка ;

у - выработка кода нетерминала

y-j выработка кода нетерминала

Операция,20

у - выработка кода терминала Закрывающая скобка ;

Уд выработка сообщения Ошибка ;

- выработка сообщения Успеш- 25 ный анализ ;

У(( разрешение записи в блок 5 памяти,

Блок 3 МПУ может быть реализован

на программируемых логических матрицах.

Шифратор 4 формирует коды терминалов Открывающая скобка/ , Закрывающая скобка и нетерминалов Операция, Г -операнд.

Блок 5 памяти предназначен для хранения, записи и считывания кодов терминалов и нетерминалов, поступающих на информационный вход блока. Блок 5 памяти представляет собой память с безадресным принципом записи и чтения и может быть выполнен на двух реверсивных сдвигающих регист- pax 7. Запись терминалов и нетерминалов производится в старшие N-e разряды регистров 7 (фиг. 2). Выходы последних трех разрядов регистров 7 образуют группу выходов, связанную с группой входов дешифратора 6. Реверсивные регистры 7 блока 5 памяти поразрядно сдвигают коды терминалов и нетерминалов, причем сдвиг вправо на два разряда равносилен затиранию последних двух записанных цодов.

Дешифратор 6 вырабатывает входные сигналы Х6-Х8 по анализу информации находящейся в трех старших разрядах 1Ьегистров 7 блока 5 памяти.

Q

5

0

5

0

0

5

5

0

5

Fla выход дешифратора 6 подается сигнал Х8, который анализируется блоком 3 МЛУ во время поступления знака конца выражения . Сигнал в том случае, когда в старших разрядах регистров 7 блока 5 памяти находится код нетерминала F, а два предыдущие разряда нулевые, что свидетельствует об успешном анализе входного выражения, С группы выходов дешифратора 6 на вторую группу входов блока 3 МПУ поступают сигналы Хб и - Х7 S которые равны единице в том случае, если в последних трех разрядах регистров 7 блока 5 памяти находится код основы F -JS- F или iF) соответственно. Единичное значение любого из этих сигналов свидетельствует о возможности произвести свертку исходного выражения, т.е. как основ F4F или (F) заменить на код

нетерминала F.

I

Анализатор работает следукнцим образом.

На первом гсаге блок 3 МГО вырабатывает микрооперацию Y1 - сброс в ноль содержимого регистров 7 блока 5 памяти.

Затем блок 3 МПУ вырабатывает микрооперацию Y2 - ввод лексической единицы во входной регистр 1. Лексическая единица поступает на дешифратор 2 лексических единиц и дешифруется дешифратором. Если на вход поступил знак конца выражения , то дешифратор 2 лексических единиц вырабатывает сигнал (), который запускает блок 3 МПУ от дешифратора 6. Если Х8 1, т.е. в старшем разряде регистров 7 блока 5 памяти находится код нетерминала F, а два предыдущие разряда нулевые, то блок 3 МПУ вырабатывает микрооперацию Y10 - Успешный анализ и алгоритм заканчивает свою работу. В . противном случае (если Х8 0) блок 3 МШ вырабатывает микрооперацию Y9 - Ошибка и алгоритм заканчивает свою работу.

Если же входная лексическая единица есть не знак конца выражения , то дешифратор 2 лексических единиц вырабатывает сигнал XI 0, который запускает блок 3 МПУ на выработку микрооперации сдвига влево на 1 разряд содержимого регистров 7 блока 5 памяти (микрооперация Y3) и на анализ входного сигнала Х2.

5U395916

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

:ка,, то блок 3 МПУ вырабатывает последовательность микроопераций выработки кода открывающей скобки шифратором 4 и записи этого кода в блок 5 памяти (сигнал Y12), Затем блок 3 ГШУ про,изводит анализ возможности свертки исходного выражения.

Блок 3 Miiy анализирует входной сигнал Хб, поступающий от дешифратора 6 на 2 гр.вх.блока 3 МПУ. Если Х6 1, Тов. в трех последних разрядах регистров 7 блока 5 памяти находится код основы , то блок 3 ШУ вырабатывает последовательность мик-; рокоманд Y4 . и Y13,, в результате выполнения которых происходит сдвиг

содержимого регистров 7 блока 5 памяг- 20 дешифрирует текущую лексическую едити на два разряда вправо, выраоотка : кода нетерш нала F шифратором 4 и запись этого кода в блок 5 памяти. Затем опять проверяется возможность свернуть исходное выражение, т,е, .блок 3 ЫШ проверяет входной сигнал Х6, Если Х6 О, то а нализируется входной сигнал Х7. В случаеj если Х7 I, т„е. в трех последних разрядах регистров 7 блока 5 памяти находится код основы F, блок 3 МПУ вырабатывает описанную последователь- ность микрокоманд (4, Y13), проводится свертка исходного выраже- ния (код основы (F) заменяется ко- ; дом нетерминала F), К опять про- I веряется. возможность свернуть исход- : Ное выражение и проводится свертка до тех nopj пока входные сигналы.

3 ШУ. Если есть знак

ницу и запускает олок лексическая единица не конца выражения (), блок 3 МПУ вырабатывает микрооперацию сдвига

25 1 разряд влево содержимого регистр 7 блока 5 памяти. Если лексическая единица есть закрывающая скобка - ()5 то блок 3 МПУ вырабатывает микрокоманду 15, т.е, происходит

30 работка кода терм лкала Закрызаюша скобка шифратором 4 и запись этог кода в блок 5 памяти. После чего происходит отра.ботка алгоритма све ки и ввода следующей лексической е

„.- ницы исходного вырал ения. 5

Лексическая единица дешифруется

дешифратором 2 лексических единиц запускает блок 3 ЮТУ. Если эта лек ческая единица не есть знак конца

Х6 и Х7 не примут нулевые значения, 40 выражения (Х1 0), то блок 3 МБ

После этого бхюк 3 МПУ -вырабатывает микрооперацию ввода следующей лексической единицы исходного выражения во входной регистр 1 (Y2)

Если лексическая единица не .есть знак конца, выражения (Х1 0), то блок 3 МПУ вырабатывает микрооперацию сдвига на 1 разряд влево содержимого регистров 7 блока 5 памяти (микрооперация Y3).

Если лексическая единица есть опе- :ранд (ХЗ 1) то блок 3 ЖУ вырабатывает микрокоманду Y13s т.е« происходит выработка кода нетерминала F шифратдром и запись этого кода в блок 5 памяти. Затем блок МПУ анализирует возможность свертки по описанному алгоритму. После выхода из этого .алгоритма блЬк 3 МПУ вырабатывает микЕсли эта лексическая единица не есть знак конца выражения (XI 0), блок 3 МПУ выдает микрооперацию сдвига влево на 1 разряд содержимого регистров 7 блока 5 памяти (микроопе- рапия Y3).

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

Дешифратор 2 лексических единиц

3 ШУ. Если есть знак

ницу и запускает олок лексическая единица не конца выражения (), блок 3 МПУ вырабатывает микрооперацию сдвига на

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

Лексическая единица дешифруется

дешифратором 2 лексических единиц л запускает блок 3 ЮТУ. Если эта лексическая единица не есть знак конца

вы.рабатывает микрооперацию сдвига на 1 разряд влево содержимого регистр(эв

7блока 5 памяти (микрооперация Y.3) .

8случае, если эта лексическая едиии- 45 Ца, есть ни открывающая скобка (Х2 0),

ни операнд (ХЗ 0), ни операция (Х4 0) и ни закрывающая скобка (Х5 0), то блок 3 fffly выдает сообщение об ошибке (микрооперация Y9) ., gQ и алгоритм завершает свою работу. Пример 1. Пусть исходное выражение имеет вид:

а + (Ь - с) + d 1,

а, Ь, с, d - онеранды;

-I-, - - знаки операции; - символ конца выражения ,

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

- код операнда; код операции;

( - код открывающей скобки;

) - код закрывающей скобки.

На вход устройства поступает выражение

F

а

(Ь - с) + с .

Таким образом анализатор завершил работу на 24-м шаге с выдачей сообщения Успешный анализ (микрооперация Y10).

Пример 2, Пусть исходное выражение имеет вид а + (Ь - с)) , которое содержит ошибку - имеется лишняя закрывающая скобка.

Процесс синтаксического анализа описан в пошаговом режиме в табл. 2.

На 21-м шаге анализатор закончил свою работу с выдачей сообщения Ошиб- :ка, так как в старших разрядах регист ров 7 блока 5 памяти находится код закрывающей скобки (Х8 0).

Формула изобре тения

Синтаксический анализатор, содержащий входной регистр, дешифратор

Y3, Y13

Y2

XI, Х2,

Y3, Y14

лексических единиц, блок микропрограммного управления и блок памяти, причем информационный вход ёходного

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

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

блока микропрограммного управления соответственно.

Таблица 1

памяти

Запись кода операнда

F

Проход алгоритма свертки и ввод логической единицы

Запись кода операции

11

Х1,

1439591

12 .Таблица 2

Y1, Y2

Обнуление блока 5 памяти

Y3, Y13

Свертка

Свертка (F) Свертка

Ошибка

.y,g

вт utiiffHf fcf o4

С начала

Фие.3

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

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

SU 1 439 591 A1

Авторы

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

Зайцев Сергей Павлович

Волков Виталий Николаевич

Назарьян Георгий Вартанович

Орлов Юрий Алексеевич

Даты

1988-11-23Публикация

1987-04-01Подача