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

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

Выше (см. § 7.3.4) при обсуждении циклической обработки было опре­делено понятие сопрограммного механизма взаимодействия процессов, при котором несколько программных объектов поочередно передают друг другу управление и поставляют данные для обработки. Эта важная, с практической точки зрения, дисциплина может рассматриваться как вариант, альтернатив­ный по отношению к стековой организации взаимодействий. Тем не менее часто, особенно в случаях последовательных вычислений, сопрограммное взаимодействие моделируется обычной стековой дисциплиной.

Типичный пример — синтаксическое управление трансляцией. Здесь вы­делен главный процесс — синтаксический анализатор. Когда ему это нужно, он запрашивает лексический анализатор путем обыкновенного вызова про­цедуры, называемой далее генератором лексемы, которая вырабатывает оче­редную лексему. Генератор лексемы останавливает себя сам, когда лексема сформирована. Это реализуется как обычный возврат из процедуры. Понят­но, что каждая лексема вырабатывается отдельным экземпляром генератора, который тут же уничтожается, когда надобность в нем пропадает.

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

Новости

  • 1
  • 2
Prev Next

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

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

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

24.01.2016

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

Реклама