Forth http://www.fforum.winglion.ru/ |
|
Postscript - подобные конструкции управления http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2105 |
Страница 1 из 1 |
Автор: | mOleg [ Вс май 10, 2009 14:00 ] |
Заголовок сообщения: | Postscript - подобные конструкции управления |
ну, вот и до постскрипта добрался :)\ имена взяты не оригинальные (из-за колизий) на сколько удачны придуманные мною не знаю. <pre> \ 09.05.2009 ~mOleg \ Сopyright [C] 2009 mOleg mininoleg@yahoo.com \ Postscript - подобные конструкции управления \ в зависимости от значения flag выполнить либо xta либо xtb : IfElse ( flag xta xtb --> ) ROT IF NIP ELSE DROP THEN EXECUTE ; \ выполнять бесконечное количество раз xt : infinite ( xt --> ) A>R BEGIN AR@ EXECUTE AGAIN ; \ выполнять xt указанное количество раз # : cycle ( # xt --> ) A>R >R BEGIN R> *WHILE >L AR@ L> 1 - >R EXECUTE REPEAT DROP ARDROP ; ?ABSENT test{ \EOF -- тестовая секция --------------------------------------- test{ :> sma 3 * ; 2 3 sma cycle 54 <> THROW :> smb 1 - *IF ;THEN ARDROP ARDROP ; 10 smb infinite THROW :> smc 123412 ; :> smd 509485 ; 0 smc smd IfElse smc EXECUTE <> THROW 112 smc smd IfElse smd EXECUTE <> THROW -1 smc smd IfElse smd EXECUTE <> THROW }test </pre> не сделал только аналог Фортового DO +LOOP , уж больно он муторный (думаю как сделать попроще). что интересно, cycle усложнен ради переносимости. Учтен вариант, когда адреса и данные имеют разную разрядность, правда без локального стека не обошлось. Ну, и по большому счтету, все такие конструкции желательно реализовывать на ассемблере, так как они очень сильно завязаны на устройство реальной машины с одной стороны, а с другой должны исполняться как можно быстрее. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |