Cтраница 1
![]() |
Программа, содержащая блок с переменными границами. [1] |
Идентификаторы меток не описываются, но их использование в качестве меток по существу заменяет описание. [2]
Идентификаторы меток в языке АЛГОЛ занимают особое положение, так как только о них не составляются описания в блоке, но для меток установлены области действия, которые определяются аналогично области действия переменных. [3]
Если одинаковый идентификатор метки использован в двух блоках, которые можно назвать внутренним и внешним по отношению друг к другу, то оператор перехода записанный во внутреннем блоке, будет осуществлять переход к метке, записанной во внутреннем блоке, а оператор перехода, записанный во внешнем блоке, - к метке внешнего блока. [4]
Порожденные ассемблером идентификаторы меток всегда локальны, они представляют собой число в пределах 64 Ч - 127 и следующий за ним служебный символ. Локальные идентификаторы меток генерируются макроассемблером в порядке возрастания в том случае, когда не происходит замещения формального параметра фактическим; если же в макровызове имеется соответствующий фактический параметр, то происходит обычная подстановка и генерация нового идентификатора не выполняется. [5]
В данном примере идентификаторы меток после end указывают, где кончается помеченный блок. [6]
Метка, представленная идентификатором метки, найденным в результате вычисления именующего выражения, определяется в соответствии с правилами локализации идентификаторов в блоках, сформулированными в предыдущем разделе. Может случиться, что эта метка находится за пределами блока Вд, одним из операторов которого является выполняемый оператор перехода. Пусть идентификатор метки локален в блоке В2, охватывающем блок Ва. Тогда выполнение блока В1 ( а также всех блоков, содержащих блок Вг и содержащихся в блоке В2, прекращается. При этом перестают существовать все объекты, представленные всеми идентификаторами, локальными в этих блоках. [7]
Метка, представленная идентификатором метки, найденным в результате вычисления именующего выражения, определяется в соответствии с правилами локализации идентификаторов в блоках, сформулированными в предыдущем разделе. [8]
Если при этом получится идентификатор метки, то производится переход к оператору с этой меткой, содержащемуся в том же блоке, что и оператор перехода. Если в этом блоке искомой метки нет, ее ищут в блоке, содержащем данный блок, и так далее, до тех пор, пока метка не будет найдена. [9]
Операнд этого оператора ( идентификатор метки) должен совпадать с операндом соответствующего оператора ветвления, а выполнение другого процесса должно заканчиваться передачей управления на данный оператор. [10]
Если в префиксе CHECK указать идентификатор метки или входа, то состояние возникает перед выполнением оператора или процедуры с указанной меткой. [11]
Имеется два вида операторов: GO TO идентификатор метки и GO TO имя переменной. В первом операторе метка задана непосредственно, во втором - именем переменной, значение которой есть метка. Это имя может быть скалярной переменной, переменной с индексами и составной переменной. [12]
В заключение следует отметить, что совпадения идентификаторов меток в различных блоках встречаются редко. [13]
Смысл идентификатора определяется описанием-тождества; единственное исключение составляет идентификатор метки, который считается определенным, как только он появляется в тексте программы в качестве метки. [14]
В указанный список нельзя включать параметры, являющиеся идентификаторами меток, переключателей и процедур, так как они не могут принимать каких-либо значений. [15]