Непейвода Н.Н. Программирование. Раздел 3

Непейвода Н.Н. Программирование. Страница 274

вставить вместо завершителей команды безусловных переходов

(несколько усложняют эту схему возможные описания, вложенные в кон­струкции 13).

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

Тем не менее, имеется более эффективная, чем преобразование Бема Джакопини, и, главное, более надежная и гибкая схема вычисления за­вершителей, реализуемая интерпретатором. Но для этого необходима па­мять вычислителя, включающая структурированный стек контекстов (см. рис. 7.4).

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

Алгоритм вычисления завершителя несколько усложняется. Теперь надо

1) найти на стеке все экземпляры контекста, которые соответствуют вло­женным конструкциям, вплоть до того экземпляра, который требуется завершить;

2) завершить вложенные конструкции, т. е. последовательно, в порядке на­хождения ликвидировать найденные контексты (в частности, первым лик­видируемым окажется контекст, непосредственно содержащий заверши­тель, который перед своим уничтожением передает управление следую­щему найденному ит. д.).

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама