Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Опис семантичних речень

Тема 8. Семантика мов програмування

Синтаксис кортежу

 

(<вираз>,..., <вираз>)

 

Приклад 1: (1, 2*1, 2*2*1) Приклад 2: (1, true, 0, false)

 

 

Синтаксис опису змінних і функцій

Опис змінної: <опис>::= val <ідентифікатор> = <вираз> Опис функції: <опис>::= fun <ідентифікатор> <ідентифікатор> = <вираз>

 

 

Приклад 1. val x=2; Приклад 2. fun fact n = if n<2 then 1 else n * fact (n - 1); Приклад 3. fun f (x,y) = x*x + y*y;

 

 


 

 

3 види семантик:

1) операційні семантики – переходи абстрактної машин из одного стану в інший: SECD-машина, КАМ

2) пропозиційні семантики – множина формул, що описує стани програми: аксіоматичний метод Хоара і метод індуктивних тверджень Флойда

3) денотаційні семантики – абстракції функцій, що оперують станами програми: теорія обчислень Дана Скотта (семантичні домени)

 

8.3.1. Теорія обчислень Д.Скотта

 

Для побудови теорії необхідно:

1) перерахувати стандартні домени

2) визначити кінцеві домени

3) визначити конструктори доменів

 

4) комбінування доменів з використанням конструкторів (існує 4 типи конструкторів)

8.3.2. Визначення способів комбінування доменів

Означення 1. Під функціональним простором з домена D1 в домен D2 розумітимемо домен [D1->D2], що містить всі можливві функції з областю визначення з домена D1 і областю значень з домена D2:

 

[D1 -> D2] = {f | f: D1 -> D2}.

Означення 2. Під декартовим (або, прямим) добутком доменів

D1, D2,... Dn будемо розуміти домен всіх можливих n -ок виду

 

[D1 × D2 ×... × Dn]= {(d1 × d2 ×... × dn) | d1 Î D1, d2 Î D2, dn Î Dn...,}.

Означення 3. Під послідовністю D* будемо розуміти домен всіх можливих кінцевих послідовностей виду d=(d1,d2,...,dn) з елементів d1,d2,...,dn,... домену D, где n>0.

Означення 4. Під диз'юнктною сумою будемо розуміти домен з визначенням

 

[D1+D2+...+Dn]={ (di, i) | di Î Di, 0<i<n+1 },

 

де належність елементів di компонентам Di однозначно встановлюється спеціальними функціями належності.

 

8.4. Формалізація семантики мови|язик| функціонального програмування SML|

 

SMalL

 

1. E::= true | false | 0 | 1 | I | -E |

E1==E2 | E1+E2

 

2. С::= I=E | if (E) C1 else C2 |

while (E) C | C1;C2

 

 

8.4.1. Порядок побудови формальної моделі семантики мови програмування SMalL згідно раніше представленому формальному опису синтаксису мови в термінах БНФ

 

 

Ide = {I | I - ідентифікатор};

Com = {C | C - команда};

Exp = {E | E - вираз}.

 

 

8.4.2. Обчислювальна модель на основі станів програми мови SmalL

 

Таблиця 8.1. Обчислювальна модель на основі станів програми мови SmalL

 

Параметр Домен Співвідношення
Стан State (s) State=Memory
Пам’ять Memory (m) Memory = Ide -> [Value+{unbound}]
Значення Value (v) Value=Int+Bool

 

8.5.1. Семантичні речення для виразів

 

E: Exp -> [State -> [[Value, State] + {error}]];

 

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

 

якщо v - значення E в s, s'- стан після означування;

 

E[E]s = error,

 

якщо виникає помилка невідповідності типів.

 

8.5.2. Семантичні речення для команд

 

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

 

8.5.3. Семантичні речення для денотатів:

 

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.

 


 

<== предыдущая лекция | следующая лекция ==>
Синтаксис типу | Охорона здоров’я жінок, неповнолітніх і осіб зі зниженою працездатністю
Поделиться с друзьями:


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


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



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




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