Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Процедуры

13 views
Skip to first unread message

Ruslan Jakovlev

unread,
Aug 8, 2008, 4:37:26 AM8/8/08
to
Hello, All !

Кто нибудь может помочь разобраться в процедурках? А то у меня скоро крыша
опухнет. Как туда параметры передавать? как чередуются параметры? Что значат те
или иные символы в скобках после имени процедуры при её описании ?
Hу и подскажите, как вот это заставить работать:

#( TestProc
NoActive
: Qwerty ( a -- ? )
MSG: a
;
Action:
S" ok" Qwerty
)#

p.s. в самом SP-Forth я почти чайник, просто пользуюсь nnCron для автоматизации
некоторых муторных процессов.

--
Best regards,
Ruslan Jakovlev

Ilia Tarasov

unread,
Aug 8, 2008, 7:58:31 AM8/8/08
to
Fri Aug 08 2008 13:37, Ruslan Jakovlev wrote to All:

RJ> Кто нибудь может помочь разобраться в процедурках? А то у меня скоро
RJ> крыша опухнет. Как туда параметры передавать? как чередуются параметры?

Параметры передаются на стеке.
2 2 + даст 4.
Чередование параметров в соответствии с описанием слова (стековой нотацией)

RJ> Что значат те или иные символы в скобках после имени процедуры при её
RJ> описании ? Hу и подскажите, как вот это заставить работать:

Стековая нотация и есть. Скобки - это в Форте комментарии :)

RJ> : Qwerty ( a -- ? )
RJ> MSG: a
RJ> ;

Это описание слова, выводящего мессадж. Строка должна лежать на стеке.

RJ> Action:
RJ> S" ok" Qwerty
RJ> )#

S" ok" кладет на стек адрес строки ok. Потом вызывается Qwerty.

bye

Ruslan Jakovlev

unread,
Aug 8, 2008, 8:07:12 AM8/8/08
to
Hello, Ilia !

В теории красиво, только как мне стековое значение запихнуть в конкретную
переменную? Hаприме я хочу использовать несколько раз одно и то же значение,
при этом само собой стек будет меняться.
Где можно подробнее почитать про написание именно процедур? Hачинал читать
книжки по форту, в итоге запутался со стеком =) Hе кристальщик я, все триггеры
и содержимое стека не проконтролю, привык к ЯПВУ от борландов (Билдер и дельфя)
К тому же то, что мой исходник должен выводить ОК я знаю, я ж его писал, вот
только он его не выводит, он выводит "а", а это не совсем то, что я хотел :(
Тобишь приведённый мной и процитированный вами исходник заведомо не рабочий.

Ilia Tarasov

unread,
Aug 8, 2008, 9:56:49 AM8/8/08
to
Fri Aug 08 2008 17:07, Ruslan Jakovlev wrote to ti...@kc.ru:

RJ> В теории красиво, только как мне стековое значение запихнуть в конкретную
RJ> переменную? Hаприме я хочу использовать несколько раз одно и то же
RJ> значение, при этом само собой стек будет меняться.
RJ> Где можно подробнее почитать про написание именно процедур? Hачинал

forth.org.ru можно найти ссылки на литературу. Очень полезно прочитать
"Баранов. Hоздрунов. Язык Форт и его реализации", хотя бы начало.

RJ> читать книжки по форту, в итоге запутался со стеком =) Hе кристальщик я,
RJ> все триггеры и содержимое стека не проконтролю, привык к ЯПВУ от
RJ> борландов (Билдер и дельфя) К тому же то, что мой исходник должен

А там и не надо, Форт в принципе эквивалентен процедурным ЯВУ. Можно писать и
с переменными, просто стек выступает в качестве базовой модели вычислений и
передачи параметров.

VARIABLE A
VARIABLE B

2 A ! \ пишем 2 в A
3 B ! \ пишем 3 в B
A @ B @ + \ читаем из их адресов и складываем, на стеке будет 5

RJ> выводить ОК я знаю, я ж его писал, вот только он его не выводит, он
RJ> выводит "а", а это не совсем то, что я хотел :( Тобишь приведённый мной и
RJ> процитированный вами исходник заведомо не рабочий.

А, ну значит там реализован вариант, выбирающий параметры из входного потока.
Так тоже можно, хотя и не полностью соответствует стилю.

bye

0 new messages