Cтраница 1
Вхождения идентификатора А в операторы присваивания идентифицируют величину А в описании DECLARE. [1]
Второе вхождение идентификатора - transform - сохраняет в стэке результат применения функции condense; его не следует принимать за вызов функции. [2]
Для любого вхождения идентификатора в программу ( так называется появление идентификатора в каком-либо месте программы) его роль в этом месте может быть установлена следующим образом. Выбирается самый внутренний из всех блоков, охватывающих это вхождение, в которых локализован данный идентификатор. Если таких блоков нет, то этот идентификатор может быть только идентификатором, закрепленным за некоторым стандартным объектом ( см. стр. В противном случае идентификатор в рассматриваемом вхождении представляет тот же объект, что в выбранном блоке. [3]
![]() |
Диаграммы области действия явно ( а и неявно ( б описанных. [4] |
В процессе идентификации устанавливается соответствие использующего и определяющего вхождений идентификаторов программы. [5]
Задана обратная польская запись некоторого простого выражения, не содержащего вхождений идентификаторов. [6]
Задана прямая польская запись некоторого простого выражения, не содержащего вхождений идентификаторов. [7]
Написать программу, которая по заданному простому-логическому выражению ( определение понятия содержится в формулировке предыдущей задачи), не содержащему вхождений простых идентификаторов, вычисляет и печатает значение этого выражения. [8]
![]() |
Диаграммы области действия явно ( а и неявно ( б описанных. [9] |
Идентификация выполняется следующим образом. Для каждого использующего вхождения R идентификатора осуществляется поиск определяющего S вхождения в зоне, в которой содержится рассматриваемое вхождение. [10]
Тип функции должен быть скалярным, отрезком типа или типом указателя. В пределах описания функции должен содержаться хотя бы один оператор присваивания, присваивающий значение иденти - - фикатору функции. Вхождение идентификатора функции в указатель функции в пределах ее описания подразумевает рекурсивное исполнение этой функции. [11]
Для того чтобы описание процедуры определяло значение указателя функции, необходимо, чтобы внутри тела процедуры встречался один или несколько явных операторов присваивания с идентификатором этой процедуры в качестве получателя; по крайней мере один из них должен выполняться, и тип идентификатора процедуры должен быть указан включением описателя типа в качестве самого первого символа описания процедуры. Последнее значение, присвоенное таким образом, используется для дальнейшего вычисления выражения, в котором встречается указатель функции. Любое вхождение идентификатора процедуры внутри ее тела не в качестве получателя оператора присваивания означает обращение к этой процедуре. Если оператор перехода, находящийся внутри данной процедуры или внутри любой другой процедуры, обращение к которой произведено из нее, осуществляет выход из данной процедуры минуя ее символ end, то прекращается исполнение всех начатых, но не завершенных операторов, не содержащих ту метку, к которой ведет этот оператор перехода. Значения всех переменных, имеющих еще смысл, остаются такими же, какими они были непосредственно перед выполнением оператора перехода. [12]
Это действительно так, поскольку теперь / является let - связанным идентификатором, локальным в выражении, так что мы точно знаем, как он определен, и можем использовать эту информацию в каждом отдельном случае его вхождения. Здесь / имеет тип а-а, который может принять вид пит - пит, когда / применяется к аргументу 3, и truval - truval, когда / применяется к аргументу true. Переменная типа, такая, как а, входящая в выражение типа let - связанного идентификатора, называется родовой и может получать различные значения для различных вхождений идентификатора при условии, если она не входит одновременно в выражение типа Я-связанного идентификатора, область действия которого в выражении включает область действия let - связанного идентификатора. [13]
Инструкция % DECLARE определяет I как целую переменную времени компиляции. Однако тело DO времени компиляции интерпретируется по-другому. Оно не выполняется, а рассматривается как цепочка литер, которую нужно проска-нировать. Каждая последующая итерация получает другую копию тела цикла с соответствующей подстановкой I. Текст программы в результате пяти итераций, представляет собой простую последовательность, приведенную выше. Инструкция % DEACTIVATE I отменяет подстановку значения I для вхождений идентификатора I в последующие инструкции программы. [14]