Синтаксический анализатор
Иллюстрации
Показать всеРеферат
Изобретение относится к вычислительной технике и может быть использовано в автоматизированньпс системах .обработки данных и производства программ ЭВМ. Цель изобретения - повьппение достоверности синтаксического контроля при одновременном повышении быстродействия и сокращении аппаратурных затрат. Для достижения указанной цели в устройство дополнительно введены дешифратор 6 и шифратор 4. Введение указанных элементов и порождаемых ими связей в сочетании с реализацией блока 5 памяти на реверсивных сдвигающих регистрах, а также с усовершенствованными алгоритмами 1|)ункдионирования блока 3 микропрограммного управления позволяет реализовать указанные преимущества и осуществить полный синтаксический анализ входных выражений. 3 ил., 2 табл. а € Л
СОЮЗ СОВЕТСНИХ
СОЦИАЛИСТИЧЕСНИХ
РЕСПУБЛИК (19) (112
Уход уар
ЮЯ 30/N
Ошибки" "9саеаный ан7Лигм
Фиг.!
ГОСУДАРСТВЕННЫЙ НОМИТЕТ СССР
ПО ДЕЛАМ ИЗОБРЕТЕНИЙ И ОТНРЫТИЙ (21) 4218703/24-24 (22) 01,04.87 (46) 23. 11,88, Вюл. Р 43 (72). В.К.Водопьянов, С.П. Зайцев, В.Н.Волков, Г.В,Назарьян и И.A.Îðëîâ (53) 681.325(088.8) (56) Авторское свидетельство СССР
Р 637818, кл. G 01 Г 11/00, 1978.
Авторское свидетельство СССР
Р 1l30879, кл, С 06 F 15/38, l984. (54) СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР (57) Изобретение относится к вычислительной технике и может быть использовано в автоматизированных смстемах обработки данных и производства прог(5D 4 С 06 F 11/00 15/38 рамм 3ВН. Цель изобретения — повышение достоверности синтаксического контроля при одновременном повышении быстродействия и сокращении аппаратурных затрат. Для достижения указанной цели в устройство дополнительно введены дешифратор 6 и шифратор 4.
Введение укаэанных элементов и порождаемых ими связей в сочетании с реализацией блока 5 памяти на реверсивных сдвигающих регистрах, а также с усовершенствованными алгоритмами функционирования блока 3 микропрограммного управления позволяет реализовать указанные преимущества и осуществить полный синтаксический анализ
Я входных выражений. 3 ил., 2 табл.
1439591
Х2 1Q
Х7
Изобретение относится к вычисли-! тельнои технике и может быть использовано в автоматичированных системах обработки данных и производства программ ЭВИ.
Цель изобретения — повышение достоверности синтаксического контроля при одновременном повьштении быстродействия и сокращении Bblпаратурньгх затрата
На фиг, 1 представлена структурная схема. синтаксического анализатора; на фиг, 2 -. структурная схема блока памяти; на фиг, 3 — блок-схема микропрограммного управлени синтакСИИE:ÑÊHÌ аНаЛИЗатоРОМ.
Сии такси -1еский анализ з тор (фи1 1 }
ooäepIêFIò входнОй регистр 1, дешифра" тор 2 лексических единив., блок 3 микропрограммноГО управления выпОл пенный, например, на программируемых логических матрицах,- шифратор 4, блок 5 памяти, дешифратор 6, Б сООТВН блока 5 памя TH BllopHT )Iва 25 ревеpc:кэных pегисTpB ? O,ТвигB
Входной регистр 1, дешифратор 2 лек ичес.ких единиц, шифратор 4 и дешифратор 6 могут быть реализованы известным способом IIB. серийнО Выпу! 3Q каемой элементной базе, Входной регистр 1 используется для хранения очередной .".:Bêoè÷eñêoé единицы исхоцного выражения. Дешиф-ратор 2 лексическ.:Ix единиц разделяет лексические ециницы на операнды, Операции, скобки, конец выражения.
Блок 3 микропрограммногo управле40 ния (МНУ) управляет работой всех элементов анализатора. Алгоритм егo функционирования описан блок--схемой микропрограммного управления (фиг. 3), где входные сигналы Х1-Х5 формирует дешифратор 2 лексических единиц (сигналы Х2-Х5) образуют группу выходов дешифратора 2 лексических единиц, сигнал Х1 подается на выход дешифратора), а Хб-Х8 формирует дешифратор 6, причем на выхоц дешифратора 50 б подается сигнал X8 а сигналы Хб и Х7 — на группу выходоь. На выходе блока 3 ИПУ управления формируются сигналы микроопераций 71-У11, а также сигналы микрокоманд 712-715, являющиеся совокупностями микроопераций. Содержательный смысл входных и выходных сигналов следующий:
1,. если лексическая единица исходного выражения есть знак конца выражения "ф:";
0 в противном случае;
1, если лексическая единица исходного выражения есть открывающая скобка;
A в противном случае;
1, если лексическая единица исходного выражения есть операнд;
0 в противном случае;
1, если лексическая единица исходного выражения есть бинарная операция;
0 в противном случае;
1, если лексическая единица исходного выражения есть закрывающая скоба;
0 в противном случае;
1, если в трех последних разрядах регистров блока памяти находится код основы ГхГ
0 в противном случае;
1, если в трех последних разрядах регистров блока памяти находится.код основы н()н, 0 в противном случае;
1, если в последнем разряде регистров блока памяти находится код нетерминала
"Г"; а два предыдущих разХЯ = 1>яда нулевые;
0 в противном случае;
У< т
Y2 = y,;
Y3 v
„) У
74 = у, 75 = у
Y6=у
Y7 — у7 у
Y8 = ув, У9 У99
7 1 0
Y11 = yI, У12 =(у: - у
У14. =(у, у1, 1
715 =(б, у1, .
1439591 где
- и у
20 уб у ю
У<» сброс в ноль регистров 7 блока 5 памяти; ввод следующей лексической единицы во входной регистр 1; сдвиг на 1 разряд влево (в сторону младших разрядов) содержимого регистров 7 блока 6 памяти; сдвиг на 2 разряда вправо (в сторону старших разрядов) содержимого регистров 7 блока 5 памяти; выработка кода терминала
"открывающая скобка"; выработка кода нетерминала "F"; выработка кода нетерминала
"Операция", выработка кода терминала
"Закрывающая скобка"; выработка сообщения
"Ошибка"; выработка сообщения "Успешный анализ ; разрешение записи в блок 5 памяти, Блок 3 МПУ может быть реализован на программируемых логических матрицах.
Шифратор 4 формирует коды терминалов "Открывающая скобка", "Закрывающая скобка" и нетерминалов "Операния", "Г" †опера.
Блок 5 памяти предназначен для хранения, записи и считывания кодов терминалов и нетерминалов, поступающих на информационный вход блока.
Блок 5 памяти представляет собой память с безадресным принципом записи и чтения и может быть выполнен на двух реверсивных сдвигающих регист рах 7. Запись терминалов и нетерминалон производится в старшие N-e разряды регистров 7 (фиг. 2). Выходы последних трех разрядов регистров 7 образуют группу выходов, связанную с группой входов дешифратора б. Реверсивные регистры 7 блока 5 памяти поразрядно сдвигают коды терминалов и нетерминалон, причем сдвиг вправо на два разряда равносилен затиранию последних двух записанных кодов.
Дешифратор 6 вырабатывает входные сигналы Хб-Х8 по анализу информации, находящейся в трех старших разрядах регистров 7 блока 5 памяти.
На выход дешифратора б подается сигнал Х8 который анализируется блоком 3 ИПУ во нремя поступления знака конца выражения ф . Сигнал
Х8=1 в том случае, когда в старших разрядах регистров 7 блока 5 памяти находится код нетерминала Е", а два предыдущие разряда нулевые, что свидетельствует об успешном анализе входного выражения. С группы выходов дешиФратора 6 на вторую группу входов блока 3 МПУ поступают сигналы Хб и
Х7, которые равны единице н том случае, если в последних трех разрядах регистров 7 блока 5 памяти находится код ОснОВы "1 + Е" или "(F)" соответственна. Гдиничное значение любого из этих сигналов свидетельствует а вазможности произвести свертку исходнага выражения, т.е. как основ
"F.» 1 " или "(Г) заменить на код нетерминала Г н, l1
Анализатор работает следующим образам.
На первом шаге блок 3 МПУ вырабатывает микраопергцию Y1 — сброс н ноль содержимого регистров 7 блока 5 памяти.
Затем блок 3 МПУ вырабатывает мик" рооперацию Y2 — ввод лексической единицы но входной регистр 1, Лексическая единица поступает на дешифратор 2 лексических единиц и дешифруется дешифратором. Если на вход поступил знак конца выражения "ф, то дешифратор 2 лексических единиц вырабатывает сигнал (Х1=1), который запускает блок 3 МПУ от дешифратора 6.
Если Х8 = 1, т.е. н старшем разряде регистров 7 блока 5 памяти находится код нетерминала "Р", а цва предыдущие разряда нулевые, то блок 3 МПУ вырабатывает микроаперацию 710 — "Успешный анализ" и алгоритм заканчивает свою работу. В противном случае (если
Х8 = 0) блок 3 МПУ вырабатывает микрооперацию Y9 — "Ошибка" и алгоритм заканчивает свою работу.
Если же входная лексическая единица есть не знак конца выражения
"Ф, то дешифратор 2 лексических единиц вырабатывает сигнал Х1 = О, который запускает блок 3 %ТУ на выработку микрааперации сднига влено на 1 разряд содержимого регистров 7 блока 5 памяти (микрооперация Y3) и на анализ входного сигнала Х2.
39591
10
25 1 разряд влево содержимого регистров
"7 блока 5 памяти, Если лексическая а + (Ь вЂ” с) +с1ф, где а, Ь, с, d операнды; знаки операции; символ конца выра-жения.
5 14
Если Х2 = 1, т.е, входная лексическая единица есть открывающая скоб:ка, то блок 3 КПУ вырабатывает последовательность микроопераций выработки кода открывающей скобки шифратором 4 и записи этого кода в блок 5 памяти (сигнал 712) . Затем блок 3 МПУ производит анализ возможности свертки исходного выражения.
Блок 3 ИПУ анализирует входной сигнал Х6, поступающий от дешифратора
6 на 2 гр.вх.блока 3 ИПУ, Если Хб = 1, т.е. в трех последних разрядах ре" гистров 7 блока 5 памяти находится код основы "Г Ф Г", та блок 3 МПУ вырабатывает последовательность микрокоманд 74, и 713, в результате вы-. полнения которых происходит сдвиг содержимого регистров 7 блока 5 па(.(5(ти на два разряда вправо, выработка негерминала Г ((п(фратороь(4 H зались этого кода в блок 5 памяти.
Затем опять проверяется возможность свернуть исходное выражение, т.е. блок 3 МПУ проверяет входной сигнал
Х6. Если Х6 = О, то анализируется входной сигнал Х7. В случае, если
Х7 -- 1, т.е.. в трех последних разрядах регистров 7 блока 5 памяти находится ксд о новы "Г", блок 3 2ХПУ вырабатывает описанную последователь ность микрокоманд (74, 713), т.е. проводится свертка исходного выражения (код основы,(Г) заменяется ко- дом нетерминала Е ), И опять про-* веряется воэможность свернуть исходное выражение и проводится свертка до тех пор, пока входные сигналы
Хб и Х7 не примут нулевые значнния.
После этого блок 3 МПУ вырабатывает микробперацию ввода следующей лексической единицы исходного выражения во входной регистр 1 (72).
Если лексическая единица ие,есть знак конца выражения (Х1 =- О), то блок 3 МПУ вырабатывает микрооперацию сдвига на 1 разряд влево содержимого регистров 7 блока 5 памяти (микрооперация 73).
Если лексическая единица есть опе.ранд (ХЗ = 1), то блок 3 ИПУ выраба.— тывает микрокоманду 713, т.е. происходит выработка кода нетерминала "Г" шифратором и запись этого кода в блок
5 памяти. Затем блок ИТ(У анализирует
l возможность свертки по описанному алгоритму. После выхода из этого алгоритма блЬк 3 ЙПУ вырабатывает микрооперацию ввода следующей лексической единицы во входной регистр 1.
Если эта лексическая единица не есть знак конца выражения (Х1 = С), блок 3 МПУ выдает микрооперацию сдвига влево на 1 разряд содержимого регистров 7 блока 5 памяти (микрооперапия 73), Если лексическая единица есть операция (X4 = 1), то блок 3 2"(ПУ вырабатывает микрокоманду 714, т.е, происходит выработка кода нетерминала и и .Операция шифратором 4 и запись это го . кода в блок 5 памяти. Затем происходит отработка алгоритма свертки и ввод следующей лекси(еской единицы исходного выражения.
Дешифратор 2,лексических единиц де1((ыфрирует текущую лексическую единицу и запускает блок 3 2 ((ТУ, Если лексическая единица ((e есть знак конца выражения (Х!=О), блок 3 МПУ вь(рабать(вает ми(.роопераци(0 сдвига на единица есть закрывающая скобка (X5 =1)„ то блок 3 ИТУ вырабатывает мчкрокоманду 715, т.е, происхоцит выработка кода терм1(нала Закрывающая скобка" шифратором 4 и запись этого кода в блок 5 памяти. После чего происходит отработка алгоритма свеDT ки и ввода следующей лексической единицы исходного выражения.
Лексическая единица дешифруется дешифратором 2 лексических единиц я запускает блок 3 МПУ. Если эта лек"иеская единица не есть знак конца выражения (Х1 =- О?, то блок " 2ПТУ вырабатывает микрооперацию сдвига:(а
1 разряд влево содержимого регистров
7 блока 5 памяти (микрооперация 73) .
В случае, если эта лексическая единица, есть ни открывающая скобка (Х2 = О), ни операнд (ХЗ = О), ни операция (Х4 = О) и ни закрывающая скобка (X5 =- О), то блок 3 %ТУ выдает сообщение об ошибке (микрооперация 79?, и алгоритм завершает свою работу.
JI р и м е p t, Пусть исходное выражение имеет a»p:
1439591 атора редволы, знавыраа + (b — с) + с Ф.
Таблица 1.
Примечание
Содержимо старших разрядов регистров
7 блока 5
Задейство-, ванные выходные сигналы регист ра 1 памяти
Обнуление блока 5 памяти
2 а Х1, Х2=0
Х3=1
Y39 У13
Запись кода операнда
3 а Хб, X7=0
У2
УЗ, У14
Запись кода операции
Для наглядности работу анализ опишем по укрупненным шагам, п ставленным в табл. 1, причем сим использованные в колонке 5, обо чают следующее:
F — " код операнда;
+ — код операции; (— код открывающей скобки;
) — код закрывающей скобки.
На вход устройства поступает жение
Таким образом анализатор завершил работу на 24-м mare с выдачей сообщения Успешный анализ (микрооперация У10) .
Пример 2. I .óñòü исходное выражение имеет вид а + (Ь вЂ” с)) которое содержит ошибку — имеется лишняя закрывающая скобка.
Процесс синтаксического анализа описан в пошаговом режиме в табл. 2, На 21-и mare анализатор закончил свою работу с выдачей сообщения "Ошиб ка", так как в старших разрядах регистров 7 блока 5 памяти находится код закрывающей скобки (Х8 = О), формула изобретения
Синтаксический анализатор, содержащий входной регистр, дешифратор
Содер Состояние
Шаг жимое задействованных вход- входных сигнало ного
4 + Х1, Х2, Х3 О
Х4=1 лексических единиц, блок микропрограммного управления и блок памяти, причем информационный вход входного регистра является одноименным входом устройства, выход входного регистра соединен с входом дешифратора лексических единиц, выход и выходы ,группы которого соединены с первыми входом и входами группы блока микропрограммного управления соответственно, первый выход блока микропрог.раммного управления подключен к входу синхронизации входного регистра, вто15 рой .и третий выходы блока микропрограммного управления являются выходами
"Ошибка" и "Успешный аналйз" устройства соответственно, выходы первой группы блока микропрограммного управ2О ления подключены к управляющим входам блока памяти, отличающийся тем, что, с целью повышения достоверности синтаксического контроля при одновременном повышении быстродейст- .
26 вил и сокращении аппаратурных затрат, в него введены шифратор и дешифратор, причем выходы второй группы блока микропрограммного управления соединены с входами шифратора, выход кото30 рого соединен с информационным входом блока памяти, выход которого подключен к входу дешифратора, выход и . выходы группы которого подключены к второму входу и входам второй группы
З5 блока микропрограммного управления соответственно.
Проход алгоритма сверт-ки и ввод логической единицы
1439591
1 2
5 + Хб, X7=0
6 (Хi 0, Х2 1
Запись кода
УЗ, У12
7 (Хб, Х7 О
У2
8 Ь Х1, Х2=0
Х3--1
Г«(Г
УЗ, У13
Г»(Р
F «(F»
Хб, Х7=0
У2
М1, Х2,ХЗ О
Х4=1
УЗ, У14
Хб,Х7=0
Р«(Р «
F 4(F«F
Х1, Х2=0
X3-=1
УЗ, У13
Х6--1
У4, У13
Хб,Х?=О
Р»(Р
Х1 =X4=0
X5-=1
F«-(F) У3, У15
16 )
17 )
18 )
l9 +
Хб=О X7=1
У4, У13
У4, У l3
F«F
Х6=1
Хб,Х7=0
Y.2
Х1 Х2 X3=0
X4=1
УЗ, У14
Хб,Х7=0
У2
ГФ
Х1,X2=0
X3-=1
Уз, У13
22 d Х6=1
У4, У13
У2
24 Ф Х1,X8-=1
У10
13 с !
4 с
15 ) d Хб,Х7=0
Прополжение ra5J:, 1
Запись кода открывающей скобки
F«(F Свертка F»F -+Г
Свертка (Г) F
Свертка Р 4- Г F
Свертка F«F F
"Успешный анализ"
1439591
Содержимое
Задействованные выШаг ходные сиг налы входного регист ра 1 памяти
71, 72
У3, У13
Х1,Х2=0
Х3=1
Хб,Х7=0
У3, У14
Х1,Х2,ХЗ=О
Х4=1
Хб,Х7=0
Y3,У12
Xi=0 X2=1
F«(72
Хб,Х7=0
Р-а(Р
Х1 X2=0
X3-=1
УЗ, 713
F4(F
Хб,Х7=0
Г«(Г«
73, Y 14
Х1 Х2 ХЗ-0
Х4=1
Хб,Х7=0
УЗ,Y13
Xi,Х2=0
X3=1
1
Г+(Р Свертка Р Г-р
74,713
Х6=1
F+(F
Х6 X7=0
14
F+(F) У3, 715
Х1-Х4=0
Х5--1
Г+Р Свертка (F)-+ F
F Свертка
Х7=1, Хб=О
Х6=1,17
Хб,Х7=0
У3, 715
Хб,Х7=0
F) "Ошибка"
Х1=1, Х8=0
Состояние задействованных. входных сигналов
Х1-Х4=0 Х5=1
74, У13
74,Y13
Содержимо старших разрядов регистров
7 блока 5
F«(F IFW(FwF
Таблица 2
Примечайие
Обнуление блока 5 памяти
1439591
Составитель И. Поливода
Редактор А. Ворович Техред M.Õoäàíè÷ Корректор М. Шароши
Заказ 6078/48
Тираж 704 Подписное
ВПИИПИ Государственного комитета СССР по делам изобретений и открытий
113035, Москва, Ж-35, Раушская наб., д, 4/5
Производственно-полиграфическое предприятие, г, Ужгород, ул. Проектная, 4