- Стандартный словарь Forth
-
Содержание
Определения
- CONSTANT ( N — ) CREATE , DOES> @ ; \ runtime: ( -- N )
- VARIABLE ( — ) CREATE 0 , DOES> ; \ runtime: ( -- addr )
Операции
Арифметические
+ (n1 n2 — сумма) сумма = n1 + n2 Сложение. - (n1 n2 — разность) Вычитание (n1-n2) . * (n1 n2 — произведение) Умножение. / (n1 n2 — частное) Деление. Частное = (n1/n2). MOD (u1 u2 — n-остаток) Деление. В стек заносится остаток от деления. /MOD (u1 u2 — n остаток n частное) Деление. В стек заносятся остаток и частное. Операции со стеком
- SWAP (n1 n2 — n2 n1) Перестановка двух верхних элементов стека.
- DUP (n — n n) Дублирование верхнего элемента стека.
- OVER (n1 n2 — n1 n2 n1) Копирование второго элемента и размещение копии в вершине стека.
- ROT (n1 n2 n3 — n2 n3 n1) Размещение третьего элемента в вершине стека.
- DROP (n —) Удаление из стека верхнего элемента.
- 2SWAP (d1 d2 — d2 d1) Перестановка двух верхних пар чисел.
- 2DUP (d — d d) Дублирование пары чисел, находящейся в вершине стека.
- 2OVER (d1 d2 — d1 d2 d1) Копирование второй пары чисел и размещение копии в вершине стека.
- 2DROP (d —) Удаление из стека
- : ххх уyу ; ( —) Определение нового слова с именем ххх, состоящее из слова или слов ууу.
- CR ( —) Возврат каретки и перевод строки.
- SPACES (n —) Вывод заданного числа пробелов.
- SPACE ( —) Вывод одного пробела.
- ЕMIТ (с —) Вывод символа.
- ." ххх" ( —) Вывод строки символов ххх. Символ " является признаком конца строки.
- + (nl n2 — сумма) Суммирование.
- . (n —) Вывод числа, за которым следует один пробел.
- (xхх) ( —) Комментарий, который текстовым интерпретатором не воспринимается. Символ) является ограничителем.
- FORGET имя ( —) С помощью этого слова мы забываем (удаляем иа словаря) указанное слово и все слова, внесенные в словарь после него.
- LIST (n —) Вывод на экран дискового блока.
- LOAD (n —) Загрузка дискового блока (компиляция или выполнение) . Блок 0 обычно загружен быть не может.
- FLUSH ( —) Запись всех обновленных дисковых буферов на диск, после чего освобождение этих буферов.
- \ ( —) Пропуск оставшегося текста данной строки.
- \S ( —) Пропуск оставшегося текста экрана.
- THRU (нач кон —) Загрузка всех блоков с номерами из диапазона от нач до кон
- .(текст) ( —) Вывод текста сообщения, ограниченного правой круглой скобкой. Используется, как правило, за пределами определения через двоеточие.
- THRIAD (n —) Вывод трех блоков с номерами, включающими n, начиная с номера, делящегося без остатка на 3.
- SHOW (нач кон —) Вывод блоков с номерами из диапазона от нач до кон по три блока.
- INDEX (нач кон --) Вывод комментария только для блоков, номера которых входят в диапазон от нач. до кон.
- LOCATE xxx ( —) или VIEW Вывод содержимого блока, иэ которого было загружено определение слова ххх.
Команды редактирования — работа со строками
- Т (n —) Вывод заданной строки.
- Р ( —) Рьь или Р XXX Копирование заданного фрагмента, еcли есть, в буфер вставок, после чего помещение копии буфера вставок в текущую строку.
- U ( —) Uьь или U ххх Копирование заданной строки, если есть, в буфер вставок после чего помещение копии буфера вставок в строку, следующую за текущей.
- G (блок строка) Копирование заданной строки и помещение ее в строку перед текущей, со сдвигом текущей и всех последующих строк вниз.
- BRING (блок нач кон) Получение строк в указанном диапазоне.
- X ( —) Копирование текущей строки в буфер вставок и извлечение этой строки из блока.
- F или ( —) F ххх Копирование указанной строки, если заданы, в буфер поиска, после чего поиск данной строки в текущем блоке.
- S или S xxx (n —) или (n — n) Копирование указанной строки, если задана, в буфер поиска, после чего просмотр блоков от текущего до n-ного в поисках указанной строки. Если строка найдена, на стек помещается номер последнего просмотренного блока.
- E ( —) Используется следом за F. Удаляется столько символов перед курсором, сколько их в данный момент находится в буфере поиска.
- I> или Б ххх ( —) Копирование указанной строки, если задана, в буфер поиска, поиск очередного вхождения этого фрагмента в текущей строке и удаление его.
- TILL или TILL xxx ( —) Копирование указанной строки, если задана, в буфер поиска, после чего удаление всех символов, начиная от курсора и заканчивая последним символом заданной строки.
- I или I XXX ( —) Копирование указанного фрагмента, если задан, в буфер вставок, после чего помещение содержимого буфера вставок сразу же после курсора.
- R или R xxx ( —) Объединяются команды Е и I. Замещение найденного фрагмента заданным фрагментом или содержимым буфер вставок.
- ^ ( —) Отметка конца текста, помещаемого в буфер.
- .R (u ширина-поля —)Вывод числа одинарной точности без знакa. Число выровнено справа по границе поля.
- PAGE ( —) Чистка экрана дисплея и установка курсора в верхний левый угол.
- QUIT ( —) Завершение выполнения текущей задачи и возврат управления на терминал.
Комбинированные команды редактировании WIPE ( —) Заполнение текущего блока пробелами. L ( —)
Циклы
- DO … LOOP Организация цикла со счетчиком по заданному диапазону индексов.
- DO: (граница индекс —)
- LOOP: ( —)
- DO … +LOOP Аналогично DO … LOOP . Только к индексу на каждом шаге добавляется значение
- DO: (граница индекс —)
- +LOOP: (n —) (при n = 1 превращается в вариант DO LOOP).
- LEAVE ( —) Немедленное завершение выполнения цикла LOOP или +LOOP. (Используетея только внутри цикла.)
- BEGIN … UNTIL Организация цикла с условием, который завершается, когда ? принимает значение истина.
- UNTIL: (? —)
- BEGIN ххх WHILE yyy REPEAT Организация цикла с условием, причем ххх выполняется всегда, а ууу — только если ? истинно.
- WHILE: (? —)
Вывод содержимого текущего блока
- N ( —) Делается текущим следующий блок.
- В ( —) Делается текущим предыдущий блок.
- COPY (откуда куда —) Копирование содержимое одного блока в другой.
- К ( —) Меняются местами содержимое буфера поиска и буфера вставок.
Числа
- число. представление числа в 16 битном представлении, например 2000.
- 123456789X число выводимое системой с ар. процессором в виде числа с двойной длиной
- D. (d —) Печать числа двойной длины со знаком.
- U. (u —) Вывод числа одинарной длины без знака с одним пробелом после него.
- UD. предназначено для вывода числа двойной длины без знака
- TYPE| align="center" |печать
- SIGN должно располагаться внутри выражения форматного вывода, вставляет знак «-» в строку символов лишь в том случае, если верхний символ в стеке является отрицательным
Редактирование
- BS Возврат назад на одну позицию («забой») 8
- LF Перевод строки 10
- CR Возврат каретки 13
Переменные
- VARIABLE ххх ( —) Создание переменной с именем ххх.
- ххх ( — а) Слово ххх при выполнении помещает в стек свой адрес.
- ! (n а --) Запоминание числа одинарной длины по заданному адресу.
- @ (a — n) Замещение адреса его содержимым.
- ? (а --) Вывод значения по заданному адресу с последующим пробелом.
- +! (n а --) Сложение числа одинарной длины с содержимым заданного адреса.
- 2VARIABLE xxx ( —) Создание переменной двойной длины
- ххх: ( — a) с именем ххх. Слово ххх при выполнении помещает на стек свой адрес.
- 2CONSTANT ххх (d —) Создает константу двойной длины с именем ххх и значением d.
- ххх: ( — d) Слово ххх при выполнении помещает в стек значение d.
- 2! (d а —) Запоминание числа двойной длины по заданному адресу.
- 2@ (а — d) Занесение в стек числа двойной длины, расположенного по заданному адресу.
Виды переменных
- n — число со знаком;
- +n — неотрицательное число;
- u — беззнаковое число;
- d — число со знаком двойной длины;
- +d — неотрицательное число двойной длины;
- ud — беззнаковое число двойной длины;
- c — символ;
- a — адрес в памяти;
- c-addr — строка (символьно-выровненный адрес).
Список компиляторов
- Janus Constructor (рус.)
Литература
- ANSI, пер. Сергеем Кадочниковым ANS94ru.fhlp. — 2006. (рус.)
- ANSI ANSI FORTH 94. — 1994. (англ.)
Категории:- Стековые языки программирования
- Языки программирования семейства Forth
Wikimedia Foundation. 2010.