bmstu-iu9 / bmstu-iu9/refal-5-lambda
Удлинение e-переменных справа-налево
- Dominant language
- C++
- Stars
- 97
- Forks
- 40
- PR merge metrics
- No merged PRs in 30d
Description
# Мотивация
Открытые e-переменные вообще используются нечасто (преимущественно, для поиска в ассоциативном списке), а сопоставление справа-налево требуется тем более реже. В кодовой базе есть всего один пример такой потребности:
https://github.com/bmstu-iu9/refal-5-lambda/blob/34e4d89e813365596bfa879fcafd6a16743b868c/src/compiler/GlobalGen.ref#L55-L60
Но зачем тогда эта задача? Во-первых, наличие сопоставления справа-налево добавляет в Рефал симметрии, т.е. красиво. Во-вторых, добавление требует минимальных правок кодогенерации. Недостаток: потребуется везде в промежуточном представлении протягивать для образцов направление сопоставления.
# Синтаксис
В начало каждого образца может быть добавлен признак направления `$L` или `$R`. По умолчанию подразумевается `$L`, поэтому его ставить не нужно. Ключевое слово добавлено только для симметрии.
```
$ENTRY Go {
= 'abracadabra' : $R e.1 'br' e.2 =
}
```
Вывод:
```
abracada
a
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.