bmstu-iu9 / bmstu-iu9/refal-5-lambda
Псевдокомментарии в духе Рефала-05
- Dominant language
- C++
- Stars
- 97
- Forks
- 40
- PR merge metrics
- No merged PRs in 30d
Description
Эта задача — подзадача #185. Процитирую параграф оттуда.
> Рефал-05 не поддерживает символы-слова, вместо них используются символы-функции. Пустые функции определяются при помощи ключевого слова `$ENUM`. При этом Рефал-05 совместим с Рефалом-5. Противоречие разрешается благодаря псевдокомментариям — комментариям вида
> ```
> *$ENUM True, False
> ```
> которые эквивалентны
> ```
> $ENUM True, False;
> ```
> Если однострочный комментарий начинается с `*$`, то знак `*` в начале заменяется на пробел, в конец дописывается `;` и полученная строка считается обычной строчкой программы.
>
> Есть мысль использовать такие же псевдокомментарии для описания встраиваемых или специализируемых функций — сохранится совместимость и с Рефалом-5, если это нужно, и появится возможность для оптимизации. Для записи многострочных псевдокомментариев предлагается использовать такой синтаксис:
> ```
> *$INLINE Foo, Bar, Baz
> *$ Oof, Rab, Zab
> ```
> Если следующая строка после псевдокомментария начинается на `*$ ` (звёздочка, доллар, пробел), то она считается продолжением псевдокомментария.
>
> Вообще, псевдокомментарии в языке частично есть — `*$CLASSIC` и `$EXTENDED` — значит, имеющуюся функцию нужно расширить и углубить.
Можно добавить только, что псевдокомментарии могут быть доступны не для всех ключевых слов, и даже наоборот, не все ключевые слова могут быть доступны без псевдокомментариев. Например, следующая конструкция бессмысленна, ибо глупа:
```
*$ENTRY Go { = }
```
Но её поддерживает Рефал-05 ради минималистичности и компактности исходников.
Сейчас компилятор Рефала-5λ поддерживает директиву `$LABEL` (199c8e24401ec06999eb17ab015ada8024ad9cc5), что есть костыль. Разумно подобные вещи допускать только в псевдокомментариях:
```
*$PRAGMA-NATIVE-IDENTS CURRENT, BEGIN, END
FSeek {
%%
...
```
Когда закрыть заявку?
-------------------------
* [x] https://github.com/bmstu-iu9/refal-5-lambda/issues/314#issuecomment-734850619 — реализованы псевдокомментарии управления оптимизацией.
* [ ] Удалён псевдокомментарий `*$EXTENDED`.
* [ ] Семантика псевдокомментария `*$CLASSIC` упрощена.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.