|
Каждый блок сам является оператором и поэтому может содержаться в роли оператора в другом блоке. Вся Алгол-программа также, как правило, представляет собой блок. Кроме блоков и операторов присваивания имеются другие виды операторов, с которыми мы познакомимся позже. Каждый оператор при необходимости может быть помечен одной или несколькими метками. Метка состоит из идентификатора метки и двоеточия и ставится перед оператором, который она метит. Идентификатор метки используется в операторах перехода в качестве наименования оператора, помеченного этой меткой. Примеры помеченных операторов: 1:х:=0.1 ВО : start: w : begin Boolean omega; wl: omega : = false end где U BO, start, w, ад/— идентификаторы меток. Как мы вскоре увидим, оба приведенных выше примера блоков носят формальный характер и не могут с пользой быть включены ни в одну Алгол-программу. Идентификатор величины, описанной в одном из описаний в начале блока, или метки, поставленной перед одним из операторов этого блока, называется локальным в этом блоке. Все прочие идентификаторы, встречающиеся в этом блоке, считаются в нем глобальными. Каждый глобальный идентификатор должен быть локальным в одном из блоков, охватывающих данный блок. Таким образом, в самом внешнем блоке Алгол-программы не может быть глобальных идентификаторов. Напомним, однако, что для идентификаторов, закрепленных за стандартными функциями и за некоторыми другими объектами, допускается исключение из этого правила. Локальные идентификаторы блока становятся глобальными в его подблоках, если в последних не локализованы такие же идентификаторы. Локализация одного и того же идентификатора в разных блоках допускается как в случае непересекающихся блоков, так и в случае, когда один из блоков целиком вложен в другой. При этом в каждом из таких блоков идентификатор представляет свой объект, недоступный другому блоку. Напротив, в одном блоке любой идентификатор может быть локализован только одним способом: либо описан (только в одном из описаний), либо включен в состав метки (лишь одной из меток операторов данного блока).
|