LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

и задумайся о следующих достаточно очевидных и таких простых шагах

Не считаю эти шаги простыми...

а отчего бы Sexpr лиспа и не описать PEG-грамматикой.

По мне так намного проще написать такие строки на Forth:

0 variable n : r+ r@> 1+ >r@ ; 
: (: r+ >r@ 0 >r@ ; : ( ' literal ['] (: compile ; immediate 
: ) r@> n ! n @ srev n @ 1- 1 max for n @ 1 > if swap then rdup r@> execute next rdrop ;
: print . ; : >literal, ['] r+ compile ;
И пользоваться s-exp хоть в CT, хоть в RT.
: two-values 10 10 ;
( print ( - 2 3 ( + two-values ) ) )
Ограничение в D на чистоту «фейковое», можно и без него, но это скорее всего упростило компилятор.

Исходная версия MOPKOBKA, :

и задумайся о следующих достаточно очевидных и таких простых шагах

Не считаю эти шаги простыми...

а отчего бы Sexpr лиспа и не описать PEG-грамматикой.

По мне так намного проще написать такие строки на Forth:

0 variable n : r+ r@> 1+ >r@ ; 
: (: r+ >r@ 0 >r@ ; : ( ' literal ['] (: compile ; immediate 
: ) r@> n ! n @ srev n @ 1- 1 max for n @ 1 > if swap then rdup r@> execute next rdrop ;
: print . ; : >literal, ['] r+ compile ;
И пользоваться s-exp хоть в CT, хоть в RT.
: two-values 10 10 ;
( print ( - 2 3 ( + two-values ) ) )