Опубликован: 19.09.2008 | Доступ: свободный | Студентов: 659 / 71 | Оценка: 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 переменная-типа2 ) |
(переменная-типа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)< выражениеi+1 ) |
(правое сечение) | |
| | | ( квалифицированный-оператор(r,i)< правое-сечение-выраженияi ) |
(правое сечение) | |
| | | квалифицированный-конструктор { связывание-имени-поля1 , ... , связывание-имени-поляn } | (именованная конструкция, n>=0 ) | |
| | | выражение-аргумента<квалифицированный-конструктор> { связывание-имени-поля1 , ... , связывание-имени-поляn } | (именованное обновление, n>=1 ) |
Перевод:
| квалификатор | ![]() |
образец выражение |
(генератор) |
| | | let списки-объявлений | (локальное объявление) | |
| | | выражение | (страж) | |
| список-альтернатив | ![]() |
альтернатива1 ; ... ; альтернативаn | (n>=1) |
| альтернатива | ![]() |
образец выражение [where список-объявлений] |
|
| | | образец образец-со-стражами [ where список-объявлений] | ||
| | | (пустая альтернатива) | ||
| образец-со-стражами | ![]() |
страж выражение [ образец-со-стражами ] |
|
| список-инструкций | ![]() |
инструкция1 ... инструкцияn выражение [;] | (n>=0) |
| инструкция | ![]() |
выражение ; | |
| | | образец выражение ; |
||
| | | let список-объявлений ; | ||
| | | ; | (пустая инструкция) | |
| связывание-имени-поля | ![]() |
квалифицированная-переменная = выражение |

] тип
выражение