Денотационная семантика

Денотационная семантика – это формальная аппликативная модель для описания языков программирования. Основной концепцией денотационной семантики является определение для каждой сущности языка некоторого математического объекта и некоторой функции, отображающей экземпляры этой сущности в экземпляры этого объекта.

Рассмотрим использование денотационной семантики на примере определения двоичных чисел. Синтаксис двоичных чисел можно описать следующими БНФ:

<двоичное число> ::= 0| 1| <двоичное число> 0| <двоичное число> 1

Объектами в данном примере являются десятичные числа. Для описания двоичного числа с использованием денотационной семантики и приведенных ранее синтаксических правил его фактическое значение связывается с каждым правилом, содержащим в своей правой части один основной символ определяемого языка. При этом значащие объекты (числа 0 и 1) должны связываться с первыми двумя правилами, а другие два правила являются, по существу, правилами вычислений, поскольку они объединяют основной символ языка (0 или 1), с которым может ассоциироваться объект, с металингвистической переменной, которая представляет собой некоторую синтаксическую конструкцию.

Пусть область определения семантических значений объектов представляет собой множество неотрицательных десятичных целых чисел N. Эти объекты могут быть связаны с двоичными числами с помощью функции М, которая отображает синтаксические объекты в объекты множества N. Функция М может быть определена следующим образом:

М(0) = О

М(\) = 1

М(<двоичное число>0) = 2 ´ M(<двоичное число>)

M(<двоичное число>1) = 2 ´ M(<двоичное число>) + 1

1.Опишите синтаксис раздела описаний переменных и массивов типа real, integer и char языка Pascal.

2.Разработайте описание синтаксиса условного оператора if языка Pascal. Условия в этом операторе задаются логическими выражениями, составленными из простых переменных булевского типа и логических операций И, ИЛИ, НЕ, а в качестве операторов можно использовать только операторы присваивания, правой частью которых являются логические выражения. Приоритет операций обычный.

3.Задайте синтаксис оператора цикла for языка Pascal. В качестве операторов в теле цикла можно использовать только операторы присваивания, правой частью которых являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

4.Опишите синтаксис оператора цикла while некоторого подмножества языка Pascal. Условия в этом операторе задаются с помощью отношений, а в качестве операторов в теле цикла можно использовать только операторы присваивания, правой частью которых являются арифметические выражения, составленные из простых переменных и констант вещественного типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

5.Определите синтаксис оператора цикла repeatязыка Pascal. Условия в этом операторе задаются логическими выражениями, составленными из простых переменных булевского типа и логических операций И, ИЛИ, НЕ, а в качестве операторов в теле цикла можно использовать только операторы присваивания, правой частью которых являются логические выражения. Приоритет логических операций обычный.

6.Задайте синтаксис раздела описаний переменных и массивов типа double, int и char языка С.

7.Определите синтаксис условного оператора ifязыка С, в котором условия задаются с помощью отношений, а в качестве операторов, выполняемых в зависимости от значений условий, можно использовать только операторы присваивания. Правой частью операторов присваивания являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

8.Опишите синтаксис условного оператора присваивания языка С. В правой части такого оператора для задания условий следует использовать отношения и арифметические выражения целого типа, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

9.Разработайте описание синтаксиса оператора цикла forязыка С. В качестве операторов в теле цикла можно использовать только операторы присваивания, правой частью которых являются арифметические выражения целого типа, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

10. Определите синтаксис описания структур и переменных структурного типа в языке С.

11. Опишите синтаксис оператора цикла whileнекоторого подмножества языка С. Условия в этом операторе задаются с помощью отношений, а в качестве операторов в теле цикла можно использовать только операторы присваивания, правой частью которых являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

12. Задайте синтаксис оператора цикла do... whileязыка С. Условия в этом операторе представляют собой логические выражения, составленные из простых переменных булевского типа и логических операций И, ИЛИ, НЕ, а в качестве операторов в теле цикла можно использовать только операторы присваивания, правой частью которых являются логические выражения. Приоритет операций обычный.

13.Определите синтаксис задания перечислимого типа и описания переменных перечислимого типа в языке Pascal.

14.Опишите синтаксис оператора варианта caseязыка Pascal. В качестве операторов, среди которых производится выбор для исполнения, используйте только операторы присваивания, правой частью которых являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

15.Задайте описание синтаксиса оператора цикла repeatязыка Pascal. Условия в этом операторе задаются с помощью отношений, а в качестве операторов в теле цикла можно использовать только операторы присваивания. Правой частью операторов присваивания являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

16.Определите синтаксис условного оператора if языка Pascal, в котором условия задаются с помощью отношений, а в качестве операторов, выполняемых в зависимости от значений условий, можно использовать только операторы присваивания, правой частью которых являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.

17.Задайте синтаксис определения регулярного типа и описания переменных с индексами в языке Pascal.

18.Задайте синтаксис определения строкового типа и описания строк в языке Pascal.

19.Разработайте определение синтаксиса описания процедур в языке Pascal, при этом операторы, составляющие тело процедуры, описывать не нужно.

20.Определите синтаксис описания комбинированного типа и переменных комбинированного типа в языке Pascal.

21.Задайте синтаксис описания перечислимого типа и переменных перечислимого типа в языке С.

22.Опишите синтаксис оператора условного ветвления switchязыка С. В качестве операторов, подлежащих исполнению при совпадении выражения с case-константой, можно использовать только операторы присваивания, правой частью которых являются арифметические выражения, составленные из простых переменных и констант целого типа, круглых скобок и знаков арифметических операций: сложения, вычитания, умножения и деления. Приоритет операций обычный.


Наши рекомендации