Как я могу сделать весь стек поплавка видимым? - PullRequest
0 голосов
/ 26 декабря 2018

Язык программирования Forth использует стек для передачи параметров между функциями.Вместо того, чтобы давать подфункции число в качестве прямой информации, значение сначала помещается в стек данных, а другая функция получает значение из стека.

Специальная особенность Forth - обработка целочисленных значений и плавающих значений.значения очков на разных стеках.Это означает, что невозможно передать значение с плавающей запятой в набор данных.При написании коротких программ на Forth часто необходимо отлаживать строки кода.

Это возможно при распечатке содержимого стека.Если разработчик видит, что сейчас находится в стеке, он легко понимает, что не так с кодом.Распечатка содержимого стека важна для отслеживания ошибок.

После добавления двух чисел к обычному хранилищу данных можно показать его содержимое.В этом примере оба целых числа выводятся на печать после ввода команды «.s».Но если я помещаю два числа с плавающей запятой в выделенный стек с плавающей запятой, отображается только последний элемент.Как я могу сделать весь стек поплавка видимым?

gforth example.fs
1 2 .s cr        \ <2> 1 2
1.0e 2.0e f. cr  \ 2.
bye

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Одно возможное портативное решение (Программа Forth-2012)

\ print floating-point stack content
: .f ( F: i*r -- i*r )
  fdepth 0= if exit then
  here df! 1 dfloats allot
  recurse -1 dfloats allot
  here df@ fdup f.
;
0 голосов
/ 26 декабря 2018

У Gforth есть слово f.s, которое делает именно то, что вам нужно.

См. раздел «Проверка» руководства Gforth:

...