Опубликован: 19.09.2008 | Доступ: свободный | Студентов: 659 / 70 | Оценка: 4.50 / 5.00 | Длительность: 21:25:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Лекция 10:
Синтаксический справочник
Перевод:
inst | ![]() |
gtycon | |
| | ( gtycon tyvar1 ... tyvark ) | ( k>=0, все tyvar различны) | |
| | ( tyvar1 , ... , tyvark ) | ( k>=2, все tyvar различны) | |
| | [ tyvar ] | ||
| | ( tyvar1 -> tyvar2 ) | ( tyvar1 и tyvar2 различны) |
Перевод:
экземпляр | ![]() |
общий-конструктор-типа | |
| | ( общий-конструктор-типа переменная-типа1 ... переменная-типаk ) | ( k>=0, все переменные-типа различны) | |
| | ( переменная-типа1 , ... , переменная-типаk ) | ( k>=2, все переменные-типа различны) | |
| | [ переменная-типа ] | ||
| | ( переменная-типа1 ![]() |
(переменная-типа1 и переменная-типа2 различны) |
Перевод:
левая-часть-функции | ![]() |
переменная такой-как-образец {такой-как-образец } |
| | образецi+1 оператор-переменной(a,i) образецi+1 | |
| | левый-образецi оператор-переменной(l,i) образецi+1 | |
| | образецi+1 оператор-переменной(r,i) правый-образецi | |
| | ( левая-часть-функции ) такой-как-образец {такой-как-образец } | |
правая-часть | ![]() |
= выражение [where список-объявлений] |
| | правая-часть-со-стражами [where список-объявлений] | |
правая-часть-со-стражами | ![]() |
страж = выражение [правая-часть-со-стражами] |
страж | ![]() |
| выражение0 |
exp | ![]() |
exp0 :: [context =>] type | (сигнатура типа выражения) |
| | exp0 | ||
expi | ![]() |
expi+1 [qop(n,i) expi+1] | |
| | lexpi | ||
| | rexpi | ||
lexpi | ![]() |
(lexpi | expi+1) qop(l,i) expi+1 | |
lexp6 | ![]() |
- exp7 | |
rexpi | ![]() |
expi+1 qop (r,i) (rexpi | expi+1) | |
exp10 | ![]() |
\ apat1 ... apatn -> exp | (лямбда-абстракция, n>=1 ) |
| | let decls in exp | ( let -выражение) | |
| | if exp tden exp else exp | (условное выражение) | |
| | case exp of { alts } | ( case -выражение) | |
| | do { stmts } | ( do -выражение) | |
| | fexp | ||
fexp | ![]() |
[fexp] aexp | (применение функции) |
Перевод:
выражение | ![]() |
выражение0 :: [контекст ![]() |
(сигнатура типа выражения) |
| | выражение0 | ||
выражениеi | ![]() |
выражениеi+1 [квалифицированный-оператор(n,i) выражениеi+1] | |
| | левое-сечение-выраженияi | ||
| | правое-сечение-выраженияi | ||
левое-сечение-выраженияi | ![]() |
(левое-сечение-выраженияi | выражениеi+1) квалифицированный-оператор(l,i) выражениеi+1 | |
левое-сечение-выражения6 | ![]() |
- выражение7 | |
правое-сечение-выраженияi | ![]() |
выражениеi+1 квалифицированный-оператор(r,i) (правое-сечение-выраженияi | выражениеi+1) | |
выражение10 | ![]() |
\ такой-как-образец1 ... такой-как-образецn ![]() |
(лямбда-абстракция, n>=1 ) |
| | let списки-объявлений in выражение | ( let -выражение) | |
| | if выражение tden выражение else выражение | (условное выражение) | |
| | case выражение of { список-альтернатив } | ( case -выражение) | |
| | do { список-инструкций } | ( do -выражение) | |
| | функциональное-выражение | ||
функциональное-выражение | ![]() |
[функциональное-выражение] выражение-аргумента | (применение функции) |
Перевод:
выражение-аргумента | ![]() |
квалифицированная-переменная | (переменная) |
| | общий-конструктор | (общий конструктор) | |
| | литерал | ||
| | ( выражение ) | (выражение в скобках) | |
| | ( выражение1 , ... , выражениеk ) | (кортеж, k>=2 ) | |
| | [ выражение1 , ... , выражениеk ] | (список, k>=1 ) | |
| | [ выражение1 [, выражение2] .. [выражение3] ] | (арифметическая последовательность) | |
| | [ выражение | квалификатор1 , ... , квалификаторn ] | (описание списка, n>=1 ) | |
| | ( выражениеi+1 квалифицированный-оператор(a,i) ) | (левое сечение) | |
| | ( левое-сечение-выраженияi квалифицированный-оператор(l,i) ) | (левое сечение) | |
| | ( квалифицированный-оператор(a,i)< ![]() |
(правое сечение) | |
| | ( квалифицированный-оператор(r,i)< ![]() |
(правое сечение) | |
| | квалифицированный-конструктор { связывание-имени-поля1 , ... , связывание-имени-поляn } | (именованная конструкция, n>=0 ) | |
| | выражение-аргумента<квалифицированный-конструктор> { связывание-имени-поля1 , ... , связывание-имени-поляn } | (именованное обновление, n>=1 ) |
Перевод:
квалификатор | ![]() |
образец ![]() |
(генератор) |
| | let списки-объявлений | (локальное объявление) | |
| | выражение | (страж) | |
список-альтернатив | ![]() |
альтернатива1 ; ... ; альтернативаn | (n>=1) |
альтернатива | ![]() |
образец ![]() |
|
| | образец образец-со-стражами [ where список-объявлений] | ||
| | (пустая альтернатива) | ||
образец-со-стражами | ![]() |
страж ![]() |
|
список-инструкций | ![]() |
инструкция1 ... инструкцияn выражение [;] | (n>=0) |
инструкция | ![]() |
выражение ; | |
| | образец ![]() |
||
| | let список-объявлений ; | ||
| | ; | (пустая инструкция) | |
связывание-имени-поля | ![]() |
квалифицированная-переменная = выражение |