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/ |