Предлагаемое устройство относится к области использования в вычислительной технике алгоритмических языков и служит для проверки последовательностей символов, построенных на определенной совокупности правил, пазываемых грамматикой языка.
Известно устройство, используюо1ее принцип синтаксических карт для схелгной синтаксической проверки вводимых в машину программ, записанных на алгоритмическом языке. Оно содержит входной регистр, дешифратор основных синтаксических понятий, регистр поля анализа, логическую схему o6 iaружеиия синтаксически неверной конструкции в проверяе МОЙ программе, логическую схему перехода на новое поле анализа, логическую схему формироваиия поля анализа, стековую память, блок счетчиков и блок виешней иидикации. Однако в этом устройстве схема обнаружения синтаксически невериой констр кции в проверяемой программе, схема перехода на повое поле анализа и схема формирования поля анализа для практически используемых алгоритмических языков весьма громоздки и составляют 90-95 /о оборудования всего устройства. Поэтому при переходе на новый алгоритмический язык, пмеюш;ий другие синтаксические карты, замена логических схем практически сводится к построению нового устройства. Затруднепо также виесепие
исправлеипй и доиолнений в связи с исправлениями и дополнениями в исходном алгоритмическом языке.
Само устройство для практического языка иочти полностью занимает шкаф ВМ. Однако при современной тендеииии снабжения машин несколькилп алгоритмическими языками, построение такого устройства может оказаться нецелесообразным.
В предложенном устройстве эти недостатки устранены благодаря использованию схемы сравнения и долговременноГ памяти, выходной регистр которой связан с регистром адреса sToii памятп и схемой сравнения, связанной со входным регистром проверяемой ирогра.ммы и стековой памятью, которая связана с регистро м адреса долговременной памятп.
Па чертеже показано предлагаемое устройство.
Устройство состоит из входного регистра /, схемы сравиения 2, выходного регистра 3, долговременно памятп 4 (ДЗУ), регистра адреса 5 и стэковой памяти 6.
В 4 записывается грамматика языка в одного массива. Весь массив условно разбит на некоторые подуровни, в каждом из которых располагается несколько (определенное чпсло) члементов :массива. Каждый элеMCiiT .массива занимает одно слозо ДЗУ и состоит из селш следующих частей:
-код символа языка (занимает logon разрядов, где /(--число термов в языке);
R2-иризнак заиисн в стековую память (занимает 1 разряд);
Я . -ирнзнак чтения из стековой иамяти (занимает 1 разряд);
R4 - признак окончания некоторого подуровня массива (занимает 1 разряд);
jR-5 -признак того, что символ в R1 этого элемента массива может быть носледнпм в нрограмл1е, заипсаиио на данном алгоритмическом яз1)1ке (:,ainiMaет 1 разряд);
R6 - адрес начала соответствуюн1ето даипоул элементу подуровня .массива (занимает в общем случае Пойз - разрядов, где L-дл1П1а всего маееива);
ЯУ -адрес соответствующего данному элементу эле.меита массива, у которого в R2 стоит признак записи в стековую память;
R7 - пусто, если в R3 пет признака чтения пз стековой иамяти (в общем с.тучае так же занилшет log.L разрядов элемента ассива).
Таким образом, в общем случае элемент указанного массива грамматики языка занимает (logv; -i-4+2 log2L) разрядов.
Устройство работает еледующим образо.м.
В начале стековая память свободпа, регистр адреса отмечает адрес иачального подуровня массива, у которого в записаны коды символов, которые мотут быть первыми в программе данпого алгоритмического языка.
Первый проверяемой протра: 1мы записывается на uxozuioii регистр /. После этого пз ДЗУ 4 считывается первый элемент начальиого подуровня массива ;а выходной регистр -Х и с иомоидью схемы 2 производится сравпеине кода R па выходном periiCTpe с кодом па ре1Ч1стре У.
Если указаииые коды не сравнились, то к коду адреса иа 5 ирибавляется
едшнпа и считывается следующий элемент на альио1Ч) подуровия массива. Э нродолжап действия
ются до элемеита, у которого в R4 стоит ирпзиак, либо д,о элемента, у которого код R1 на регистре . совпал с кодо иа регистре /. В первом елучае вырабатывается сигнал синтаксической ошибки (СОШ), так как ни один из элементов в R1 начального подуровня массива не сравннлся с первым сп.мво,:10м проверяелюй программы. Папомншг, что в R1 начального подуровия массива заппсаиы кодь символов, которые могут быть первыми в програм.ме данного алгоритмичееко1о языка. Если первый с 1мвол проверяемой программы не сравнился пп с одним пз символов данного нодуровия, то значит он ошибочио иаинсан нервым, т. е. написан синтакснчески неверно. Во втором случае, когда код R на регистре 3 совпал с кодом на регистре 1, иа регистр 5 переписывается код R6 с выходного регистра и тем самым записывается адрес начальпого эле.мепта подуровня массива, у которого в R} записаны коды символов, которые в проверяемой программе могут идти следов за
символом на j:ierneTpe 1.
После этого на регистр / вызывается следуютций символ нроверяемой программы, снова считываются на выходной регистр . элементы подуровня, отмечаемого адресом иа реJHCTpe 5, также пропзво.дптея сравненпе R1 счита 1иых кодов с па регистре / и т. д. аиа.югично оииса 1ио.му.
Эти дейс1вия соответствуют элементам масС1И5а ;J3i 4, у которых отсутстч;уют призпаки R2, R3.
В случае, если элемент па регистре 3. У которого R1 совпал с кодом иа регпстре /, имеет в R2 призиак заипеп в стековую намять, то записи кода R6 на регнетр 5 нредшествует
заинсь текущ.его значения кода на регпстре 5 в стековую намять. В остальном действия не отличаются от оннсанных.
В случае, если элемент на региетре 3, у которого R1 совнал с КОДОЛ1 иа регпстре /, имеет
в R3 прпзпак, то заииеи кода R,6 на регистр 5 предшествует сравпепне кода па вершпие стековой с кодом R7 иа регистре 3.
Если последние коды совпали, то содержимое верхней ячейки стека удаляется и производятся оиисанные выше действия ио переппсп кода па регпстр 5 i-i т. д. Если эти коды пе совпали, то к содержимому регистра 5 прибавляется и действия производятся с (следуюпи1м) элементо.м данного иодуровия .массива.
В койне ироверки последний символ проверяемой програ.ммы обязательпо должен сравниться с так1ьм элемеито.м соответствующего подуровия MacciiBa, - которого в R5 иа входпом r;eiHCTj)e 3 стоит признак. В иротивном с.тхчае и|Х)веряе.мая iiporjiaMMa сч1 тается недоннсаиио , что также соответствует условп о выработки сигнал; сиитаксической ошибки.
11 |1 е д м е т и 3 о б р е т е и и я
ycTpoiiCTBo снитаксическото контроля програм.м, отличающееся тем, что, с нелью уирощення устройства, уменьшения eio габарнтов и повьппеиня надежности еинтакснческого контроля, оно содержггт ехему сравнения и долговремеииую память, В1з1ходиой регистр которой связан е peiHCTpoM адрееа этой долговременной на.мятн и схемой сравнения, евязанной с вход1-идм регистром проверяемой программы и стековой памятью, которая в свою очередь связана с регпстром адреса долговремеппой иа.мятн.
название | год | авторы | номер документа |
---|---|---|---|
УСТРОЙСТВО для СИНТАКСИЧЕСКОГО КОНТРОЛЯПРОГРАММ | 1969 |
|
SU247628A1 |
УСТРОЙСТВО СИНТАКСИЧЕСКОГО КОНТРОЛЯ ПРОГРАМB^iBJii-IOTei-CA | 1972 |
|
SU328460A1 |
УСТРОЙСТВО ДЛЯ СИНТАКСИЧЕСКОЙ ПРОВЕРКИ ВВОДИМЫХ В МАШИНУ ПРОГРАММ И ДАННЫХ | 1973 |
|
SU362300A1 |
Устройство для синтаксическогоКОНТРОля пРОгРАММ | 1978 |
|
SU807299A1 |
Устройство для синтаксически-управляемого перевода | 1982 |
|
SU1062721A1 |
Процессор, структурно ориентированный на алгоритмический язык | 1975 |
|
SU556445A1 |
Устройство для синтаксического контроля программ | 1976 |
|
SU669356A1 |
УСТРОЙСТВО для СИНТАКСИЧЕСКОГО КОНТРОЛЯ ПРОГРАММ, ЗАПИСАННЫХ НА ЯЗЫКЕ АЛГОЛ | 1967 |
|
SU191230A1 |
Устройство для синтаксического анализа программ | 1980 |
|
SU918950A1 |
УСТРОЙСТВО ДЛЯ ТРАНСЛЯЦИИ ПРОГРАММ | 1969 |
|
SU257151A1 |
Даты
1969-01-01—Публикация