Студопедия

КАТЕГОРИИ:


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

Синтаксис типу

Синтаксис опису

Синтаксис виразу

Синтаксис SML

Синтаксис ламбда-числення

БНФ

Визначення синтаксису

Застосування типізації

Типізація в SML

1. Схема типізації:

1. базисні типи:

int - цілі числа;

string - рядки символів;

bool - логічні значення.

 

2. a, b, то f(a)=b, має тип a à b

 

2. Виведення типів.

 

Сильна статична типізація

 

3. Поліморфна типізація

 

let

val Id = fn x => x

in (Id 3, Id true)

end

 

некоректно:

 

fn Id => (Id 3, Id true) (fn x => x)

 

переваги типізації

1. Ієрархія типів виключає сегментацію типів

2. Полегшення управління предметною сферою

 

 

Приклад 1.

val x=2*3;

 

val x = 6: int

 

Приклад 2.

1+2;

 

3: int

 

Приклад 3.

fun add (x: int)(y: int) = x+y;

 

val add = fn: int -> int -> int

 

Приклад 4.

add 1 3;

 

val it = 4: int

 

Приклад 5.

val f = add 1;

 

val f = fn: int -> int

 

f 4;

 

val it = 5: int

 

Приклад 6.

hd [1,2,3];

 

val it = 1: int

тип (int list -> int).

 

Приклад 7.

hd [true, false, true, false];

val it = true: bool

тип bool list -> bool

 

Приклад 8.

hd [(1,2),(3,4),(5,6)];

val it = (1,2): int*int

тип ((int*int)list -> (int*int)).

 

Таблиця 6.1. Відображення типів мови програмування SML в типи ієрархії CTS

Тип Клас.NET Пояснення
  int System.Int32 Ціле число
  string System.String Рядок
  bool System.Boolean Логическое значение
... ... ... ...

 

Означення 7.1. Синтаксис - розділ опису формальної математичної мови або мови програмування, що досліджує вид, форму і структуру конструкцій мови (без врахування їх значення або практичної застосовності).

Схема трансляції програми

1. Лексичний аналіз

2. Синтаксичний розбір

3. Перетворення тексту програми в проміжний або машинний код

7.2. Порівняння синтаксису SML і ламбда-числення

 

<вираз>::= <константа> | <змінна> | (<вираз> <вираз>) | λ <змінна>.<вираз>

 

<вираз>::= <ідентифікатор> | <літерал> | <вираз> <вираз> | <вираз> <ідентифікатор> <вираз>

 

Синтаксично допустимими виразами мови SML, також є:

if <вираз> then <вираз> else <вираз> | (<вираз>... <вираз>) | let <опис> in <вираз> end | (<вираз>)

 

< опис >::= val < ідентифікатор > = < вираз > | fun < ідентифікатор > < ідентифікатор > = < вираз > | local < опис > in < опис > end

 

 

 

<тип>::= int | bool | <тип> *... * <тип> |<тип> -> <тип>

 

 

Приклад. Константа типу кортеж виду

 

(0,false,1,true)

 

має тип

 

(int*bool*int*bool).

Синтаксичні особливості основних видів літералів

<літерал>::= <літерал цілого типу> | <літерал рядкового типу> | <літерал дійсного типу>

 

M ´ 10E, де M - мантиса в діапазоні від -1 до +1, E - порядок.

 

 

Аплікація функцій

 

<вираз> <вираз>

 

Приклад.

fun succ n = n+1;

 

succ 2

Синтаксис умовних виразів

 

if <вираз> then <вираз> else <вираз>;

 

Приклад.

if n>=10 then 1 else 0;

 

Синтаксис let-виразів

 

let <опис> in <вираз> end;

 

Приклад.

let val n=2 in n+1 end;(λx.x + 1) 2 let k=9876*8765 in (k-1, k, k+1) end;

 

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


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


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



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




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