Это C. Просто автор предпочитал синтаксис ALGOL 68 😄
Стив Борн, создатель Bourne shell, использовал макросы, чтобы исходники оболочки выглядели привычнее:
define IF if(
define THEN ){
define ELSE } else {
define FI ;}
Теперь условие можно записать так:
IF n <= 1 THEN
return;
FI
Препроцессор превратит его в обычный C:
if (n <= 1) {
return;
}
Такие макросы действительно есть в исходниках Bourne shell из UNIX V7. На картинке тот же приём применяется к циклам: FOR, DO, OD.
Любопытный кусочек истории: через define можно поменять внешний вид языка, сохранив прежний компилятор. А вот читать и отлаживать такой код придётся уже с учётом собственного «диалекта».
https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
Стив Борн, создатель Bourne shell, использовал макросы, чтобы исходники оболочки выглядели привычнее:
define IF if(
define THEN ){
define ELSE } else {
define FI ;}
Теперь условие можно записать так:
IF n <= 1 THEN
return;
FI
Препроцессор превратит его в обычный C:
if (n <= 1) {
return;
}
Такие макросы действительно есть в исходниках Bourne shell из UNIX V7. На картинке тот же приём применяется к циклам: FOR, DO, OD.
Любопытный кусочек истории: через define можно поменять внешний вид языка, сохранив прежний компилятор. А вот читать и отлаживать такой код придётся уже с учётом собственного «диалекта».
https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h