Цикл стиля С/С++/С# в QPILE

Опубликовано в M4

После периода программирования на языках семейства С или Pascal/Delphi у меня постоянно возникает проблема с синтаксисом циклов на языке qpile. Чтобы наконец перестать путаться, решил изменить синтаксис и привести его к удобоваримому виду.

Цикл в qpile выглядит так:

for i from 1 to 100

      ... тело цикла ..

end for

Приведем его к виду 

For(i,1,100)

      ... тело цикла ..

End For

Дополнительно добавим приятное правило из паскалеподобных языков, когда переменная цикла автоматически имеет локальную область видимости (макрос Local) . Опеределим оператор цикла:

define(`For',`ifelse(`$1',,`for',Local(`$1')for `$1' from m4_default(`$2',0) to `$3')')

Что вполне решает нашу задачу. Автоматически определяется стиль задания цикла. Если он задан в стандартном qpile-синтаксисе for i from 1 to 100, то ничего не заменяется. Если в пользовательском виде for(i,from,to) - то он развернется в стандарт синтаксиса qpile. Если второй операнд пропущен, будет подстановлен 0.

Стоит отметить, что переменная цикла автоматически будет объявлена локальной, как это принято, например, а языках семейства Pascal. Исключение - зарезервированная переменная result.

См. также Расширение синтаксиса QPILE: Return и LoopM4 документацияForCollection и ForTable

 


Редкий экземпляр в рок-зоопарке и поклонник Сальвадора Дали: Alice Cooper. Не хватает лишь Роллс-Ройса, набитого цветной капустой.

Добавить комментарий


Защитный код
Обновить

Библиотека