Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Семантические предложения для денотатов




Семантические предложения для команд

Семантические предложения для выражений

Приведем семантические предложения для выражений языка программирования SMalL:

 

E: Exp -> [State -> [[Value, State] +

{error}]];

E[E]s = (v,s'),

 

если v - значение E в s, s'- состояние после означивания;

 

E[E]s = error,

 

если возникает ошибка несоответствия типов.

Из приведенных соотношений следует, что вычисление значения выражения языка программирования SMalL приводит к такому изменению состояния, что происходит связывание переменной со значением, либо (в случае невозможности связывания по причине несоответствия типов переменной и значения) генерируется сообщение об ошибке. При этом состояние программы изменяется с s на s'.

Приведем семантические предложения для команд языка программирования SMalL:

С: Com -> [State -> [ State + {error}]].

Из приведенного соотношения следует, что вычисление значения команды языка программирования SMalL приводит, вообще говоря, к изменению состояния, причем возможна ситуация (например, несоответствие типов в ходе присваивания), при которой вырабатывается ошибка.

В соответствии с намеченной схемой рассуждений перейдем к описанию семантических предложений, которые описывают значение конкретных денотатов (т.е. правильно построенных конструкций) языка SMalL.

1. Семантические предложения для денотатов констант целочисленного типа языка SMalL:

E[0]s = (0,s);

E[1]s = (1,s);

Как видно из приведенных соотношений, денотатами констант целочисленного типа являются значения этих констант (в форме упорядоченных пар вида "значение"-" состояние "), причем смены состояния программы не происходит.

2. Семантические предложения для денотатов констант логического типа языка SMalL:

E[true]s = (true,s);

E[false]s = (false,s);

Как видно из приведенных соотношений, денотатами констант логического типа являются значения этих констант (в форме упорядоченных пар вида "значение"-" состояние. "), причем смены состояния программы не происходит.

3. Семантическое предложение для денотатов идентификаторов языка SMalL:

E[I]s = (m,I=unbound) error, -> (m,I,s).

Как видно из приведенного соотношения, при возможности связывания денотатами идентификаторов являются идентификаторы, связанные со значениями (в форме упорядоченных троек вида "значение в памяти "-" идентификатор "-" состояние "), причем смены состояния программы не происходит, а при невозможности - выдается сообщение об ошибке.

4. Семантические предложения для денотатов выражений языка SMalL

4.1. Денотатом отрицания выражения является отрицание его значения; причем состояние программы изменяется. В случае несоответствия типов или небулевости выражения генерируется сообщение об ошибке.

E[-E]s=(E[E]s=(v,s'))

(isBool -> (not v,s'),error,error;

 

4.2. Денотатом присваивания является присвоенное значение в новом состоянии. В случае несоответствия типов генерируется сообщение об ошибке.

E[E1=E2]s=(E[E1]s=(v1,s1)) ->

(E[E2]s1= (v2,s2)) ->

(v1 = v2,s2),error),error;

 

4.3. Денотатом сложения является значение суммы в новом состоянии. В случае несоответствия типов генерируется сообщение об ошибке.

E [E1+E2]s = (E [E1] s=(v1,s1)) ->

(E [E2]s1 = (v2,s2)) ->

(IsNum v1 and IsNum v2 -> v1+v2,s2),error),

error),error.

 

5. В качестве упражнения предлагается самостоятельно разработать семантические предложения для денотатов команд языка программирования SMalL.

 

Выводы по лекции 9

В ходе лекции была представлена классификация подходов к семантике языков программирования, признан целесообразным денотационный подход, который проиллюстрирован на примере языка SMalL - ограниченного подмножества SML.

По итогам обсуждения можно сделать следующие выводы:

1. семантика языков функционального программирования достаточно близка к семантике формальных теорий, на которых они основаны (в частности, это справедливо для ламбда-исчисления и языка SML);

2. теория вычислений является актуальной и адекватной формализацией семантики;

3. денотационный подход является наиболее целесообразным для моделирования семантики языков программирования.

 

Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [24,40,42,52,67,70].


 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 215; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.