Устройство для лексического анализа программ Советский патент 1986 года по МПК G06F17/27 G06F9/45 

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

Устройство содержит блок 1 преобразования кода литер в код лексем, регистр 2, дешифратор 3, счетчик А позиций, счетчик 5 литер, триггеры 6 и 7, группы 8 и 9 элементов И, группы 10 элементов ИЛИ, элемен ты И 11-17, элементы ИЛИ 18-22, элемент ИЛИ-НЕ

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

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

На Фиг. 1 изображена функциональная схема предлагаемого устройства; на фиг. 2 - диаграмма работы при анализе первых К литер входного текста (поля метки); на фиг. 3 - диаграмма работы устройства при анализе поля оператора; на фиг. 4 - диаграмма работы устройства при анализе поля операндов; на фиг. 5 - диаграмма работы устройства при анализе коммента риёв в поле операндов.

Устройство содержит блок 1 преобразования кода литер в код лексем, регистр 2, дешифратор 3 счетчик 4 позиций, счетчик 5 литер, триггеры 6 и 7, группы 8 и 9 элементов И, группа 10 элементов ИЛИ, элементы И 11- 17, элементы ИЛИ 18-22, элемент ИЖ- НЕ 23, элементы 24-27 задержки, одно вибратор 28, вход 29 ответа, информационный вход 30 устройства, вход 31 выдачи, вход 32 пуска, информационный выход 33 устройства, выход 34 запроса, выход 35 готовности, Ь1ход 36 расхо одения типа.

1238103

23, элементы 24-27 задержки, одновиб- ратор 28, вход 29 ответа, информационный вход 30, вход 31 вьздачи, вход 32 пуска, информационный вход 33, выход ЗА запроса, выход 35 готовности, выход 36 расхождения типа. 5 ил.

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

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

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

цепочки и формировать соответствующую (выделенной из данных К литер) лексему стандартной длины на группе его выходов. Яексема имеет фиксированный формат и состоит из следующих

полей: поля ошибки, поля типа и поля значения. В существующих ЭВМ литеры терминальной цепочки программы обычно представляются в памяти ЭВМ в коде ДКОИ и длина литеры h равна восьми разрядам (байт). Кроме-тогр,

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

nimt(l,5-2)n,

где m - разрядность лексемы; п - разрядность литеры.

- 3Большинство существующие систем трансляции языков программирования предполагает структурирование программы на записи стандартной длины. Это связано с организацией в современных ЭВМ системного ввода-вывода, при котором записи стандартной длины (обычно 80 байт) буферируются и вводятся (выводятся) более крупными единицами - блоками (240,400,800 и т.д. байт), что повьшает эффективность использования оборудования.

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

1

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

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

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

В целом устройство позволяет осуществлять преобразование входного текста программы в цепочку лексем стандартной длины с одновременным подавлением незначащих литер (про

10

15

20

25

-

35 0

5

238103.4

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

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

Регистр 2 предназначен для приема и хранения до К литер входного текста программы и может быть собран на регистрах сдвига параллельного г или последовательного действия. Регистр 2 работает по принципу магазина: очередная литера заносится в вершину стека и при этом ранее (принятые литеры сдвигаются на одну позицию вниз под действием управляющего сигнала на первом входе сдвига} при установке единичного сигнала на другом входе литеры в стеке сдвигаются на одну позици(о вверх.

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

0

Счетчик 5 литер предназначен дпя отслеживания состояния регистра 2 (числа литер в нем) и управления совместно с триггером 7, элементами И 13-15, элементом ИЛИ 22, элементом ИПИ-НЕ 23 и элементами 24 к 25 задёржки, процессом последовательной выдачи литер из регистра 2 иа вход 3 :устройства в соответствующих тактах его работы.

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

Группы 8 и 9 элементов И предназначены для коммутации соответственно лексемы и соответствующих ей литер через группу 10 элементов ИЛИ на выход 33 устройства в соответствующих такта его работы. Остальные элементы И, ИЛИ и задержки предназначены для разнесения во времени несовместимых микроопераций, реализуемых в течение . одного такта и в различных тактах работы устройства.

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

Терминальные слова и соответствующие им лексемы принято подразделять на следующие типы: идентификатор; оператор (зарезервированное слово); константа (число); разделитель (служебный символ).

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

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

5

s 0

5 0

5

5

ошибок в программе, например, таких как дублирование меток.

Предполагается, что литеры терминальной цепочки представлены в коде ДКОИ и поступают в начале соответствующих рабочих тактов на вход 30, устройства. Одновременно поступает идентифицирующий начало очередного такта сигнал Ответ на вход 29 устройства. .

Формируемая блоком I лексема содержит три поля: поле ошибки (один разряд), поле типа (три разряда) и поле значения (шу разрядов), так что общая длина лексемы m 5 п.

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

На информационный вход 30 устройства в соответствующих тактах его работы последовательно подаются литеры входной записи (цепочки). При этом накладьгааются следующие ограничения на позиционирование терминальных слов внутри записи. Каждая из позиций от 1 - К может содержать значащую литеру метки.или литеру типа Ц - пробел. Позиции (К+1) - (К+Е) могут содержать значащие литеры оператора входного языка или с литер LJ ( ). Позиции (K+E+t) - (L-3) могут содержать значащие литеры идентификаторов или констант и специальных разделителей (+,-,f и тону подобное), которые используются при записи выражений языка, меток перехода, ключевых параметров оператора. Число литер в каждом из терминальных слОв данного поля не должно превышать К-1, при этом L (5-10)К. После каждого терминального слова должен следовать специальный одно- или двухлитерный разделитель из числа допустимых в языке или литера .Допустимое число терминальных слов в данном поле зависит от конкретного языка программирования , а порядок их следования

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

Позиции с L-2 по L обычно предназначены для указания номера записи (перфокарты) и используются при системном вводе-выводе. Поэтому в .устройстве анализ литер этих позиций не определяется. Согласно указанному счетчик 4 позиций имеет L состояний. Исходным для него является нулевое состояние. С поступлением первой литеры на информационный вход 30 устройства состояние счетчика 4 увеличивается на единицу, так что первой литере соответствует единичное состояние счетчика 4, i-й литере соответствует i-e состояние, а L-ой литере (последней в записи) соответствует нулевое состояние счетчика 4, которое в то же время является L-ым по счету. Поэтому с поступлением первой и последующей литер очередной записи счетчик 4 вновь последовательно проходит состояния с первого По L-e (нулевое), т.е. счетчик 4 является циклическим. Множество состояний устройства однозначно определяется уровнем записи, (состоянием счетчика 4 позиций), которьй совместно с литерами входного текста данного уровня определяет переходы из текущего состояния в очередное и выходные воздействия устройства..

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

В исходном состоянии регистр 2, счетчик 4 позиций, счетчик 5 литер и триггер 7 находятся а нулевом состоянии, а иа вход 32 пуска поступает единичный сигнал который через элемент 18 ИЛИ устанавлива ет триггер 6 в единичное состояние. При этом на выходе 34 присутствует едиыичяый сиР- нал Запрос, свидетельствующий о тотовности устройства к приему и анализу литера входной цепочки. Сигнал Запрос вызывает подачу от внешнего 5 .устройства (не показано) единичного сигнала Ответ на в-ход 29 и литеру входной записи на информационный вход 30 устройства. Единичный сигнал на входе 32 при этом снимается. Сиг- 10 нат Ответ устанавливает триггер 6 в нулевое состояние, обеспечивая снятие сигнала Запрос. При этом единичный сигнал с нулевого выхода триггера 6 переводит счетчик 4 в единич- 15 ное состояние и одновременно обеспечивает занесение литеры в регистр 2 (при этом ииформация из первой ячейки заносится во вторую, из второй в третью и т.д., а поступившая лиТера 20 заносится в освобожденную первую ячейку - вершину стека), Затем с задержкой на элементе 27 данный Сигнал переводит счетЧик 5 в единичное состояние (в регистре 2 находится 5 одна - значащая литера входной цепочки) и стробирует анализ текущего состояния счетчика 4 дешифратором 3, на первом выходе которого формируется единичный сигнал. Данньй 0 сигнал устанавливает триггер 6 в

единичное состояние. Прием последующих литер входной цепочки осуптест- вляется аналогично, поэтому далее подробно не рассматривается. Указан- - ная последовательность действия отражена на диаграмме работы устройства (см. фиг. 2,1 такт). При этом предполагается, что единичный сигнал на входе 32 устройства имеет им- 0 пульсный характер и поступает в начале работы устройства. В этом случае данный сигнал одновременно с установкой единичного состояния триггера 6 вызывает установку нулевого состоя- ния счетчиков 4 и 5, регистра 2 и триггера 7 (цепи обнуления на фиг. 1 опущены).

Рассматривается работа устройства в Соответствии с подмножествами его

состояний. I

Подмножество состояний l:l C;f4J л К. В каждом такте после приема очередной литеры в регистр 2 и установки соответствующего состояния в счетчике 4 вырабатьшается единичный сигнал на первом выходе дешифратора 3, овеспечи19ающий через элемент ШШ 18 устаиовку т иггера 6 в единичное .состояние и формирование сигнала Запрос на выходе ЗА устройства, который инициирует подачу очередной литеры на информационный вход 30 устройства. Одновременно унитарны код 10000 с первого по пятый выходов дешифратора 3 осуществляет блокировк анализа литер блоком 1. Данный про- цесс продолжается до приема К-1 ли- теры цепочки.

Подмножество состояний .2: . В данном случае в регистре 2 находится К-1 литера поля метки и в верх нкяо ячейку в данном такте заносится литера U или некоторьтй специальный разделитель. При состоянии счетчика- вырабатывается единичный сигнал на втором выходе дешифрато- тора 3. Унитарный код 01000 с выхо- дов дешифратора 3 инициирует анализ литер, поступающих с информационных выходов pferHCTpa 2 на одноименные информационные .входы блока 1, причем возможны следующие ситуации.

Ситуация 2q (см. фиг. 2с|, такты К-2К). На выходах с второго по К-й регистра 2 установлены значащие литеры метки. Тогда на информациочг- ном выходе блока 1 формируется соответствующая метке лексема длины т (разрядов) и формируется единичньш сигнал Готово на выходе 35 устрой- CTJBa, который удерживается до момента снятия унитарного кода 01000 с- разрешающие входов блока 1. Данный . сигнал инициирует поступление от внешнего устройства (например, блока управления оперативной памятью, на фиг. 1 не показан) последовательное- ти единичных импульсов на вход 31 устройства в течение времени действия сигнала Готово. Первый импульс через элемент И 11, открытый едииичнь м сигналом с нулевого выхода триггера 7, разрешает вьщачу лексемы через группу элементов И 8 и ИЛИ 10 на информационньш выход 33 устройства. Данный импульс через элемент И 24 и элемент И 15, открытый эле- ментЯЛИ 21 единичным сигналом с второго выхода дешифратора 3 и единичным сигналом с выхода признака блока 1 (данный сигнал находится в единичном состоянии при наличии ком- бинаций 01000 на разрешающих входах блока 1), устанавливает триггер 7 в единичное состояние.

5 0 5

5

0

При. появлении сигнала на единичном выходе триггера 7 и, соответственно, на входе элемента И 13 на выходе 3.1 уже присутствует нулевой { сигнал, так что первый импульс череа данный элемент не проходит. Второй импульс через элемент 13 И разрешает выдачу литеры, находящейся в верщине регистра 2 через группу элементов И 9 и ИЛИ 10 на выход 33 устройства. Одновременно данный импульс через элемент ИЛИ 20 уменьшает счетчик 5 на единицу. Через время задержки на элементе 25 данный импульс через элемент ИЛИ 22 инициирует сдвиг литер в регистре 2 на одну позицию Вверх, устанавливается (К-1)-ая литера. Одновременно блокируется прохождение данного импульса через элемент И 14, который закрыт нулевьп сигналом с выхода элемента ИЛИ-НЁ 23.(состояние счетчика 4 отлично от нуля, т.е. не все литеры метки выданы из регистра 2) . С приходом К-го импульса на вход 31 (фиг. 2а, 2k-TaKT) на выход 33 устро.йства выдается последняя литера метки (литеры выдаются в порядке, обратном порядку поступления в регистр 2, аналогично указанному). В данном также счетчик 5 имеет нулевое состояние и на выходе элемента ИЛИ-НЕ 23 формируется единичный сигнал, разрешающий прохождение импульса с входа 31 через элемент И 14. Данный импульс устанавливает триггер 7 в исходное состояние и триггер 6 через элемент ИЛИ 18 в единичное состояние, обеспечивая формирование сигнала Запрос на выходе 34 устрой- ства. Таким образом, в данном-под- множестве состояний осуществляется вьщача для записи в оперативную память сформированной лексемы метки и последующая вьщача (такты К+ - 2К) соответствуюш их лексеме терминальных литер исходной метки для записи.в соответствующую временную таблицу. После выдачи последней -литеры осуществляется запрос на подачу очередных литер входной цепочки.

Ситуация 2 (см. фиг. 2S, К-й такт) . На; выходах регистра 2 установлены литеры U т.е. в дайной записи в поле метки метка отсутствует. Формируется единичный сигнал на выходе блока 1, который через элемент ИЛИ 18 устанавливает триггер 6 в единичное состояние и соответственно формирует сигнал Запрос на выходе 34 устройства (содержимое поля метки с 1 по К позиции включительно игно- рируется) .

Подмножество состояний 3:К C 4jiK+ + f. В каждом тйкте после приема очередной литеры в регистр 2 вырабатывается единичный сигнал на Третьем выходе дешифратора 3, который обеспечивает блокировку срабатывания 6jjo- ка 1 и через элемент ИЛИ 18 обеспечивает установку триггера .6 в единично состояние..Единичный сигнал Запрос инициирует подачу очередной литеры поля оператора в устройство 0ез анализа уже поступивших до приема литер

.данного поля (см. фиг. За) такты ()-(Кле-1 -1).

.Подмножество состояний 4: -К+. После занесения последней литеры поля оператора в вершину регистра 2 вырабатывается единичный сигнал

.на четвертом выходе дешифратора 3, инициирующий: анализ литер поля оператора блоком 1 (обычно X К) , причем возможны следующие ситуации.

Ситуаци я АО (см. фиг. 3, т акт С). ,На информационных входах блока 1 установлены значащие литеры оператора, тогда на информационном выходе блока 1 формируется соответствунипая оператору лексема, единичный сигнал Готово на вьпсоде 35 устройства и нулевой сигнал на выходе признака блока 1. Сигнал Готово инициируе.т поступление импульса на вход 31 устройства, который стробирует выдачу лексемы на выход 33 устройства (ана- логично ситуации 2а). Прохождение данного импульса через элемент И 15 блокировано нулевьми сигналами второго и пятого выходов дешифр атора 3 через элемент ИЛИ 21 и нулевьм сигна- лом с соответствующего выхода блока 1. Следовательно, выдача литер поля оператора из регистра 2 не. осущест- вляется. Это объясняется тем, что в поле значения сформированной лексе мы .устанавливается номер (смещение) данного оператора в Соответствующей постоянной таблице (таблицы операторов и разделителей языка формируются при генерации транслятора, постоянно находятся в бперативной памяти ив процессе лексического анализа формируются) , в которой терминально сфор

5

0 5

0

5

мировано представление данного опера тора. Одновременно с инициированием лексемы импульс через элеменФ И 12, открытый единичным сигналом с четвертого выхода дешифратора 3, через элемент И 17 устанавливает триггер 6 в единичное состояние, обеспечивая формирование сигнала Запрос на выходе 24 устройства, и одновременно через элемент ИЛИ 19 устанавливает регистр 2 и счетчик 5 литер в нулевое состояние, подготавливая к приему и . аналиау очередных литер входной цепочки.

Ситуация 48 (см. фиг. 3S, такт С ). На информационных входах блока 1 установлены литеры Ц т.е. в данной записи оператор отсутствует. В этом случае формируется единичный сигнал на выходе блока I, который через элемент ИЛИ 18 обеспечивает установку триггера 6 в единичное состояние и формирование сигнала Запрос (содержимое поля записи с К+1 по К+ 2 позицию включительно игнорируется) .

Подмножество состояний 5: К + + 4 L-2. .

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

Ситуация 5д| (см. фиг. 4). Если в результате анализа поступившей в регистр 2 цепочки литер на выходе 36 не появляется единичный сигнал, импульс, сформированный по переднему фронту сигнала одновибратором 28 через элемент 26 задержки и через элемент И 16, открытый нулевым сигналом с выхода 35, устанавливает триггер 6 в единичное состояние. Формируется сигнал Запрос на выходе 34 устройства, инициирующий поДачу очередной литеры в устройство. Данная ситуация является характерной при анализе поля операндов, в котором встречаются идентификаторы, константы и/ или специальные одно- и/или двулитерные разделители. В этом слу чае анализ поступившей цепочки литер в каждом такте работы устройства не приводит к формированию единичного сигнала Расхождение Типа (РТ) на выходе 36 устройства, так как поступившие, литеры явлтотся Литерами

одного типа. Если в регистре 2 иа- ходится допустимая лексическая конструкция (в такте L +К-1) и считанная в текущем такте (см. фиг. 4, такт L +K) литера отлична по своему типу от ранее принятых литер (например, в регистре 2 находится К-1 литера идентификатора и принята литера + или подобная; данный случай рассмот- рен на диаграмме фиг. 4), то на выходе 36 устройства формируется единичный сигнал, обеспечивая фиксацию внешним устройством требования повторной подачи последней литеры в следующем такте по сигналу .Запрос. Одновременно сигнал РТ обеспечивает уменьшение состояния счетчиков 4 и 5 на единицу и сдвиг литер в регистр;,

2 на одну позицию вверх (литера/ вы- звавшая расхождениее типа, выталкивается из вершины стека, и там остаются литеры допустимой лексической конструкции). После устранения расхождения типа на выходе 36 устанавли вается нулевой сигнал и формируется сигнал Готово на выходе 35 устройства, который .инициирует подачу последовательности импульсов от внешнег устройства на вход 31 устройства для считывания сформированной лексемы и соответствующих ей терминальных литер иэ регистра 2, Одновременно единичный сигнал Готойо поступает на инверсный вход элемента И 16, блоки- рун прохождение импульса от одновибI - .

ратора 28. Первый импульс на входе 31 стробирует выдачу лексемы на выхо 33 устройства (аналогично ситуации 2а; см. фиг. 4, такт L -«-К) , Если тип сформированной лексемы Идентификатор или Константа, то на выходе блока 1 присутствует единичный Сигнал, который совместно с единич- ,ным сигналом с пятого выхода дешиф- ратора 3 открывает И 15. Импульс 2 через элемент 24 задержки устанавливает триггер 7 в единичное состояние. Второй и последующие импульсы с входа 31 через элемент И 13 инициируют выдачу литер, соответ- ствукщих сформированной лексеме, внешнему, устройству для формирования соответствзпощих временных таблиц (аналогично ситуации 2в; см. фиг. 4,

такт L +K - L +2K-I), Наличие единичного сигнала на выходе блока 1 обеспечивает блокировку прохождения ийпульсов с Входа 31 через элемент И 17 и установку триггера 6 в единич иое состояние. Если тип сформированной лексемы Разделитель, то на выходе блока 1 установлен нулевой сигнал, которьтй поддерживает элемент И 15 в закрытом состоянии, так что прохождение импульсов с входа 31 через данный элемент блокируется (вьщача литер разделителя из регистра 2 не осуществляется, так как формирование таблицы разделителей во время трансляции не происходит). В данном слунае импульс с входа 31 одновременно со стробированием выдачи лексемы, через элемент И 17, открытый по инверсному входу нулевым сигналом с выхода блока 1, устанавливает триггер 6 в единичное состояние и через элемент ИЛИ 19 устанавливает регистр 2 и счетчик 5 в нулевое состояние, подготавливая к приему и ,анализу последующих конструкций записи .

Ситуация 5S (см. фиг. 5). В какой-либо позиции после, ()-й может встретиться комментарий, который начинается служебным символом используется лишь для этой цели и им заканчивается. После приема символа в регистр 2 унитарный код 00001 с выходов дешифратора 3 инициирует его анализ блоком 1. Импульс с выход одновибратора 28 через элемент И 16 и далее через элемент ИЛИ 18 устанавливает триггер 6 в единичное состояние, обеспечивая формирование сигнала Запрос , на выходе 34 устройства. Процесс считывания литер продолжается аналогичным образом до тех пор, пока не считан закрьгаакщий символ , Считывание второй литеры приводит к формированию единичного сигнала на выходе первого признака блока 1. Данный сигнал через элемент ИЛИ 19 обеспечивает установку регистра 2 и счетчика 5 в нулевое состоя- ние (литеры комментария игнорир тот- ся). :Единичный импульс с выхода одно- вибратора 28 через элемент 16 И и через элемент ИЛИ 18 обеспечивает уста новку триггера 6 в единичное состояние (формируется запрос на подачу очередной литеры).

Ситуация 58 (аналогична ситуациям 2 и 45, см. фиг. 2S или фиг. 35).

Если.в какой-либо позиции после (К+)-й встречаются литеры Lj и при зтом регистр 2 пуст, то анализ литеры Ц приводит к формированию еди- ничного сигнала на втором выходе признака блока 1. Данный сигнал через элемент ИЛИ 18 устанавливает триггер 6 в единичное состояние, обеспечивая формирование запроса на подачу очерёдных литер входной цепочки (пробелы игнорируются).

Подмножество состояний 6. Последовательно считываются литеры (Ь-2)-й; а-1)-й и L-й позиции за- писи. При этом L-й позиции записи соответствует нулевое состояние счетчика 4 позиций, т.е. после достиже- .кия максимального (L-l)-ro состояния счетчик 4 автоматически перехо- дит в нулевое состояние. Данные состояния счетчика 4 позиций приводят к формированию единичного сигнала на третьем выходе дешифратора 3, обеспечивающего установку запроса на под.- чу очередной литеры записи и блокир ку блока 1 (аналогично подмножеству состояний 1), т.е. литеры номера записи игнорируются при лексическом анализе. После анализа L-й литеры данной записи поступает первая литера следующей, и работа устройства происходит аналогично. При отсутствии готовых к анализу записей (программы) устройство может йеопределен- но долго находится в состоянии ожидания: на выходе 34 устройства присутствует единичный сигнал Запрос и схемы устройства находятся в исходном состоянии.

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

Формула и 3 о б р е те кия

Устройство для лексического ана- лиза программ, содержащее регистр, информационный вход которого является инфбрмагщонньгм входом устройства, два триггера четыре элемента И, первый элемент ИЛИ, дешифратор две группы элементов И, первые входы которых соединены с первым еьскодом ре- гнстра, а выходы - подключены к йервым входам группы элементов МШ, вторые входы группы элементов ИЛИ соединены соответственно с выходами элементов И второй группы, выход первого элемента И соединен с первьп входом второго элемента И и с первыми входами элементов И второй группы выход второго элемента И соединен с первым входом первого элемента ИЛИ, выход третьего элемента И соединен с вторыми -входами элементов И первой группы, выход четвертого элемента И соединен с вторым входом первого элемента ИЛИ, отличающееся тем, что, с целью расширения функциональных возможностей за счет обеспечения преобразования цепочки терминальных слов программы в цепочку лексем стандартной длины, осуществления логического контроля и обеспечения режима -работы запрос-ответ в процессе трансляции, в него введены счетчик позиций, счетчик литер, элементы задержки элементы И, ИЛИ, элемент Ш1И-НЕ и блок преобразования кода литер в код лексем, информационны выход которого соединен с вторыми входами элементов И второй группы, выходы разрядов счетчика лит..;р подключены соответственно к входам элемента ИЛИ-НЕ, выход которого соединен с первым входом четвертого элемента И, вход пуска устройства соединен с третьим входом первого элемента ИЛИ, выход которого соединен с единичным входом первого триггера, единичный выход которого является выходом запроса устройства, вход ответа устройства соединен с нулевым входом первого триггера, нулевой вы- ход которого соединён с первым сдвигающим входом регистра, с суммирующим входом счетчика позиций и через первый элемент задержки - с суммирующим входом счетчика литер и разрешающим входом дешифратора, вход выдачи устройства соединен с первыми входами первого и третьего элементов И и через второй элемент задержки - с первьот входом пятого элемента И, выход которого соединен с единичным входом второго триггера, единичньй вбгход которого соединен с вторым входом третьего элемента И, нулевой выход соединен с вторьм входом первого элемента И j вьжоД третьего элемента И соединен с первым входом второго элемента ИЛИ и через третий

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

1(3}.

.,

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

название год авторы номер документа
Устройство для лексического анализа 1986
  • Соколов Сергей Алексеевич
  • Гахов Роман Павеласович
  • Кащишин Геннадий Кириллович
  • Курносов Михаил Алексеевич
  • Савченко Сергей Валентинович
  • Грахов Сергей Леонидович
SU1361578A1
УСТРОЙСТВО ДЛЯ ОБРАБОТКИ СИМВОЛЬНОЙ ИНФОРМАЦИИ 1991
  • Арбузова Т.А.
  • Валов А.А.
  • Герасимов И.В.
RU2010319C1
Устройство для лексического анализа программ 1987
  • Фомичев Владимир Степанович
  • Разумовский Геннадий Васильевич
  • Познянский Андрей Измаилович
  • Сафъянников Николай Михайлович
SU1418757A1
Устройство для лексического анализа метамикроассемблера 1982
  • Бекасов Александр Алексеевич
  • Кисельников Владимир Максимович
  • Торгашев Валерий Антонович
  • Шкиртиль Вячеслав Иванович
SU1034043A1
Устройство для лексического анализа метатранслятора 1983
  • Александрова Людмила Анатольевна
  • Бекасов Александр Алексеевич
  • Биспен Вероника Николаевна
  • Шкиртиль Вячеслав Иванович
SU1153329A1
Устройство для перевода выражений в польскую инверсную запись 1982
  • Брякалов Геннадий Алексеевич
  • Булгаков Александр Александрович
  • Захаров Анатолий Иванович
  • Калмыков Николай Андреевич
  • Ковалев Виктор Васильевич
SU1130879A1
Устройство для ввода данных 1976
  • Платонов Валентин Алексеевич
SU564630A1
Адаптивное устройство для обучения языкам 1987
  • Шеншев Леонид Владимирович
SU1441445A1
Устройство для сопряжения ЭВМ с общей магистралью 1990
  • Чудов Александр Алексеевич
  • Гриневич Анатолий Владимирович
  • Беспалов Сергей Викторович
  • Жевненко Юрий Иванович
SU1728867A1
Устройство для управления динамической памятью 1990
  • Аникеев Геннадий Евгеньевич
  • Старостин Сергей Алексеевич
SU1783582A1

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

Реферат патента 1986 года Устройство для лексического анализа программ

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

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

i mottm

t/noK/n

J4

33

tpue.4J4

фаг. 5

Редактор С. Лисина

Заказ 3294/51 .Тираж 671 . : Подписное

ВНИИПИ Государственного комитета СССР

по делам изобретений и открытий 113035, Москва, Ж-35, Раушская наб., д. 4/5

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

Составитель А. Жеренов .

Техред Н.Бонкало Корректор Л.Патай

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

Устройство для лексического анализа 1976
  • Платонов Валентин Алексеевич
SU690497A1
Приспособление для точного наложения листов бумаги при снятии оттисков 1922
  • Асафов Н.И.
SU6A1
Авторское свидетельство СССР
Устройство для лексического анализа метамикроассемблера 1982
  • Бекасов Александр Алексеевич
  • Кисельников Владимир Максимович
  • Торгашев Валерий Антонович
  • Шкиртиль Вячеслав Иванович
SU1034043A1
Приспособление для точного наложения листов бумаги при снятии оттисков 1922
  • Асафов Н.И.
SU6A1

SU 1 238 103 A1

Авторы

Соколов Сергей Алексеевич

Курносов Михаил Алексеевич

Савченко Сергей Валентинович

Гахов Роман Павеласович

Николаев Андрей Николаевич

Даты

1986-06-15Публикация

1984-10-30Подача