bmstu-iu9 / bmstu-iu9/refal-5-lambda

Удлинение e-переменных справа-налево

Open
#175 0 comments 0 reactions 1 assignee Claimed by @Mazdaywik View on GitHub
task
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.