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

Иллюстрации

Показать все

Реферат

 

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

СОЮЗ СОВЕТСНИХ

СОЦИАЛИСТИЧЕСКИХ

РЕСПУБЛИН (19) (11) А1 (5)) 4 С Об Г 11 00

ОПИСАНИЕ ИЗОБРЕТЕНИЯ

ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР

ПО ДЕЛАМ ИЗОБРЕТЕНИЙ И ОТКРЫТИЙ

К ABTOPCH0MV СВИДЕТЕЛЬСТВУ, (21) 4236423/24-24 (22} 27,04.87 (46} 23.1 1.88. Бюл. ) 43 (72) В.К.Водопьянов, С.Н.Вавилов, В.Н.Волков, В.Н.Завьялов и С.П.Зайцев (53) 681,325(088.8) (56) Авторское свидетельство СССР

В 673818, кл. С 06 У 11/00, 1978. Авторское свидетельство СССР

Р 1334149, кл. С 06 Г f1/00, 1986. (54} СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР (57) Изобретение относится к вычисли тельной технике и может быть использовано и автоматизированных системах: обработки данных и производства программ для ЭВИ. Цель изобретения — расширение функциональных возможностей за счет обработки выражений, содержащих скобки различных типов, при одновременном повышении быстродействия и сокращении аппаратурных затрат устройства. Для достижения указанной цели в устройство дополнительно введены шифратор 4 кодов скобок и элемент НЕ-И 6. Введение указанных элементов и порождаемых ими связей позволяет использовать различные виды скобок в анализируемых выражениях, определяющих полностью порядок выполнения операций, а также вести синтаксический анализ в темпе поступления лексических единиц. 2 ил, 1 табл.

1439593 х

3 х

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

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

1, если лексическая единица — операция;

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

1, если лексическая единица — закрывающая скобка;

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

1, если лексическая единица — конец выражения;

0 в противном случае; а я+ Че х

На фиг. 1 представлена структурная схема синтаксического анализатора

У t5 на фиг. 2 — блок-схема микропрограм: много управления анализатором.

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

,сических единиц, блок 3 микропрограм20 много управления, шифратор 4 кодов скобок, сумматор-вычитатель 5, эле, мент НЕ-И 6.

Входной Регистр 1 дешифратор

,лексических единиц, шифратор 4 кодов

25 скобок и элемент НЕ-И 6 реализованы известным образом на серийно выпускаемой элементной базе.

Входной регистр 1 используется для хранения очередной лексической единицы исходного выражения, дешифратор 2 лексических единиц разделяет, лексические единицы на операнды, операции, скобки (по виду и типуоткрывающие или закрывающие) и конец 35 ! выражения.

Блок 3 микропрограммного управления (БМПУ) выполнен известным способом на программируемых логических матрицах, управляет работой всех эле-40 ментов устройства. Входные сигналы х, ... х (фиг. 2) формирует дешифратор лексических единиц, а х поступает через элемент НЕ-И с суммато ра-вычитателя. На выходе блока мик- 45 ропрограммного управления формируются сигналы микроопераций у, Смысл входных и выходных сигналов следующий:

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

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

1, если лексическая единица — открывающая скобка;

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

1, если содержание сумматора-вычитателя равно нудю;

0 в противном случае; у " разрешение записи очередной

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

5 исходного выражения встречена ошибка — "Ошибка", Шифратор 4 кодов скобок формирует для каждой пары соответствующего вида скобок определенный код. Выбор кода для пары скобок производится следу ющим образом .

Исходя из укаэанного значения глубины вложенности скобок, определяется код для первой пары скобок, который удовлетворяет условию где V>„- глубина вложенности скобок а ;„ — ближайшее простое число, превышающее значение глубины вложенности.

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

В таблице приведены коды для случая трех видов скобок и глубины вложенности, равной 20.

1439593

Круглые (, ) .

Квадратные

Фигурные (23

43 вход усT— (А+В)I» начальное

1 постуВид используемых скобок Код скобок

Сумматор-вычитатель 5 выполняет либо функцию сложения кодов скобок„ либо их вычитание.

Если содержимое сумматора-вычитателя равно нул»о, та на ныхаде элемента НЕ-И устанавливается единичнь»й сигнал. 20

Устройство работает следующим образом, Перед началом работы производится начальная установка устройства: обнуление входного регистра 7 и сумма- 2Б тара-вычитателя 5. Лексическая единица исходного выражения поступает на входной регистр 1, а затем через дешифратор 2 лексических единиц, который разделяет входную информацию на операнды, операции, скобки (па виду и типу — открывающая или за.крывающая) и конец нйражения, запускает БМПУ 3 °

Если текущий сигнал-операнд (х = О, х, = 1), то БМПУ 3 вырабатывает микрооперацию у,, которая разрешает запись следующей лексической единицы во входной регистр 1.

Если лексическая единица — откры- 40 вающая скобка (х + = О, х, = О, х = 1), .то по виду скобки шифратор 4 кодов скобок формирует соответствующий код, .который поступает на вход сумматара вычитателя 5,а БМПУ по типу скобки вырабатывает микрооперацию у, кото,рая разрешает сложение кода скобки с содержанием сумматора-нычитателя, и затем микрооперацию у» .

Если лексическая единица — операция (z = О, хз = 1), то БМПУ вырабатывает микрооперацию у».

Если очередной символ — закрывающая скобка (х„ = ", х = О, х4 = 1), ° Э 4 5Б то по виду скобки шифратор 4 кодов скоб формирует соответствующий код, поступающий на вход сумматора-нычитателя 5, а БИПУ разрешает микрооперацией у вычитание кода скобки из соЯ держимаго сумматора-вычитятеля 5 и потом по микраоперации у, запись очередной лексической единицы во нходной регистр 1.

Если поступившая на вход регистра 1 лексическая единица — конец выражения (х =1) тогда БМПУ н соответствии с са5 держанием сумматора-вычитателя 5 вырабатывает либо микраоперацию у, либо микраоперацию у . Если содержимое сумма5 тора-нычитателя 5 равно нулю (х 1), то синтаксический анализ исходного выражения завершен успешно и на выходе

ll устройства появляется сигнал Конец анали а". Если содержимое сумматораны:штателя 5 отлична от нуля (х = О), та выражение содержит синтаксические ошибки и на выходе устройства появляется сгп лал "Ошибка".

Пример 1. Пусть на райстна поступает выражение

П у=трайстна установлено в состояние. На вход регистра пает ленси еска", единица которая затем идентифицируется дешифратаром 2 как круглая аткрына»ощая скобка. ITo виду, скобки шифратор 4 Формирует кад 23 (таблица), который поступает на вход сумматора-вычитателя 5, по типу скобки (аткрынаюшая) БМПУ 3 вырабатывает микраоперацию, разрешающую сложение. кода скобки с содержимым сумматора-вь»читателя. При установке устройства содержимое сумматора-вычитателя абнулено. После сложения значение сумматора-нычитателя равно 23.

БМПУ формируе-. микраоперацию у», разрешения записи ва входной регистр следующей лексической единицы — "А", Дешифратор 2 определяет, что поступивший символ является операндом и запускает БМПУ, который разрешает прием очередного символа выражения.

Знак операции — "+". БМПУ вырабатывает микрооперацию у„ . Следующй символ "В" — операнд. БМПУ разрешает прием очередного символа.

Следующая лексическая единица ")"это закрывающая круглая скобка. По виду скобки шифратор 4 формирует код

„,23 и подает его на вход сумматора-вычитателя 5. БИПУ по типу скобки (закрывающая) вырабатывает микрооперацию, разрешающую вычитание кода скобки из содержимого сумматора-вычитателя.

5 14

В результате операции в сумматоревычитателе содержится ноль.

Далее на вход устройства последовательно поступают сигналы:

"С", "+", "0", которые определяются шифратором 2 лексических единиц как операция, операнд, операция, операнд.

Очередная лексическая единица "ф ", поступившая на вход устройства, определяется дешифратором 2 как "Конец выражения". Сигнал с выхода дешифратора поступает на вход признаков лексических единиц БИПУ 3, а на вход, признаков анализа БИПУ.через элемент

НЕ-И б поступает сигнал с сумматоравычитателя, содержимое которого равно нулю, Ыедовательно, БИПУ вырабатывает микрооперацию уц "Конец анализа", сообщающую об успешном окончании синтаксического анализа, Пример 2. Исходное выражение имеет вид (А+В) 4- С @, в котором вместо круглой закрывающей скобки пос" тавлена квадратная скобка.

Лексическая единица "(" поступает через входной регистр 1 на дешифратор

2 лексических единиц, который определяет, что это круглая открывающая скобка. По виду скобки шифратор 4 кодов скобок формирует код 23, кото-" рый подается на вход сумматора-вычи. тателя 5. БИПУ 3 по типу скобки (открывающая) вырабатывает,микрооперацию у, разрешающую сложение кода скобки с содержимым сумматора-вычитателя 5„

Содержимое сумматора-вычитателя равно нулю (в соответствии с начальной установкой устройства) и после сложения будет равно 23. Далее БИПУ вырабатывает микрооперацию у,, разреша. ющую входному регистру 1 прием следующего символа.

"А" — это операнд. Дешифратор 2 запускает БМПУ, который формирует микрооперацию у и на вход устройства поступает очередная лексическая единица "+" операции. БИПУ разрешает запись следующего символа "В" в регистр 1. Дешифратор 2 определяет, что это операнд, а БМПУ выдает разрешение на прием очередного символа "1".

Полученная лексическая единица определяется дешифратором 2 как квадратная закрывающая скобка. По виду скобки шифратор 4 вырабатывает код

37,.(таблица), который поступает на вход сумматора-вычитателя 5. БИПУ по типу (закрывающая) скобки формирует

39593 6

5

50 микрооперацию у,.которая разрешает сумматору-вычитателю 5 произвести операцию вычитания, В результате содержимое сумматора-вычитателя равно 14. БИПУ вырабатывает следующую микрооперацию у, .

На вход устройства последовательно поступают лексические единицы "-а", С", которые определяются дешифратором как операция н операнд, Очередным символом, поступившим на входной регистр,.является "у", Эта лексическая единица определяется дешифратором 2 как "Конец выражения", Возбуждается БИПУ, который анализирует содержимое сумматора-вычитателя 5. Оно не равно нулю, следовательно, исходное выражение содержит синтаксические ошибки. БИПУ вырабатывает микрооперацию у и на выходе устройства появляется сигнал ошибки, Формула изобретения

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

-чг ° управления, первыи выход которого под ключен к входу синхронизации входного регистра, второй и третий выходы блока микропрограммного управления являются выходами "Ошибка" и "Конец анализа" анализатора соответственно, четвертый выход блока микропрограммного управления подключен к управляющему входу сумматора-вычитателя, о т л и ч а юшийся тем, что, с целью расширения функциональных возможностей за счет обработки выражений, содержащих скобки различных типов, при одновременном повышении быстродействия и сокращении аппаратурных затрат, в него введены шифратор кодов скобок и элемент НЕ-И, выход которого соединен с входом признаков анализа блока микропрограммного управления, а вход элемента НЕ-И подключен к выходу сумматора-вычитателя, информационный вход которого подключен к вы7 1439593 8 ходу шифратора кодов скобок, вход типа скобок дешифратора лексических которого соединен с выходом признаков единиц.

Составитель И. Поливода

Редактор А. Ворович Техред М.Ходанич Корректор Н, Король

Заказ 6078/48 Тираж 704 Подписное

ВНИИПИ Государственного комитета СССР по делам изобретений и открытий

1 13035, Москва, Ж-35, Раушская наб., д. 4/5

Производственно-полиграфическое предприятие, r. Ужгород, ул. Проектная, 4.