OberonCore
https://forum.oberoncore.ru/

[Coco/R] Условная компиляция, прагмы и т.п.
https://forum.oberoncore.ru/viewtopic.php?f=61&t=2642
Страница 1 из 1

Автор:  Alexey Veselovsky [ Четверг, 13 Май, 2010 20:48 ]
Заголовок сообщения:  [Coco/R] Условная компиляция, прагмы и т.п.

Как сделать условную компиляцию на Coco/R?
Т.е. обработку вот такой конструкции:
Код:
<* IF condition THEN *>
<* ELSIF condition THEN *>
<* ELSE *>
<* END *>


По идее в зависимости от condition лексер должен был бы выкидывать всё лишнее. Как бы это покрасивше сделать на Coco/R?

Далее. Прагмы. Но не простые, а влияющие на синтаксис. Прагмы вида:
Код:
<* +O2NUMEXT *>

Если подобная прагма имеется, то в синтаксисе нет "**", если же прагма есть, то в синтаксисе внезапно появляется правило:
Код:
    Exponent =  Factor { "**" Factor }.

Соответственно правило Term модифицируется:
Код:
    Term     =  Exponent { MulOp Exponent }.

Это простейшее. Есть прагмы меняющие (расширяющие) синтаксис сильнее.
Как тут быть?

Ну и наконец наши любимые ассемблерные вставки. Внутри блока начинающегося на "ASM" и оканчивающийся на "END" может быть некий произвольный ассемблер (синтаксис его мы не знаем). Нам нужно его хотя бы научиться игнорировать. А лучше -- выкусывать целиком, чтобы в последствии отдать этот кусок некой внешней утилиты на анализ/компилинг. Как это лучше сделать?

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/