Для однозначного описания семантики целесообразно выбрать математическую
форму описания, т. е. сопоставление математических объектов для описания
конструкций языка.
Язык программирования предоставляет как простые операторы, так и методы
композиции, которые позволяют формировать структурные операторы из других
простых или составных операторов. Поэтому для описания семантики языка
программирования нужно решить две связанные между собой задачи.
1. Определить виды используемых в языке программирования простых операторов,
а также часто используемые методы композиции решений подзадач.
2. Обеспечить правила вывода, позволяющие определить эффект воздействия
простого оператора на состояние вычисления, а также вывести определенные
свойства составного оператора из свойств составляющих его компонент.
Ниже мы проиллюстрируем формальное определение семантики на примере
простого модельного языка содержащего основные конструкции и правила
композиции, встречающиеся в современных языках программирования .
Фундаментальное свойство основных правил композиции современных языков
программирования заключается в том, что они дают возможность объединить в
одну сложную структурную схему с одним входом и одним выходом, которая имеет
вид, изображенный на рис. 3.1
Рис 3.1.
Здесь S — оператор, группа операторов или программа; Р — предусловие —
логическое выражение, которое должно быть истинным перед выполнением S; Q —
постусловие — логическое выражение, которое должно принимать истинное
значение при выходе из вычислений S. Если ввести в язык понятие комментария
как произвольного текста, заключенного в фигурные скобки, то свойство,
изображенного на рис 3.1. можно в тексте программы записать как:
(1) {P} S {Q}
Это — спецификация программы S со следующим смыслом: если соотношение Р
истинно перед выполнением S, то Q будет истинно после выполнения S.
Пусть Р некоторое логическое выражение. Для простоты будем полагать, что
кванторы всеобщности и существования не принадлежат Р. Для выражения
)(Px
считаем, что вхождение переменной х в
x
связано квантором всеобщности и
каждое вхождение х в Р –связанное значение. Та же терминология применяется к
выражению
)(Px∃ , за исключением того, что в этом случае вхождение переменной
х в
∃
называют связанным квантором существования. Каждое вхождение переменной
х в логическое выражение, которое не связано квантором , называют свободной
переменной этого выражения.
Пример 1
• все переменные в выражении
))(( xyyx
∃ связаны;
• все переменные в выражении
)()( kjji
свободны.
Определим понятие подстановки.
Пусть P - логическое выражение. Нотация
(2)
x
y
P
P
Q