Россия, Петерубрг, СПБ-ГПУ, 1998 |
Опубликован: 19.09.2008 | Уровень: специалист | Доступ: платный
Лекция 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 список-объявлений ; | ||
| | ; | (пустая инструкция) | |
связывание-имени-поля | квалифицированная-переменная = выражение |