]]> ]]>

Gforth

Реализация языка программирования Forth

Gforth — интерпретатор языка Forth, входящая в коллекцию GNU. Gforth написан на C и самом Forth.

Примеры:

Hello, World!:

Пример для версий gforth 0.7.0

Команда ." считывает строку, заключенную в двойные кавычки, и присоединяет ее к текущему определению, поэтому эта строка будет выведена при выполнении. Один пробел, отделяющий ." от Hello, не является частью строки, а требуется для того, чтобы распознать ." как команду.

Команда cr в конце программы выводит следующий за ней текст с новой строки, являясь эквивалентом nl в Prolog и endl в C++.

." Hello, World!" cr

Факториал:

Пример для версий gforth 0.7.0

Используется рекурсивное определение факториала. Forth — стек-ориентированный язык, поэтому все команды в нем основаны на работе со стеком. Так, DUP копирует верхний элемент стека, константа — добавляет число на верх стека, > — сравнивает второй сверху элемент с самым верхним, - — вычитает из второго сверху самый верхний и т.д.

: fac recursive
  dup 1 > IF
    dup 1 - fac *
  else
    drop 1
  endif ;
 
: lp
  swap 1 + swap
  do
    i . i ." ! = " i fac . cr
  loop ;
 
16 0 lp

Числа Фибоначчи:

Пример для версий gforth 0.7.0

Используется итеративное определение чисел Фибоначчи.

: fib-iter
  0 1 rot 0 ?do over + swap loop drop ;
 
: lp
  1 do
    i dup fib-iter . ." , "
  loop drop ;
 
17 lp
." ..."

Числа Фибоначчи:

Пример для версий gforth 0.7.0

Используется рекурсивное определение чисел Фибоначчи.

: fib-rec
  dup 2 u< if exit then
  1- dup recurse  swap 1- recurse  + ;
 
: lp
  1 do
    i dup fib-rec . ." , "
  loop drop ;
 
17 lp
." ..."

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам