Пусть х - любой идентификатор, s - тип, а Е - выражение этого типа; тогда s х: Е называется объявлением элемента или согласованием элемента с идентификатором х. Через объявление элемента идентификатор х связывается со значением выражения Е. С помощью такого объявления принимается соглашение о том, что с этого момента х стоит в качестве этого значения.
Область связанности, порождаемая объявлением ограничивается блоком, в начале которого и помещаются объявления. Пусть G -объявление, а ЕО - выражение. Тогда
[О; EO]
есть блок. Угловые скобки называют скобками блока. Они ограничивают область действия объявления G,
т.е. область связанности идентификатора, порождаемую объявлением G. Это значит, соглашение о том, что объявленный в G идентификатор стоит в качестве соответствующего значения, действительно только внутри скобок блока.
Синтаксис объявления элемента описывается следующим БНФ-правилом:
<объявление_элемента>:: =<тип><идентификатор>=<выражение>
Пусть для объявления элемента справедливы следующие дополнительные условия:
·
тип выражения Е есть s;
· х не входит свободно в Е.
Второе условие указывает на то, что в модельном языке не допускаются рекурсивные объявления элементов.
Пример (объявление элемента). С помощью объявления
nat х = 3 + 4
принимается соглашение о том, что х имеет значение 7. Это объявление может использоваться в каком-либо блоке. Блок
[nat x =3+4;x*x]
имеет тогда значение 49. Внутри блока х стоит в качестве значения 7.
В ЯП вместо угловых скобок часто записываются также begin и end. Тогда блок будет записываться в виде
begin s х = El; E2 end
Скобки блока begin (соответствующая [) и end (соответствующая ]) ограничивают область действия описания для идентификатора х. Внутри этой области могут приниматься другие, вложенные соглашения, и тогда исходное соглашение на время теряет свою силу (становится "невидимым"). Так, значение блока
[nat х= 1; [nat х =2; х ] + х ] идентично блоку