Язык программирования Форт


Слово для просмотра содержимого стека


В некоторых версиях языка Форт имеется служебное слово для представления содержимого стека без разрушения. Будучи полезным для программирования, оно может быть просто необходимым для обучения пользования стеком. Приведенное ниже описание слова .S (печатать_стек) предназначено для тех, у кого его нет в их версии Форт. Попробуйте ввести его (как оно работает, вы поймете к концу этой главы). В стандарте Форт-79 слово .S определяется как

: .S DEPTH ?DUP 0= IF ." Stack empty" (стек пуст) ELSE 0 DO DEPTH ROLL DUP . LOOP THEN ;

в то время как в Форт-83 :

: .S DEPTH ?DUP 0= IF ." Stack empty" ELSE 0 DO DEPTH 1- ROLL DUP . LOOP THEN ;

(Взгляните, чтобы понять различие между этими двумя определениями, на различие в определении слова ROLL.)

Теперь, если вы введете

1 2 3 .S

то увидите на экране

1 2 3 ok

Введите теперь:

. . .

и вы увидите

3 2 1

т.е. убедитесь, что слово .S действительно ничего не изменяет в стеке. Если Вы введете .S, когда стек пуст, то будет напечатано сообщение об ошибке, которое является частью определения этого слова. Буква S часто используется в словах, относящихся к стеку. Поскольку . (точка) означает "напечатать", слово .S имеет вполне логичное имя.



Содержание раздела