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

 

УСТРОЙСТВО ДЛЯ ЛЕКСИЧЕСКОГО АНАЛИЗА МЕТАТРАНСЛЯТОРА, содержащее регистр ввода, информационный вход которого является информационным входом устройства, блок памяти кода алфавита и генератор синхроимпульсов , отличающееся тем, что, с целью расширения функциональных возможностей за счет увеличения числа анализируемых языков программирования, в него введен блок шифрации последовательности простых разделителей, блок шифрации последовательности специальных разделителей , блок выполнения смежных символов, блоки памяти разделителей, меток и идентификаторов, выход каждого из которых является соответствующим выходом устройства, выходы разрядов регистра ввода соединены с первым информационным входом блока шифрации последовательности простых разделителей, синхронизирующий , информационный выходы и выход признака конца оператора которого соединены соответственно с входом сдвига регистра ввода, с первым информационным входом и входом признака блока шифрации последовательности специальных разделителей, информационный вход и выход признака конца оператора которого соединены соответственно с первым информационным входом и входом признака блока выделения служебных символов, выход признака Разделитель которого соединен с входом признака блока шифрации последовательности простых разделителей, первый, второй и третий управляющие входы блока вьщеления служебных символов соединены соответственно с входами разрешения (Л записи блока памяти разделителей, блока памяти меток и блока памяти идентификаторов, информационные входы которых соединены соответственно с первым, вторым и третьим информационньми выходами блока выделения служебных символов, синхроел низирующие и вторые информационные Од вхады блоков шифрации последовасо ю со тельности простых разделителей, шифрации последовательности специальных разделителей и блока вцделения служебных символов соединены соответственно с выходом генератора синхросигналов и с выходом блока памяти кода алфавита, причем блок шифрации последовательности простых разделителей содержит первый регистр , группы элементов И, первый дешифратор, триггеры, узел памяти, элементы И, ИЛИ, первую группу элементов ИЛИ и первый шифратор, входы которого соединены соответственно с

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

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

РЕСПУБЛИК

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

К АВТОРСНОМУ СВИДЕТЕЛЬСТВУ

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

ПО ДЕЛАМ ИЗОБРЕТЕНИЙ И ОТКРЫТИЙ (21) 3655682/24-24 (22) 24. 10. 83 (46) 30. 04. 85. Бюл. 9 16 (72) Л.А. Александрова, А.А. Бекасов, В.Н. Биспен и B.È. Шкиртиль (71) Ленинградский институт авиационного приборостроения и Ленинградский научно-исследовательский вычислительный центр АН СССР (53) 681.325 (088.8) (56) 1. Авторское свидетельство СССР

Ф 519715, кл; С 06 F 15/04, 1974.

2. Авторское свидетельство СССР

9 1034043, кл. С 06 F 15/04, 1982 (прототип). (54)(57) УСТРОЙСТВО ЛЯ ЛЕКСИЧЕСКОГО

АНАЛИЗА ИЕТАТРАНСЛЯТОРА, содержащее регистр ввода, информационный вход которого является информационным входом устройства, блок памяти кода алфавита и генератор синхроимпульсов, отличающееся тем, что, с целью расширения функциональных воэможностей за счет увеличения числа анализируемых языков программирования, в него введен блок шифрации последовательности простых разделителей, блок шифрации последовательности специальных разделителей, блок выполнения смежных символов, блоки памяти раэделителей, меток и идентификаторов, выход каждого из которых является соответствующим выходом устройства, выходы разрядсв регистра ввода соединены с первым информационным входом блока шифрации последовательности простых разделителей, синхронизирующий, информационный выходы и выход признака конца оператора которого

„„SU„„1153329

4(5Ц С. 06 F 15/04; С 06 Р 9/44 соединены соответственно с входом сдвига регистра ввода, с первым информационным входом и входом признака блока шифрации последовательности специальных разделителей, информационный вход и выход признака конца оператора которого соединены соответственно с первым информационным входом и входом признака блока выделения служебных символов, выход признака "Разделитель" которого соединен с входом признака блока шифрации последовательности простых разделителей, первый, второй и третий управляющие входы блока выделения служебных символов соединены соответственно с входами разрешения записи блока памяти разделителей, блока памяти меток и блока памяти идентификаторов, информационные входы которых соединены соответетвенно с первым, вторым и третьим информационными выходами блока выделения служебных символов, синхронизирующие и вторые информационные входы блоков шифрации последовательности простых разделителей, шифрации последовательности специальных разделителей и блока выделения служебных символов соединены соответственно с выходом генератора синхросигналов и с выходом блока памяти кода алфавита, причем блок шифрации последовательности простых разделителей содержит первый регистр, группы элементов И, первый дешифратор, триггеры, узел памяти, элементы И, ИЛИ, первую группу элементов ИЛИ и первый шифратор, входы которого соединены соответственно с

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

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

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

2 зовано для лексического анализа в трансляторах с языком программи1153329 рования, которые производят анализ операторов и, если все правильно, формируют последовательности команд.

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

15 индексных позиций и регистр номера массива Ã13.

Основным недостатком аппаратно реализованного в устройстве грамматического разбора программы на

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

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

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

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

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

1153329

10 15

35

45

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

1О I5

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

1153329

1О входом второго коммутатора, выход элементов И шестой группы является первым информационным выходом блока, первый и второй выходы второго коммутатора являются соответственно вторым и третьим информационными выходами блока, выход шестого элемента ИЛИ соединен с вторым входом двенадцатого элемента И.

На фиг,1 приведена блок-схема устройства, на фиг.2 — схема блока шифрации последовательности простых разделителей; на фиг.3 — схема бло/ ка шифрации последовательности спец. разделителей; на фиг.4 — схемы блока вьделения символов и блоков памяти; на фиг.5 — пример эпюр напряжений генератора синхроимпульсов", на фиг.6 — глгоритм работы устройства, на фиг. 7 — алгоритм работы блока шифрации последовательности простых разделителей; на фиг. 8— алгоритм работы блока шифрации последовательности специальных разделителей.

Устройство содержит регистр 1 ввода, блок 2 памяти кода алфавита, генератор 3 синхроимпульсов, блок 4 шифрации последовательности простых разделителей, блок 5 шифрации последовательности специальных разделителей, блок 6 вьделения служебных символов, блок 7 памяти разделителей, блок 8 памяти меток, блок 9 памяти идентификаторов, вход 10 устройства, шифратор 11, дешифратор 12, группы элементов И 13-15, триггеры 16-18, узел 19 памяти, триггер 20, элементы ИЛИ 21 и 22, группу элементов ИЛИ 23, элементы И 24-28, регистр 29, выход 30

"Начало комментария", выход 31

"Конец комментария", выход 32 "Простой разделитель", выход 33 "Информационный символ", выход 34 "Конец оператора", регистр 35, шифраторы

36 и 37, дешифратор 38, регистр 39, триггер 40, элементы И 41-46, коммутатор 47, элемент НЕ 48, группу элементов И 49,50,группу элементов ИЛИ 51, элементы ИЛИ 52 и

53, регистр 54, выход 55 "Информационный символ", выход 56 Простой разделитель", выход 57 "Конец оператора", вход 58 последовательности символов, вход 59 алфавита, вход

60 разрешения, выход 61 числа сдвигов, выход 62 управления, выход 63

45 мер "=))-"Pa код. Данное преобразование позволяет сжать информацию из формы, удобной для человека, в форму, удобную для машины.

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

9 памяти идентификаторов предназна5

40 кода. последовательности разделителей, элемент ИЛИ 64, триггер 65, регистр 66, дешифратор 67, триггер 68, элементы И 69-71, группу элементов И 72, элемент ИЛИ 73, группу элементов И 74, регистр 75, коммутатор 76, выход 77 "Информационный символ™, выход 78 "Конец оператора", выход 79 "Разделитель метки", выход 80 "Разделитель"., шифратор 81, элемент И 82, элемент ИЛИ 83, регистр 84, счетчик

85, регистр 86, счетчик 87, регистр 88 и счетчик 89.

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

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

25

На первом этапе из входной строки (оператор) убираются все комментарии и заменяются последовательности простых разделителей на один служебный разделитель (например пробел).

Это осуществляется с помощью пяти чен для хранения кодов имен иден- . тификаторов (лексем).

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

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

Для наглядности все символы алфавита языка программирования можно разделить на группы; информационный символ, простой разделитель, символ "Начало комментария", символ

"Конец комментария", символ "Конец оператора", символ "Разделитель метки", специальный разделитель. Каждо- 45 му коду символа алфавита языка программирования можно поставить в соответствие управляющий код, по которому производят необходимые действия. Для языков программирова- ния высокого уровня лексический ана" лиз можно выполнить в три этапа. групп символов. Так, для первой группы символов производится простая перезапись из регистра 1 в регистр 29 блока 4. Для второй группы символов производится замена символа на код внутреннего разделителя и, если они продолжаются, уничтожаются до тех пор, пока не встретится символ из других групп.

Для третьей группы символов производится запрет пропуска символов из регистра 1 в регистр 29 блока

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

На втором этапе содержимое входной строки в-зависимости от типа лексемы (разделитель, метка или идентификатор) записывается в соот— ветствующие блоки 7, 8 и 9 памяти.

Тем самым кончается лексический анализ оператора языка программирования.

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

Этап

В регистре 1 хранится строка текста микропрограммы. С выходов разрядов регистра 1 код крайнего левого символа поступает на вход шифратора 11, а на другой вход шифратора t1 поступает код номера алфавита с выхода блока 2, По коду символа н коду номера алфавита шифратор 11 выдает код, соответствующий группе символа (информационный символ 33, простой разделитель 32, символы начала 30 или конца 31 комментария, символ 34

"Конец оператора"), который подается на вход дешифратора 12 блока 4.

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

На выходе 33 дешифратора 12 вырабатывается единичный сигнал, который поступает через элемент ИЛИ 21

11533 на вход элемента И 24. В зависимости от состояния триггера 16, который определяет, комментарий это нли нет, возможны два варианта дей5 ствий:

1. Да, это комментарий. Тогда на выходе триггера 16, а следовательно, и на выходе элемента И 24 появ- . ляется нулевой сигнал, который

10 поступает на вход группы элементов И 13 и запрещает пропуск кода символа из регистра 1 в регистр 29.

Нулевой сигнал с элемента И 24 поступает на вход элемента И 25 и запрещает пропуск синхросигнала е блока

3 на регистр 29, по которому производится сдвиг информации. В то же время элемент И 26 закрыт, так как на выходе 32 дешнфратора 12 вырабатывается нулевой сигнал, который через элементы 17, 20 и 27 поступает на вход элемента И 26. Записи символа в регистр 29 не происходит в связи с тем, что на выходе элемен- 25 та И 26, а следовательно, и на входе регистра 29 присутствует нулевой сигнал. Синхроимпульс с блока 3 поступает на вход регистра 1, по которому происходит сдвиг информации на один символ. После сдвига синхроимпульс разрешает выдавать информацию с выхода шифратора 11 на вход дешифратора 12.

2. Нет, это не комментарий.

Тогда на выходе триггера 16, а следовательно, и на выходе элемента 24 появляется единичный сигнал, который поступает на вход группы элементов И 13, разрешая пропуск кода 40 символа из регистра 1 в регистр 29, на вход триггера 17 (хранителя информации о последовательности разделителей), устанавливая его в нулевое состояние, на вход элемента И 25, разрешая пропуск синхросигнала с блока 3 через элементы.И 25, ИЛИ 22 на вход регистра 29, по которому .происходит запись кода символа в крайние правые разряды регист. ра 29, а затем сдвиг информации влево на символ содержимого, а также сдвиг влево на символ содержимого регистра 1. Это выполняется только при установке трйггера 16 в положение "Не комментарий" (на инверсном выходе триггера 16 - единичный сигнал). Если это не первый разделитель, то элемент И 27 выраба29

14 . тывает нулевой сигнал, запрещающий запись кода разделителя в регистр

29, и происходит только сдвиг влево содержимого регистра 1 на один символ.

Символ "Начало комментария".

На выходе 30 дешифратора 12 блока 4 вырабатывается единичный сигнал, который поступает на вход триггера 1 6 и устанавливает его в. нулевое состояние. Тем самым запрещается запись символов в регистр 29 с помощью блокировки элемента И 24 до тех пор, пока не появится символ

"Конец комментария", по которому на выходе 31 дешифратора 12 блока

4 вырабатывается единичный сигнал, который поступает на вход триггера 16 и устанавливает его выход в единичное состояние. Тем самым разрешается работа всех элементов устройства.

Символ "Конец оператора".

На выходе 34 дешифратора 12 блока 4 появляется единичный сигнал, который поступает на вход установки в нуль триггера 18, запрещая пропуск синхросигналов через элемент И 28 на вход сдвига регистра 1.

Кроме того, единичный сигнал с выхода 34 поступает через блоки 21, 24, 25 и 22 иа вход .регистра 29,разрешая сдвиг информации, и через .блоки 2t, 24, t3 и 23, разрешая запись кода в регистр 29, а также разрешает запись информации из регистра 29 через группы элементов И 15 в регистр 35 блока 5 и синхронизацию рабаты блока 5 за. счет установки в единичное состояние триггера 40, который разрешает пропуск синхросигнала из блока 3 через элемент И 41 на элементы блока 5.

Этап 2.

С выхода регистра 35 код крайнего левого символа поступает на вход шифратора 36, на другой вход которого поступает код номера алфавита с выхода блока 2. По коду символа и коду номера алфавита шифратор 36 выдает код, соответствующий группе символа (информационный символ. 55, Простой разделитель" 56, "Конец оператора" 573, который подается на вход дешифратора 38.Дешифратор 38 на одном.из трех выходов в зависимости от поступающего уп1153329

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

Информационный символ. ра выходе 55 дешифратора 38 вырабатывается единичный сигнал, который поступает на вход элемента И 45 и разрешает запись кода символа через элементы И 49.в регистр 54, а также пропуск синхросигнала через элемент ИЛИ 53 на вход сдвига регистра 54. После этого производится сдвиг содержимого регистров 35 н 54 на один символ.

Символ "Простой разделитель".

На выходе 56 дешнфратора 38 блока 5 вырабатывается единичный сиг- 2О нал, который разрешает работу шифратора 37 (вход 60). Шифратор 37 ставит в соответствии с кодом последовательности разделителей (код большой рядности) байтовый код и признак обнаружения заданной последовательности. С выхода 63 шифратора 37 код поступает через элементы ИЛИ 51 на вход регистра 54 для записи. С выхода

62 шифратора 37 код поступае на ЗО вход установки триггера 65, который выдает сигнал разрешения работы на элемент И 43 и коммутатор 47 для управления сдвигом содержимого регистра 35 на k символов, Это осуществляется следующим образом. С выхода 61 шифратора 37 унитарный код постунает в регистр 39. Старший разряд регистра 39 управляет работой элементов И 42, 43. Если s старшем разряде регистра 39 едйница, то элемент И 42 пропускает синхросигнап на вход коммутатора 47, который пропускает его на вход сдвига регистра 35, а на элемент И 44 посту- 45 пает нулевой сигнал, который блокирует пропуск синхросигнала на регистр 54; Если в старшем разряде регистра 39 нуль, то оН поступает на вход сброса триггера 65, который запрещает сдвиг на k символов регистра 35 при единичном сдвиге регистра 54 и разрешает обычную синхронизацию 1 в 1. Таким образом, осуществляется сдвиг на М символов при найденной последовательности, а при ненайденной осуществляется простая запись кода разделителя в регистр 54 и сдвиг на один символ содержимого регистров 35 и 54.

Символ "Конец оператора".

На выходе 57 дешифратора 38 появляется единичный сигнал, который разрешает запись символа в регистр

54 через элементы И 49 и ИЛИ 51, устанавливает триггер 40 в нулевое состояние, тем самым блокируя пропуск синхроимпульсов в блок 5 и разрешая вывод содержимого регистра

54 через элементы И 50 в регистр 66 блока 6.

Этап 3 °

С выхода регистра 66 код символа поступает на шифратор 81, который формирует управляющий код для дешифратора 67. Дешифратор 67 на одном из четырех выходов формирует единичный сигнал, который и управляет работой блока 6. Четыре выхода дешфратора

67 соответствуют четырем группамсимволов, поэтому возможны следующие действия.

Информационный символ.

На выходе 7? дешифратора 67 находится единичньй сигнал, который поступает на элементы И 70 и 74 и разрешает запись кода символа в регистр 75, а затем сдвиг содержимого регистров 66 и 75.

Символ "Конец оператора"-.

На выходе 78 дешнфратора 67 находится единичный сигнал, который разрешает запись кода разделителя в блок 7 памяти разделителей и запись содержимого регистра 75 через коммутатор 76 в блок 9 памяти идентификаторов, а также блокирует свою синхронизацию и включает синхронизацию блока 4.

Символ "Разделитель метки".

На выходе 79 дешифратора 67 находится единичный сигнал, который разрешает запись содержимого регистра 75 через коммутатор 76 в блок 8 памяти меток.

Символ Разделитель".

На выходе 80 дешиюратора 67 находится единичный сигнал,. который разрешает запись кода разделителя в блок 7 памяти разделителей и запись ссщержимого регистра 75 через коммутатор Уб в блок 9 памяти идентификаторов.

Для работы с несколькими алфавитами для разных языков программирования предусмотрен блок 2 памяти кода алфавита (языка программирования), который позволяет быстро переходить от одного языка к другому путем подачи нового кода. При использовании системы кодирования символов семиразрядными кодами (128 символов) в случае, если постоянное запоминающее устройство (ПЗУ) имеет объем 512 8-битовых слов, адрес должен иметь 9 разрядов

Поэтому в один кристалл используемого ПЗУ К556РТ5 можно записать ч различных алфавита. Семь младших разрядов адреса ПЗУ К556РТ5 используют как первый вход символа блоков 11, 36, 37, 67, а два старшихкак второй вход блоков 11, 36, 37, 18

153329

67,,которые реализованы на ПЗУ(К556РТ5.

Предлагаемое техническое решение позво яет уменьшить временные

S затраты на лексический анализ программ за счет аппаратной реализации и позволяет работать с несколькими алфавитами для различных языков программирования ° Например, для лексического разбора одного оператора на языке АЛГОЛ-60 на

38M БЭСМ-6 требуется от 6 мкс до

1,2 мс в зависимости от разбираемого оператора, а предлагаемое устройство при периоде синхроимпульсов 100 нс выполняет ту же операцию за Ю нс — 12,3 мкс, так как скорость работы на порядок выше.

11533?9

1153329

1353329

Отрссигнапы

> f53329

Начат

КОМ@ оибо Нет а ало кпинеария"

Уота наба признака юннеюж/М

Я 1 иг ре D рфрж. и, регжтра иг сииРОП инй алЗюи/РОВ нетки

Hem рОсяРЙ хззйИРЮЪ "

hem

john р рориация

Запись синода 8

ЮыхЫний ,Регисптр

С игю на

Сиибои cuikpx.

Atx. регистра а яь" акец лератаНегп

Иийжация .

Пи идки ин щ ц йжи каюенариЯ

Яа

Cdpac прил ка раююмиари7 ЮР,Запись утки

8 ааиять юепиа ил be. дублера лигь и нл иlйУ

И П ил ptj%7

00нуяЕние

Юыходнгиа

bj рера а йепг коинентария

Й9фююие Ька Ваго

4 Урера

Досуг ламами иеток иа суюйооЮ

О иг паняпги иденами рикше

И hd A èì3griu6

ВИЙЕдениа nD гЫ2тай урамМи ею сщ ищия лаювВ-. гиищиак ли ажй дай ккЬч

nues aggro

» м4а 8nmeb рг и1МиагеФей

С -иг аюяти

РалмЬж теюейнй 1 ЬУф ц

1153329

НУЛЮ фйЬу uu cue

Q30p ит

Хонец а Жю kern

НОМОМ конненО,Ойдо 7а

3cmaeo&a лоизнака качюенлгария б 7 г".. uz Руе%7 собери. юх,,гегисглоа нг

1 сим8ао смайл Hem азиат ель

Yern „9 6Î, Конец onePQIFl ?а

Японо ка ггуднока бппмробки сиихронизсщии

dnàêà4. Janucb коба сии5опа55ык

Р га".лрр и ггВог бпебо го и 1

Сим П

pnucb pneum

d и &х. peiucmpa покаг 8о Ь.

peiucnsp бпо а 5

Разрешение пропуска юикроггипупьсоб б олок5 онбо Явп

Фонем конмжРЯБ фа ярос лражока коюяна ария

Ю g

aaucb ко ,юаню,ащй кжв Фбгкг региапр сийб соМржиного Рык ре гиг.т а чаи k rn аювмлащ

«7а нрор- )Фбп ационный инА л

Заамь каУа синЯма 8 Ьк. ггбся7ф

1153329

awanO инйы //юг РазЖлшпепБ

Hera

nuCb СиНРИа ф хоонпо реzucrnp

gj7usa 5 г си ин го фыр. гислграей на f сжал иг со рх»ар рго Юх. регис убою я блею на fсиибол.Конец

Фиг.8

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

Редактор И. Рыбченко Техред C.éîâæèé Корректор С. Черни

Заказ 2506/40 Тираж 710 Подиисное

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

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

Филиал ППП "Патент", r Ужгород, ул. Проектная,4 ин инщвчацаиный

Да

Л Яалельносп7ь алел

Уарращя лослейИЬлельнжrw разйувлелеи юджин

Зались кода

8 Юых. pezucmp лоха 5

Сдпг содфжинпо Arx. реиг тра йюка Б на 1сюЩю

С zай„ важ

pezuempu ииЬинулоследада нослв рал Ьюаелеи Еюй

Не/и ии50л

@ма паерплг7,ф7 Ф лиъ сон а Да, pewcmp олока и сооиг л. Фм 1амЖю ка Фоки,ро нннронизации

Дйжи 5

ZbCP ддфИ ю . регист,щ

Фока 5 Ф8». деист ЗФокая

Разрешенис прилука син.»роинлульсо8 дюж 6

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

 

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

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