Generated from docs/help/ANS94ru.fhlp on Mon, 04 Sep 2006 20:34:42 GMT+3

! 6.1.0010 ! "store " CORE ( x a-addr -- ) Сохраняет x в a-addr . See also: 3.3.3.1 Выравнивание адреса.
# 6.1.0030 # "number-sign" CORE ( ud1 -- ud2 ) Делит ud1 числом в BASE, дает частное ud2 и остаток n. (n - младший разряд ud1.) Преобразовывает n к внешней форме и добавляет результирующий символ к началу выходной строки отображаемого числа. Неопределенная ситуация существует если # выполняется вне <# #> ограничивающих преобразование числа. See also: 6.1.0040 #>, 6.1.0050 #S, 6.1.0490 <#.
#> 6.1.0040 #> "number-sign-greater" CORE ( xd -- c-addr u ) Удаляет xd. Делает выходную строку отображаемого числа доступной как символьную строку. C-addr и u определяют результирующую символьную строку. Программа может заменять символы в пределах строки. See also: 6.1.0030 #, 6.1.0050 #S, 6.1.0490 <#.
#S 6.1.0050 #S "number-sign-s" CORE ( ud1 -- ud2 ) Преобразует одну цифру ud1 согласно правилу для #. Продолжает преобразование до нулевого частного. ud2 нулевое. Неопределенная ситуация существует, если #S выполняется вне <# #> ограничивающих преобразование числа. See also: 6.1.0030 #, 6.1.0040 #>, 6.1.0490 <#.
' 6.1.0070 ' "tick" CORE ( "<spaces>name" -- xt ) Пропускает ведущие разделители пробелы. Выделяет name ограниченное пробелом. Ищет name, и возвращает xt, идентификатор исполнения для name. Неопределенная ситуация существует, если name не найдено. При интерпретации, ' xyz EXECUTE, эквивалентно xyz. See also: 3.4 Интерпретатор текста Forth, 3.4.1 Синтаксический анализ, A.6.1.2033 POSTPONE, A.6.1.2510 ['], D.6.7 Immediate-ности.
( 6.1.0080 ( "paren" CORE Compilation: Исполняет семантику выполнения, данную ниже. ( "ccc<paren>" -- ) Выделяет ccc, ограниченное ) (правая круглая скобка). ( - слово немедленного исполнения. Число символов в ccc может быть нулевое для числа символов в области анализа. See also: 3.4.1 Синтаксический анализ, 11.6.1.0080 (.
* 6.1.0090 * "star" CORE ( n1|u1 n2|u2 -- n3|u3 ) Умножает n1|u1 на n2|u2, возвращает n3|u3.
*/ 6.1.0100 */ "star-slash" CORE ( n1 n2 n3 -- n4 ) Умножает n1 на n2, с промежуточным результатом двойная-ячейка d. Делит d на n3, выдает частное одна-ячейка n4. Неопределенная ситуация существует, если n3 нулевое или если частное n4 находится вне диапазона числа со знаком. Если d и n3 отличаются по знаку, возвращенный результат, определенный реализацией будет такой же самый, как и возвращаемый фразой
>R M* R> FM/MOD SWAP DROP
или фразой
>R M* R> SM/REM SWAP DROP.
See also: 3.2.2.1 Целочисленное деление.
*/MOD 6.1.0110 */MOD "star-slash-mod" CORE ( n1 n2 n3 -- n4 n5 ) Умножает n1 на n2, с промежуточным результатом двойная-ячейка d. Делит d на n3, выдает остаток одна-ячейка n4 и частное одна-ячейка n5. Неопределенная ситуация существует, если n3 нулевое или если частное n5 находится вне диапазона числа одна-ячейка со знаком. Если d и n3 отличаются по знаку, возвращенный результат, определенный реализацией будет тот же самый, как и возвращаемый фразой >R M* R> FM/MOD или фразой >R M* R> SM/REM. See also: 3.2.2.1 Целочисленное деление.
+ 6.1.0120 + "plus" CORE ( n1|u1 n2|u2 -- n3|u3 ) Прибавляет n2|u2 к n1|u1, возвращая сумму n3|u3. See also: 3.3.3.1 Выравнивание адреса.
+! 6.1.0130 +! "plus-store" CORE ( n|u a-addr -- ) Прибавляет n|u к числу одна-ячейка в a-addr. See also: 3.3.3.1 Выравнивание адреса.
+LOOP 6.1.0140 +LOOP "plus-loop" CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: do-sys -- ) Добавляет семантику времени-выполнения, данную ниже к текущему определению. Разрешает назначения для всех неразрешенных ссылок LEAVE между местоположением, данным do-sys и следующим местоположением для перехода к выполнению слова после +LOOP. ( n -- ) ( R: loop-sys1 -- | loop-sys2 ) Неопределенная ситуация существует, если параметры управления циклом недоступны. Прибавляет n к индексу цикла. Если индекс цикла не пересекал границу между пределом цикла минус один и пределом цикла, продолжает выполнение с начала цикла. Иначе, удаляет текущие параметры управления цикла и продолжает выполнение сразу после цикла. See also: 6.1.1240 DO, 6.1.1680 I, 6.1.1760 LEAVE.
, 6.1.0150 , "comma" CORE ( x -- ) Резервирует одну ячейку области данных, и сохраняет x в ячейке. Если указатель области данных выровнен перед выполнением ",", то он останется выровненным после окончания выполнения ",". Неопределенная ситуация существует если указатель области данных не выровнен перед выполнением ",". See also: 3.3.3 Область данных, 3.3.3.1 Выравнивание адреса.
- 6.1.0160 - "minus" CORE ( n1|u1 n2|u2 -- n3|u3 ) Вычитает n2|u2 из n1|u1, и возвращает разницу n3|u3. See also: 3.3.3.1 Выравнивание адреса.
. 6.1.0180 . "dot" CORE ( n -- ) Отображает n в формате свободного поля. See also: 3.2.1.2 Преобразование цифр, 3.2.1.3 Изображение чисел в свободном поле.
." 6.1.0190 ." "dot-quote" CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( "ccc<quote>" -- ) Выделяет ccc, ограниченную " (двойная кавычка). Добавляет семантику времени-выполнения данную ниже к текущему определению. ( -- ) Отображает ccc. See also: 3.4.1 Синтаксический анализ, 6.2.0200 .(.
/ 6.1.0230 / "slash" CORE ( n1 n2 -- n3 ) Делит n1 на n2, возвращает частное одна-ячейка n3. Неопределенная ситуация существует, если n2 нулевое. Если n1 и n2 отличаются по знаку, возвращенный результат, определенный реализацией будет тот же самый, как и возвращаемый фразой >R S>D R> FM/MOD SWAP DROP или фразой >R S>D R> SM/REM SWAP DROP. See also: 3.2.2.1 Целочисленное деление.
/MOD 6.1.0240 /MOD "slash-mod" CORE ( n1 n2 -- n3 n4 ) Делит n1 на n2, возвращает остаток одна-ячейка n3 и частное одна- ячейка n4. Неопределенная ситуация существует, если n2 нулевое. Если n1 и n2 отличаются по знаку, возвращенный результат, определенный реализацией будет тот же самый, как и возвращаемый фразой >R S>D R> FM/MOD или фразой >R S>D R> SM/REM. See also: 3.2.2.1 Целочисленное деление.
0< 6.1.0250 0< "zero-less" CORE ( n -- flag ) flag - true, если и только если n - меньше нуля.
0= 6.1.0270 0= "zero-equals" CORE ( x -- flag ) flag - true, если и только если x - равно нулю.
1+ 6.1.0290 1+ "one-plus" CORE ( n1|u1 -- n2|u2 ) Прибавляет один(1) к n1|u1 возвращает сумму n2|u2.
1- 6.1.0300 1- "one-minus" CORE ( n1|u1 -- n2|u2 ) Вычитает один (1) из n1|u1, возвращает разницу n2|u2.
2! 6.1.0310 2! "two-store" CORE ( x1 x2 a-addr -- ) Сохраняет пару-ячеек x1 x2 в a-addr, x2 в a-addr и x1 в следующей последовательной ячейке. Это эквивалентно последовательности SWAP OVER ! CELL+ !. See also: 3.3.3.1 Выравнивание адреса.
2* 6.1.0320 2* "two-star" CORE ( x1 -- x2 ) x2 - результат смещения x1 на один бит к старшему двоичному разряду, заполнение освобожденного младшего бита нулем.
2/ 6.1.0330 2/ "two-slash" CORE ( x1 -- x2 ) x2 - результат смещения x1 на один бит к младшему двоичному разряду, оставляет старший бит неизменным.
2@ 6.1.0350 2@ "two-fetch" CORE ( a-addr -- x1 x2 ) Извлекает пару-ячеек x1 x2 сохраненную в a-addr. x2 сохранено в a- addr и x1 в следующей последовательной ячейке. Это эквивалентно последовательности DUP CELL+ @ SWAP @. See also: 3.3.3.1 Выравнивание адреса, 6.1.0310 2!.
2DROP 6.1.0370 2DROP "two-drop" CORE ( x1 x2 -- ) Удаляет пару-ячеек x1 x2 из стека.
2DUP 6.1.0380 2DUP "two-dupe" CORE ( x1 x2 -- x1 x2 x1 x2 ) Дублирует пару-ячеек x1 x2.
2OVER 6.1.0400 2OVER "two-over" CORE ( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 ) Копирует пару-ячеек x1 x2 на вершину стека.
2SWAP 6.1.0430 2SWAP "two-swap" CORE ( x1 x2 x3 x4 -- x3 x4 x1 x2 ) Меняет местами две верхних пары-ячеек.
: 6.1.0450 : "colon" CORE ( C: "<spaces>name" -- colon-sys ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name, называемое "определение через двоеточие". Вводит состояние компиляции и начинает текущее определение, создавая colon-sys. Добавляет семантику инициирования, данную ниже к текущему определению. Семантика выполнения name будет определяться скомпилированными в тело определения словами. Текущее определение не должно быть находимым в словаре, пока оно не закончено (или до выполнения DOES> в некоторых системах). Initiation: ( i*x -- i*x ) ( R: -- nest-sys ) Сохраняет зависящую-от-реализации информацию nest-sys о вызове определения. Состояние стека i*x, представляет параметры для name. name Выполнение: ( i*x -- j*x ) Выполняет name определения. Состояние стека i*x, и j*x представляет параметры и результаты из name, соответственно. See also: 3.4 Интерпретатор текста Forth, 3.4.1 Синтаксический анализ, 3.4.5 Компиляция, 6.1.1250 DOES>, 6.1.2500 [, 6.1.2540 ], 15.6.2.0470 ;CODE.
; 6.1.0460 ; "semicolon" CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: colon-sys -- ) Добавляет семантику времени-выполнения ниже к текущему определению. Заканчивает текущее определение, позволяя ему быть найденным в словаре, и вводит состояние интерпретации, потребляя colon-sys. Если указатель области данных не выровненный, резервирует достаточно области данных для его выравнивания. ( -- ) ( R: nest-sys -- ) Возвращение к вызывающему определению, определенному nest-sys. See also: 3.4 Интерпретатор текста Forth, 3.4.5 Компиляция.
< 6.1.0480 < "less-than" CORE ( n1 n2 -- flag ) flag - true, если и только если n1 - меньше чем n2. See also: 6.1.2340 U<.
<# 6.1.0490 <# "less-number-sign" CORE ( -- ) Инициализирует процесс выходного преобразования отображаемого числа. See also: 6.1.0030 #, 6.1.0040 #>, 6.1.0050 #S.
= 6.1.0530 = "equals" CORE ( x1 x2 -- flag ) flag - true, если и только если x1 - побитно равно x2.
> 6.1.0540 > "greater-than" CORE ( n1 n2 -- flag ) flag - true, если и только если n1 - больше чем n2. See also: 6.2.2350 U>.
>BODY 6.1.0550 >BODY "to-body" CORE ( xt -- a-addr ) a-addr - адрес области данных соответствующей xt. Неопределенная ситуация существует, если xt не для слова определенного через CREATE. See also: 3.3.3 Область данных.
>IN 6.1.0560 >IN "to-in" CORE ( -- a-addr ) a-addr - адрес ячейки, содержащей смещение в символах от начала входного буфера до начала области анализа.
>NUMBER 6.1.0570 >NUMBER "to-number" CORE ( ud1 c-addr1 u1 -- ud2 c-addr2 u2 ) ud2 - без знаковый результат преобразования символов из строки указанной c-addr1 u1 в цифры, используя число в BASE, и добавления каждого в ud1 после умножения ud1 на число из BASE. Преобразование продолжается слева направо до встречи не преобразуемого символа, включая "+" или "-", или пока строка полностью не будет преобразована. c-addr2 - местоположение первого не преобразованного символа или первого символа после конца строки, если строка была полностью преобразована. u2 - число не преобразованных символов в строке. Неопределенная ситуация существует если ud2 переполняется в процессе преобразования. See also: 3.2.1.2 Преобразование цифр.
>R 6.1.0580 >R "to-r" CORE Interpretation: Семантика интерпретации для этого слова не определена. ( x -- ) ( R: -- x ) Перемещает x на стек возвратов. See also: 3.2.3.3 Стек возвратов, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0410 2R>, 6.2.0415 2R@.
?DUP 6.1.0630 ?DUP "question-dupe" CORE ( x -- 0 | x x ) Дублирует x, если оно ненулевое.
@ 6.1.0650 @ "fetch" CORE ( a-addr -- x ) x - значение, сохраненное в a-addr. See also: 3.3.3.1 Выравнивание адреса.
ABORT 6.1.0670 ABORT CORE ( i*x -- ) ( R: j*x -- ) Освобождает стек данных и выполняет функцию QUIT, которая включает освобождение стека возвратов, без отображения сообщения. See also: 9.6.2.0670 ABORT.
ABORT" 6.1.0680 ABORT" "abort-quote" CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( "ccc<quote>" -- ) Выделяет ccc, ограниченную " (двойная кавычка). Добавляет семантику времени-выполнения данную ниже к текущему определению. ( i*x x1 -- | i*x ) ( R: j*x -- | j*x ) Удаляет x1 из стека. Если какой либо бит x1 - не нулевой, отображает ccc и выполняет определенную реализацией последовательность сброса, которая включает функцию ABORT. See also: 3.4.1 Синтаксический анализ, 9.6.2.0680 ABORT".
ABS 6.1.0690 ABS "abs" CORE ( n -- u ) u - абсолютное значение n.
ACCEPT 6.1.0695 ACCEPT CORE ( c-addr +n1 -- +n2 ) Получает строку с максимумом +n1 символов. Неопределенная ситуация существует, если +n1 нулевое или больше чем 32767. Отображает полученные графические символы. Программа, которая зависит от присутствия или отсутствия неграфических символов в строке имеет зависимость от окружающей среды. Функции редактирования, если таковые вообще имеются, которые система исполняет при создании строки - определенное реализацией. Ввод заканчивается, когда получен определенный реализацией признак конца строки. Когда ввод заканчивается, ничего не добавляется в конец строки, и отображение обеспечивается определенным реализацией способом. +n2 - длина строки, сохраненной в c-addr.
ALIGN 6.1.0705 ALIGN CORE ( -- ) Если указатель области данных не выровнен, резервирует достаточно пространства, для его выравнивания. See also: 3.3.3 Область данных, 3.3.3.1 Выравнивание адреса.
ALIGNED 6.1.0706 ALIGNED CORE ( addr -- a-addr ) a-addr - первый выровненный адрес большее чем или равный addr. See also: 3.3.3.1 Выравнивание адреса.
ALLOT 6.1.0710 ALLOT CORE ( n -- ) Если n больше нуля, резервирует n адресуемых элементов области данных. Если n меньше нуля, освобождает | n | адресуемых элементов области данных. Если n нуль, оставляет указатель области данных неизменным. Если указатель области данных выровнен, и n - кратно размеру ячейки перед выполнением ALLOT, он останется выровненным, и после завершения выполнения ALLOT. Если указатель области данных выровнен на символ, и n - кратно размеру символа перед выполнением ALLOT, он останется выровненным на символ, и после завершения выполнения ALLOT. See also: 3.3.3 Область данных.
AND 6.1.0720 AND CORE ( x1 x2 -- x3 ) x3 поразрядное логическое "и" x1 и x2.
BASE 6.1.0750 BASE CORE ( -- a-addr ) a-addr - адрес ячейки, содержащей текущее основание системы счисления для преобразования чисел {{2...36}}.
BEGIN 6.1.0760 BEGIN CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: -- dest ) Помещает адрес следующей ячейки для передачи управления, dest, на стек потока-управления. Добавляет семантику времени-выполнения, данную ниже к текущему определению. ( -- ) Продолжает выполнение. See also: 3.2.3.2 Стек потока-управления, 6.1.2140 REPEAT, 6.1.2390 UNTIL, 6.1.2430 WHILE.
BL 6.1.0770 BL "b-l" CORE ( -- char ) char - символьное значение для пробела.
C! 6.1.0850 C! "c-store" CORE ( char c-addr -- ) Сохраняет char в c-addr. Когда размер символа меньше чем размер ячейки, переданы только младшие биты, соответствующие размеру символа. See also: 3.3.3.1 Выравнивание адреса.
C, 6.1.0860 C, "c-comma" CORE ( char -- ) Резервирует пространство для одного символа в области данных и запоминает char в нем. Если указатель области данных - выровнен на символ перед выполнением C,, он останется выровненным на символ и после окончания выполнения C,. Неопределенная ситуация существует, если указатель области данных - не выровненный на символ до выполнения C,. See also: 3.3.3 Область данных, 3.3.3.1 Выравнивание адреса.
C@ 6.1.0870 C@ "c-fetch" CORE ( c-addr -- char ) Выбирает символ, сохраненный в c-addr. Когда размер ячейки больше чем размер символа, все неиспользованные старшие биты - нули. See also: 3.3.3.1 Выравнивание адреса.
CELL+ 6.1.0880 CELL+ "cell-plus" CORE ( a-addr1 -- a-addr2 ) Добавляет размер в адресуемых элементах ячеек к a-addr1, возвращает a-addr2. See also: 3.3.3.1 Выравнивание адреса.
CELLS 6.1.0890 CELLS CORE ( n1 -- n2 ) n2 - размер в адресуемых элементах n1 ячеек.
CHAR 6.1.0895 CHAR "char" CORE ( "<spaces>name" -- char ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Помещает значение его первого символа на стек. See also: 3.4.1 Синтаксический анализ, 6.1.2520 [CHAR].
CHAR+ 6.1.0897 CHAR+ "char-plus" CORE ( c-addr1 -- c-addr2 ) Добавляет размер в адресуемых элементах символа к c-addr1, возвращает c-addr2. See also: 3.3.3.1 Выравнивание адреса.
CHARS 6.1.0898 CHARS "chars" CORE ( n1 -- n2 ) n2 - размер в адресуемых элементах n1 символов.
CONSTANT 6.1.0950 CONSTANT CORE ( x "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения, определенной ниже. name объявляется как "constant". name Выполнение: ( -- x ) Размещает x на стеке. See also: 3.4.1 Синтаксический анализ.
COUNT 6.1.0980 COUNT CORE ( c-addr1 -- c-addr2 u ) Возвращает спецификацию символьной строки для строки со счетчиком сохраненной в c-addr1. c-addr2 - адрес первого символа после c- addr1. u - содержимое символа в c-addr1, который является длиной в символах строки в c-addr2.
CR 6.1.0990 CR "c-r" CORE ( -- ) Заставляет последующий вывод появляться в начале следующей строки.
CREATE 6.1.1000 CREATE CORE ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения, определенной ниже. Если указатель области данных не выровнен, резервирует достаточно области данных для его выравнивания. Новый указатель области данных определяет поле данных name. CREATE не распределяет область данных в поле данных name. name Выполнение: ( -- a-addr ) a-addr - адрес поля данных name. Семантика выполнения name может быть расширена использованием DOES>. See also: 3.3.3 Область данных, 6.1.1250 DOES>.
DECIMAL 6.1.1170 DECIMAL CORE ( -- ) Устанавливает основание системы счисления преобразования чисел на десять (десятичные числа).
DEPTH 6.1.1200 DEPTH CORE ( -- +n ) +n - число значений данных одна-ячейка, содержащихся на стеке данных перед тем, как +n было помещено на стек.
DO 6.1.1240 DO CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: -- do-sys ) Помещает do-sys на стек потока управления. Добавляет семантику времени-выполнения данную ниже к текущему определению. Семантика не завершена, пока do-sys не разрешена потребителем типа LOOP. ( n1|u1 n2|u2 -- ) ( R: -- loop-sys ) Устанавливает параметры управления цикла с индексом n2|u2, и границей n1|u1. Неопределенная ситуация существует, если оба n1|u1 и n2|u2- не одного типа. Что-либо уже имеющееся на стеке возвратов становится недоступным до удаления параметров управления циклом. See also: 3.2.3.2 Стек потока управления, 6.1.0140 +LOOP, 6.1.1800 LOOP.
DOES> 6.1.1250 DOES> "does" CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: colon-sys1 -- colon-sys2 ) Добавляет семантику времени-выполнения ниже к текущему определению. В любом случае текущее определение представленное находимым в словаре при компиляции DOES> - определенное реализацией. Потребляет colon-sys1 и производит colon-sys2. Добавляет семантику инициирования, данную ниже к текущему определению. ( -- ) ( R: nest-sys1 -- ) Заменяет семантику выполнения самого последнего определения, упоминаемого как name, семантикой выполнения имени данной ниже. Возвращает управление на вызывающее определение, определенное nest- sys1. Неопределенная ситуация существует если name не было определено CREATE, или определенным пользователем словом которое вызывает CREATE. Initiation: ( i*x -- i*x a-addr ) ( R: -- nest-sys2 ) Сохраняет зависящую-от-реализации информацию nest-sys2 о вызывающем определении. Размещает адрес поля данных name на стеке. Состояние стека i*x представляет параметры name. name Выполнение: ( i*x -- j*x ) Выполняет часть определения, которая начинается с семантики инициирования добавленной изменившим name DOES>. Состояния стека i*x и j*x представляют параметры, и результаты name, соответственно. See also: 6.1.1000 CREATE.
DROP 6.1.1260 DROP CORE ( x -- ) Удаляет x из стека.
DUP 6.1.1290 DUP "dupe" CORE ( x -- x x ) Дублирует x.
ELSE 6.1.1310 ELSE CORE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: orig1 -- orig2 ) Помещает адрес ячейки новой неразрешенной ссылки вперед orig2 на стек потока управления. Добавляет семантику времени-выполнения данную ниже к текущему определению. Семантика будет не завершена, пока orig2 не разрешена (например, THEN). Разрешает ссылку вперед orig1 использованием адреса ячейки после добавленной семантики времени-выполнения. ( -- ) Продолжает выполнение с адреса ячейки данного ссылкой orig2. See also: 6.1.1700 IF, 6.1.2270 THEN.
EMIT 6.1.1320 EMIT CORE ( x -- ) Если x - графический символ в наборе символов определенном реализацией - показать x. Эффект EMIT для всех других значений x - определенное реализацией. Когда просматривается символ, чьи символом-определенные биты имеют значение между hex 20 и 7E включительно, отображается соответствующий стандартный символ, определенный 3.1.2.1 Графические символы. Поскольку различные устройства вывода могут реагировать по-разному на управляющие символы, программы, использующие управляющие символы для выполнения специфических функций, имеют зависимость от окружения. Каждый EMIT, имеет дело только с одним символом. See also: 6.1.2310 TYPE.
ENVIRONMENT? 6.1.1345 ENVIRONMENT? "environment-query" CORE ( c-addr u -- false | i*x true ) c-addr - адрес символьной строки, и u - ее размер. u может иметь значение в диапазоне от нуля до максимума определенного реализацией, но не должен быть меньше чем 31. Символьная строка должна содержать ключевое слово из 3.2.6 Запросы к окружению или дополнительных наборов слов, которое будут проверено на соответствие атрибутам существующей среды. Если система рассматривает атрибут как неизвестный, возвращается флаг - false; иначе, флаг - true, и возвращенное i*x имеет тип, указанный в таблице для запрашиваемого атрибута.
#TIB 6.2.0060 #TIB "number-t-i-b" CORE EXT ( -- a-addr ) a-addr - адрес ячейки, содержащей число символов во входном буфере терминала. Примечание: Это слово устаревшее и включено как уступка существующим реализациям.
.( 6.2.0200 .( "dot-paren" CORE EXT Compilation: Исполняет семантику выполнения, данную ниже. Execution: ( "ccc<paren>" -- ) Выделяет и отображает ccc, ограниченную ) (правая круглая скобка). .( является словом немедленного исполнения. See also: 3.4.1 Синтаксический анализ, 6.1.0190 .".
.R 6.2.0210 .R "dot-r" CORE EXT ( n1 n2 -- ) Отображает n1 выровненное вправо в поле шириной n2 символов. Если число символов требуемых для отображения n1 больше чем n2, все цифры отображаются без ведущих пробелов в поле необходимой ширины.
0<> 6.2.0260 0<> "zero-not-equals" CORE EXT ( x -- flag ) flag - true, если и только если x - не равно нулю.
0> 6.2.0280 0> "zero-greater" CORE EXT ( n -- flag ) flag - true, если и только если n - больше нуля.
2>R 6.2.0340 2>R "two-to-r" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Execution: ( x1 x2 -- ) ( R: -- x1 x2 ) Перемещает пару-ячеек x1 x2 на стек возвратов. Семантически эквивалентно SWAP >R >R. See also: 3.2.3.3 Стек возвратов, 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 6.2.0410 2R>, 6.2.0415 2R@.
2R> 6.2.0410 2R> "two-r-from" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Execution: ( -- x1 x2 ) ( R: x1 x2 -- ) Перемещает пару-ячеек x1 x2 со стека возвратов. Семантически эквивалентно R> R> SWAP. See also: 3.2.3.3 Стек возвратов, 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0415 2R@.
2R@ 6.2.0415 2R@ "two-r-fetch" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Execution: ( -- x1 x2 ) ( R: x1 x2 -- x1 x2 ) Копирует пару-ячеек x1 x2 со стека возвратов. Семантически эквивалентно R> R> 2DUP >R >R SWAP. See also: 3.2.3.3 Стек возвратов, 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0410 2R>.
:NONAME 6.2.0455 :NONAME "colon-no-name" CORE EXT ( C: -- colon-sys ) ( S: -- xt ) Создает идентификатор исполнения xt, вводит состояние компиляции и начинает текущее определение, производя colon-sys. Добавляет семантику инициирования данную ниже к текущему определению. Семантика выполнения xt будет определена скомпилированными в тело определения словами. Это определение может быть выполнено позже, используя xt EXECUTE. Если стек потока управления реализован с использованием стека данных, colon-sys должен быть самым верхним элементом на стеке данных. Initiation: ( i*x -- i*x ) ( R: -- nest-sys ) Сохраняет зависящую-от-реализации информацию nest-sys о вызывающем определении. Состояние стека i*x представляет параметры для xt. xt Выполнение: ( i*x -- j*x ) Выполняет определение определенное xt. Состояние стека i*x и i*x представляет параметры для и результаты от xt, соответственно. См. 3.2.3.2 Стек потока-управления.
<> 6.2.0500 <> "not-equals" CORE EXT ( x1 x2 -- flag ) flag - true, если и только если x1 побитно не эквивалентно x2.
?DO 6.2.0620 ?DO "question-do" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: -- do-sys ) Помещает do-sys на стек потока управления. Добавляет семантику времени-выполнения данную ниже к текущему определению. Семантика не завершена, пока не разрешена потребителем do-sys типа LOOP. ( n1|u1 n2|u2 -- ) ( R: -- | loop-sys ) Если n1|u1 равно n2|u2, продолжает выполнение с адреса ячейки данного потребителем do-sys. Иначе устанавливает параметры управления цикла с индексом n2|u2, и границей n1|u1, и продолжает выполнение непосредственно после ?DO. Что - либо уже имеющееся на стеке возвратов становится недоступным до удаления параметров управления циклом. Неопределенная ситуация существует, если оба n1|u1 и n2|u2- не одного типа. See also: 3.2.3.2 Стек потока-управления, 6.1.0140 +LOOP, 6.1.1240 DO, 6.1.1680 I, 6.1.1760 LEAVE, 6.1.1800 LOOP, 6.1.2380 UNLOOP.
AGAIN 6.2.0700 AGAIN CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: dest -- ) Добавляет семантику времени-выполнения, данную ниже к текущему определению, разрешением ссылки назад dest. ( -- ) Продолжает выполнение с адреса ячейки определенного dest. Если никакое другое слово потока управления не используется, любой код программы после AGAIN не будет выполнен. See also: 6.1.0760 BEGIN.
C" 6.2.0855 C" "c-quote" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( "ccc<quote>" -- ) Выделяет ccc, ограниченное " (двойная кавычка), и добавляет семантику времени-выполнения данную ниже к текущему определению. ( -- c-addr ) Возвращает c-addr строку со счетчиком, состоящую из символов ccc. Программа не должна изменять возвращенную строку. See also: 3.4.1 Синтаксический анализ, 6.1.2165 S", 11.6.1.2165 S".
CASE 6.2.0873 CASE CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: -- case-sys ) Отмечает начало CASE ... OF ... ENDOF ... ENDCASE структуры. Добавляет семантику времени-выполнениия, данную ниже к текущему определению. ( -- ) Продолжает выполнение. See also: 6.2.1342 ENDCASE, 6.2.1343 ENDOF, 6.2.1950 OF.
COMPILE, 6.2.0945 COMPILE, "compile-comma" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Execution: ( xt -- ) Добавляет семантику выполнения определения представленного xt к семантике выполнения текущего определения.
CONVERT 6.2.0970 CONVERT CORE EXT ( ud1 c-addr1 -- ud2 c-addr2 ) ud2 - результат преобразования символов в пределах текста начинающегося с первого символа после c-addr1 в цифры, используя число из BASE, и добавление каждой цифры в ud1 после умножения ud1 на число из BASE. Преобразование продолжается до встречи с не преобразуемым символом. c-addr2 - адрес ячейки первого не преобразованного символа. Неопределенная ситуация существует, если ud2 переполняется. Примечание: Это слово устаревшее и включено как уступка существующим реализациям. Его функция заменена на 6.1.0570 >NUMBER. See also: 3.2.1.2 Преобразование цифр.
ENDCASE 6.2.1342 ENDCASE "end-case" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: case-sys -- ) Отмечает конец CASE ... OF ... ENDOF ... ENDCASE структуры. Использует case-sys для разрешения всей структуры. Добавляет семантику времени-выполнения данную ниже к текущему определению. ( x -- ) Снимает case селектор x, и продолжает выполнение. See also: 6.2.0873 CASE, 6.2.1343 ENDOF, 6.2.1950 OF.
ENDOF 6.2.1343 ENDOF "end-of" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: case-sys1 of-sys -- case-sys2 ) Отмечает конец OF ... ENDOF части CASE структуры. Следующий адрес ячейки для передачи управления разрешает ссылка of-sys. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Заменяет case-sys1 на case-sys2 на стеке потока управления, для разрешения ENDCASE. ( -- ) Продолжает выполнение с адреса ячейки определенного потребителем case-sys2. See also: 6.2.0873 CASE, 6.2.1342 ENDCASE, 6.2.1950 OF.
ERASE 6.2.1350 ERASE CORE EXT ( addr u -- ) Если u больше нуля, очистить все биты в каждом из u последовательных адресуемых элементов памяти, начинающихся с addr.
EXPECT 6.2.1390 EXPECT CORE EXT ( c-addr +n -- ) Получает строку с максимумом в +n символов. Отображает графические символы по мере их получения. Программа, которая зависит от присутствия или отсутствия неграфических символов в строке имеет зависимость от окружения. Функции редактирования, если таковые вообще имеются, которые система исполняет, чтобы создать строку символов - определенное реализацией. Ввод заканчивается, когда получен определенный реализацией признак конца строки или если строка длиной +n символов. Когда ввод заканчивается, ничего не добавляется в конец строки, и изображение обеспечивается определенным реализацией способом. Сохраняет строку в c-addr и ее длинну в SPAN. Примечание: Это слово устаревшее и включено как уступка существующим реализациям. Его функция заменена на 6.1.0695 ACCEPT.
FALSE 6.2.1485 FALSE CORE EXT ( -- false ) Возвращает флаг false. See also: 3.1.3.1 Флаги
HEX 6.2.1660 HEX CORE EXT ( -- ) Устанавливает содержимое BASE в 16.
MARKER 6.2.1850 MARKER CORE EXT ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения, определенной ниже. name Выполнение: ( -- ) Восстанавливает все распределение словаря и указатели порядка поиска на состояние, которое они имели непосредственно до определения name. Удаляет определение name и все последующие определения. Восстановление любых все еще существующих структур, которые могли бы обратиться к удаленным определениям или освобожденной области данных предусматривать не обязательно. Никакая другая контекстная информация типа основания счисления не затрагивается. See also: 3.4.1 Синтаксический анализ, 15.6.2.1580 FORGET.
NIP 6.2.1930 NIP CORE EXT ( x1 x2 -- x2 ) Удаляет первый элемент ниже вершины стека.
OF 6.2.1950 OF CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: -- of-sys ) Помещает of-sys на стек потока управления. Добавляет семантику времени-выполнения данную ниже к текущему определению. Семантика не завершена, пока не разрешена of-sys потребителем типа ENDOF. ( x1 x2 -- | x1 ) Если два значения на стеке - не равны, снимает верхнее значение и продолжает выполнение с адреса ячейки определенного потребителем of-sys, например, после следующего ENDOF. Иначе, снимает оба значения и продолжает выполнение в строке. See also: 6.2.0873 CASE, 6.2.1342 ENDCASE, 6.2.1343 ENDOF.
PAD 6.2.2000 PAD CORE EXT ( -- c-addr ) c-addr - адрес временной области, которая может использоваться с целью хранения данных для промежуточной обработки. See also: 3.3.3.6 Другие временные области.
PARSE 6.2.2008 PARSE CORE EXT ( char "ccc<char>" -- c-addr u ) Выделяет ccc, ограниченную разделителем char. c-addr - адрес (в пределах входного буфера) и u - длина выделенной строки. Если область анализа была пуста, результирующая строка имеет нулевую длину. See also: 3.4.1 Синтаксический анализ.
PICK 6.2.2030 PICK CORE EXT ( xu ... x1 x0 u -- xu ... x1 x0 xu ) Удаляет u. Копирует xu на вершину стека. Неопределенная ситуация существует, если до выполнения PICK на стеке меньше u+2 элементов.
QUERY 6.2.2040 QUERY CORE EXT ( -- ) Делает пользовательское устройство ввода данных входным источником. Получает ввод в буфер ввода терминала, заменяя любое предыдущее содержимое. Делает результат, чей адрес возвращается TIB, входным буфером. Установить >IN в ноль. Примечание: Это слово устаревшее и включено как уступка существующим реализациям.
REFILL 6.2.2125 REFILL CORE EXT ( -- flag ) Пытается заполнить входной буфер из входного источника, возвращая true flag если успешно. Если входной источник - пользовательское устройство ввода, пытается получить ввод во входной буфер терминала. Если успешно, делает результат входным буфером, устанавливает >IN в ноль, и возвращает true. Получение строки не содержащей никакие символы рассматривается успешным. Если ввод не доступен из текущего входного источника, возвращает false. Когда входной источник - строка от EVALUATE, возвращает false и не исполняет никакое другое действие. See also: 7.6.2.2125 REFILL, 11.6.2.2125 REFILL.
RESTORE-INPUT 6.2.2148 RESTORE-INPUT CORE EXT ( xn ... x1 n -- flag ) Пытается восстановить спецификацию входного источника к состоянию описанному x1 ... xn. flag - true, если спецификация входного источника не может быть так восстановлена. Неопределенная ситуация существует если входной источник, представленный параметрами - не совпадает с текущим входным источником. See also: A.6.2.2182 SAVE-INPUT.
ROLL 6.2.2150 ROLL CORE EXT ( xu xu-1 ... x0 u -- xu-1 ... x0 xu ) Удаляет u. Вращает u+1 элементов на вершине стека. Неопределенная ситуация существует, если перед выполнением ROLL на стеке имелось меньше u+2 элементов.
SAVE-INPUT 6.2.2182 SAVE-INPUT CORE EXT ( -- xn ... x1 n ) x1 ... xn описывают текущее состояние спецификации входного источника для более позднего использования RESTORE-INPUT.
SOURCE-ID 6.2.2218 SOURCE-ID "source-i-d" CORE EXT ( -- 0 | -1 ) Идентифицирует входной источник следующим образом: SOURCE-ID Входной источник -------------------------------------------- -1 Строка (через EVALUATE) 0 Пользовательское устройство ввода -------------------------------------------- See also: 11.6.1.2218 SOURCE-ID.
SPAN 6.2.2240 SPAN CORE EXT ( -- a-addr ) a-addr - адрес ячейки, содержащей число символов сохраненное последним выполнением EXPECT. Примечание: Это слово устаревшее и включено как уступка существующим реализациям.
TIB 6.2.2290 TIB "t-i-b" CORE EXT ( -- c-addr ) c-addr - адрес буфера ввода терминала. Примечание: Это слово устаревшее и включено как уступка существующим реализациям.
TO 6.2.2295 TO CORE EXT Interpretation: ( x "<spaces>name" -- ) Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. Сохраняет x в name. Неопределенная ситуация существует, если name не было определено через VALUE. Compilation: ( "<spaces>name" -- ) Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Неопределенная ситуация существует, если name не было определено через VALUE. ( x -- ) Сохраняет x в name. Примечание: Неопределенная ситуация существует, если POSTPONE или [COMPILE], применяется к TO. See also: 6.2.2405 VALUE, 13.6.1.2295 TO.
TRUE 6.2.2298 TRUE CORE EXT ( -- true ) Возвращает флаг true, значение одна-ячейка со всеми установленными битами. See also: 3.1.3.1 Флаги.
TUCK 6.2.2300 TUCK CORE EXT ( x1 x2 -- x2 x1 x2 ) Копирует верхний элемент стека ниже второго элемента стека.
U.R 6.2.2330 U.R "u-dot-r" CORE EXT ( u n -- ) Отображает u выровненное вправо, в поле шириной n символов. Если число символов требуемых для отображения u больше чем n, все цифры отображаются без ведущих пробелов в поле необходимой ширины.
U> 6.2.2350 U> "u-greater-than" CORE EXT ( u1 u2 -- flag ) flag - true, если и только если u1 больше чем u2. See also: 6.1.0540 >.
UNUSED 6.2.2395 UNUSED CORE EXT ( -- u ) u - количество оставшегося пространства в области адресуемой HERE, в адресуемых элементах.
VALUE 6.2.2405 VALUE CORE EXT ( x "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения, определенной ниже, с начальным значением равным x. name определено как "value". name Выполнение: ( -- x ) Помещает x на стек. Значение x - то что задано, при создании name, до тех пор пока не выполнена фраза x TO name, задающая новое значение x, связанное с name. See also: 3.4.1 Синтаксический анализ.
WITHIN 6.2.2440 WITHIN CORE EXT ( n1|u1 n2|u2 n3|u3 -- flag ) Выполняет сравнение проверяемого значения n1|u1 с нижним пределом n2|u2 и верхним пределом n3|u3, возвращая true, если (n2|u2 < n3|u3 и (n2|u2 <= n1|u1 и n1|u1 < n3|u3)) или (n2|u2 > n3|u3 и (n2|u2 <= n1|u1 или n1|u1 < n3|u3)) - true, иначе возвращает false. Неопределенная ситуация существует, если n1|u1, n2|u2, и n3|u3 не все одного типа.
[COMPILE] 6.2.2530 [COMPILE] "bracket-compile" CORE EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Находит name. Если name имеет семантику компиляции отличную от заданной по умолчанию, добавляет ее к текущему определению; иначе добавляет семантику выполнения name. Неопределенная ситуация существует, если name не найдено. See also: 3.4.1 Синтаксический анализ.
\ 6.2.2535 \ "backslash" CORE EXT Compilation: Исполняет семантику выполнения, данную ниже. Execution: ( "ccc<eol>"-- ) Выделяет и удаляет остаток области анализа. \ слово немедленного исполнения. See also: 7.6.2.2535 \.
2CONSTANT 8.6.1.0360 2CONSTANT "two-constant" DOUBLE ( x1 x2 "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения, определенной ниже. name объявляется как "two-constant". name Выполнение: ( -- x1 x2 ) Помещает пару-ячеек x1 x2 на стек. See also: 3.4.1 Синтаксический анализ.
2LITERAL 8.6.1.0390 2LITERAL "two-literal" DOUBLE Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( x1 x2 -- ) Добавляет семантику времени-выполнения данную ниже к текущему определению. ( -- x1 x2 ) Помещает пару-ячеек x1 x2 на стек.
2VARIABLE 8.6.1.0440 2VARIABLE "two-variable" DOUBLE ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения, определенной ниже. Резервирует две последовательных ячейки области данных. name объявляется как "two-variable". name Выполнение: ( -- a-addr ) a-addr - адрес первой (наименьший адрес) ячейки двух последовательных ячеек в области данных, зарезервированной 2VARIABLE, когда оно определило name. Программа ответственна за инициализацию содержимого. See also: 3.4.1 Синтаксический анализ, 6.1.2410 VARIABLE.
D+ 8.6.1.1040 D+ "d-plus" DOUBLE ( d1|ud1 d2|ud2 -- d3|ud3 ) Добавляет d2|ud2 к d1|ud1, возвращает сумму d3|ud3.
D- 8.6.1.1050 D- "d-minus" DOUBLE ( d1|ud1 d2|ud2 -- d3|ud3 ) Вычитает d2|ud2 из d1|ud1, возвращает разницу d3|ud3.
D. 8.6.1.1060 D. "d-dot" DOUBLE ( d -- ) Отображает d в формате свободного поля.
D.R 8.6.1.1070 D.R "d-dot-r" DOUBLE ( d n -- ) Отображает d выровненное вправо в поле шириной n символов. Если число символов требуемых для отображения d больше чем n, все цифры отображаются без ведущих пробелов в поле необходимой ширины.
D0< 8.6.1.1075 D0< "d-zero-less" DOUBLE ( d -- flag ) flag - true, если и только если d - меньше нуля.
D0= 8.6.1.1080 D0= "d-zero-equals" DOUBLE ( xd -- flag ) flag - true, если и только если xd - равно нулю.
D2* 8.6.1.1090 D2* "d-two-star" DOUBLE ( xd1 -- xd2 ) xd2 - результат смещения xd1 на один бит к старшему двоичному разряду, заполнение освобожденного младшего бита нулем.
D2/ 8.6.1.1100 D2/ "d-two-slash" DOUBLE ( xd1 -- xd2 ) xd2 - результат смещения xd1 на один бит к младшему двоичному разряду, оставляет старший бит неизменным.
D< 8.6.1.1110 D< "d-less-than" DOUBLE ( d1 d2 -- flag ) flag - true, если и только если d1 - меньше чем d2.
D= 8.6.1.1120 D= "d-equals" DOUBLE ( xd1 xd2 -- flag ) flag - true, если и только если xd1 - побитно равно xd2.
D>S 8.6.1.1140 D>S "d-to-s" DOUBLE ( d -- n ) n - эквивалент d. Неопределенная ситуация существует, если d находится вне диапазона знакового числа одна-ячейка.
DABS 8.6.1.1160 DABS "d-abs" DOUBLE ( d -- ud ) ud - абсолютное значение d.
DMAX 8.6.1.1210 DMAX "d-max" DOUBLE ( d1 d2 -- d3 ) d3 большее из d1 и d2.
DMIN 8.6.1.1220 DMIN "d-min" DOUBLE ( d1 d2 -- d3 ) d3 меньшее из d1 и d2.
DNEGATE 8.6.1.1230 DNEGATE "d-negate" DOUBLE ( d1 -- d2 ) d2 - отрицание d1.
M*/ 8.6.1.1820 M*/ "m-star-slash" DOUBLE ( d1 n1 +n2 -- d2 ) Умножает d1 на n1, производя промежуточный результат тройную-ячейку t. Делит t на +n2 возвращая частное d2 две-ячейки. Неопределенная ситуация существует, если +n2 нулевое или отрицательное, или частное находится вне диапазона целого числа со знаком двойной точности.
M+ 8.6.1.1830 M+ "m-plus" DOUBLE ( d1|ud1 n -- d2|ud2 ) Прибавляет n к d1|ud1, возвращая сумму d2|ud2.
2ROT 8.6.2.0420 2ROT "two-rote" DOUBLE EXT ( x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2 ) Вращает три верхних пары-ячеек на стеке, перенося пару-ячеек x1 x2 на вершину стека.
DU< 8.6.2.1270 DU< "d-u-less" DOUBLE EXT ( ud1 ud2 -- flag ) flag - true, если и только если ud1 - меньше чем ud2.
CATCH 9.6.1.0875 CATCH EXCEPTION ( i*x xt -- j*x 0 | i*x n ) Помещает структуру исключения на стек исключений, и затем выполняется идентификатор исполнения xt (как с EXECUTE) таким способом, что управление может быть передано в точку сразу после CATCH, если THROW выполнено в течение выполнения xt. Если выполнение xt завершается нормально (то есть, структура исключения помещенная этим CATCH не изъята выполнением THROW) изымает структуру исключения и возвращает ноль на вершине стека данных, выше тех элементов стека которые были бы возвращены xt EXECUTE. Иначе, остаток семантики выполнения определяется THROW.
THROW 9.6.1.2275 THROW EXCEPTION ( k*x n -- k*x | i*x n ) Если какие либо биты n ненулевые, выталкивает самую верхнюю структуру исключения со стека исключений, вместе со всем содержимым стека возвратов выше этой структуры. Затем восстанавливает спецификацию входного источника в состояние перед соответствующим CATCH и корректирует состояния всех стеков, определенных этим Стандартом так, чтобы они были те же самые как состояния, сохраненные в структуре исключения (i - то же самое число, что и i во входных параметрах для соответствующего CATCH), помещает n на вершину стека данных, и передает управление на точку сразу после CATCH, которое поместило эту структуру исключения. Если вершина стека - не нулевая и нет никакой структуры исключения на стеке исключения, поведение следующие: Если n - минус-один (-1), исполняет функцию 6.1.0670 ABORT (версия ABORT из основного набора слов), не отображая сообщение. Если n - минус-два, исполняет функцию 6.1.0680 ABORT" (версия ABORT" из основного набора слов), отображая символы ccc связанные с ABORT" которое генерировало THROW. Иначе, система может отображать зависящее-от-реализации сообщение, возвращающее информацию о состоянии связанном с кодом THROW n. Впоследствии система должна выполнить функцию 6.1.0670 ABORT (версия ABORT из основного набора слов).
ABORT 9.6.2.0670 ABORT EXCEPTION EXT Расширьте семантику 6.1.0670 ABORT, таким образом: ( i*x -- ) ( R: j*x -- ) Выполняет функцию -1 THROW. See also: 6.1.0670 ABORT.
ABORT" 9.6.2.0680 ABORT" "abort-quote" EXCEPTION EXT Расширьте семантику 6.1.0680 ABORT" таким образом: Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( "ccc<quote>" -- ) Выделяет ccc, ограниченную " (двойная кавычка). Добавляет семантику времени-выполнения данную ниже к текущему определению. ( i*x x1 -- | i*x ) ( R: j*x -- | j*x ) Удаляет x1 из стека. Если любой бит x1 - не нулевой, выполняет функцию -2 THROW, отображая ccc, если нет никакой структуры исключения на стеке исключения. See also: 3.4.1 Синтаксический анализ, 6.1.0680 ABORT".
AT-XY 10.6.1.0742 AT-XY "at-x-y" FACILITY ( u1 u2 -- ) Исполняет зависящие-от-реализации шаги так, чтобы следующий отображаемый символ появился в столбце u1, строке u2 пользовательского устройства вывода, верхний левый угол которого - нулевой столбец и нулевая строка. Неопределенная ситуация существует, если операция не может быть выполнена на пользовательском устройстве вывода с определенными параметрами.
KEY? 10.6.1.1755 KEY? "key-question" FACILITY ( -- flag ) Если символ доступен, возвращает true. Иначе, возвращает false. Если не символьные события клавиатуры доступны перед первым допустимым символом, они будут отвергнуты и впоследствии недоступны. Символ должен быть возвращен следующим выполнением KEY. После возвращения KEY? со значением true, последующие выполнения KEY? до выполнения KEY или EKEY также возвращают true, без отмены событий клавиатуры.
PAGE 10.6.1.2005 PAGE FACILITY ( -- ) Перемещение на другую страницу для вывода. Фактическая функция зависит от устройства вывода. На терминале, PAGE очищает экран и сбрасывает позицию курсора к верхнему левому углу. На принтере, PAGE исполняет прогон страницы.
EKEY 10.6.2.1305 EKEY "e-key" FACILITY EXT ( -- u ) Получает одно событие клавиатуры u. Кодирование событий клавиатуры определенное реализацией. See also: 10.6.1.1755 KEY?, 6.1.1750 KEY.
EKEY>CHAR 10.6.2.1306 EKEY>CHAR "e-key-to-char" FACILITY EXT ( u -- u false | char true ) Если событие клавиатуры u соответствует символу в наборе символов определенном реализацией, возвращает этот символ и true. Иначе возвращает u и false.
EKEY? 10.6.2.1307 EKEY? "e-key-question" FACILITY EXT ( -- flag ) Если событие клавиатуры доступно, возвращает true. Иначе возвращает false. Событие должно быть возвращено следующим выполнением EKEY. После возвращения EKEY? со значением true, последующее выполнение EKEY? до выполнения KEY, KEY? или EKEY также возвращает true, ссылаясь на то же самое событие.
EMIT? 10.6.2.1325 EMIT? "emit-question" FACILITY EXT ( -- flag ) flag - true, если пользовательское устройство вывода готово принять данные и выполнение EMIT на месте EMIT? не испытывало бы неопределенной задержки. Если состояние устройства не определено, flag - true (? false).
MS 10.6.2.1905 MS FACILITY EXT ( u -- ) Ожидание, по крайней мере, u миллисекунд. Примечание: Фактическая длина и изменчивость периода времени зависят от определенной реализацией разрешающей способности системных часов и других системных и компьютерных характеристик, и находится вне контекста этого Стандарта.
TIME&DATE 10.6.2.2292 TIME&DATE "time-and-date" FACILITY EXT ( -- +n1 +n2 +n3 +n4 +n5 +n6 ) Возвращает текущее время и дату. +n1 - секунды {0...59}, +n2 минуты {0...59}, +n3 - часы {0...23}, +n4 - день {1...31} +n5 - месяц {1...12}, и +n6 - год (например, 1991).
( 11.6.1.0080 ( "paren" FILE ( "ccc<paren>" -- ) Расширьте семантику 6.1.0080 ( включив: При синтаксическом анализе из текстового файла, если конец области анализа достигнут прежде, чем найдена правая круглая скобка, снова наполняет входной буфер из следующей строки файла, обнуляет >IN, и возобновляет синтаксический анализ, повторяет этот процесс до нахождения правой круглой скобки или достижения конца файла.
BIN 11.6.1.0765 BIN FILE ( fam1 -- fam2 ) Изменяет метод доступа к файлу определенный реализацией fam1, дополнительно выбирая "binary", то есть не строко-ориентированный метод доступа к файлу, возвращая метод доступа fam2. See also: 11.6.1.2054 R/O, 11.6.1.2056 R/W, 11.6.1.2425 W/O.
CLOSE-FILE 11.6.1.0900 CLOSE-FILE FILE ( fileid -- ior ) Закрывает файл, идентифицированный fileid. ior - определенный реализацией код результата ввода-вывода.
CREATE-FILE 11.6.1.1010 CREATE-FILE FILE ( c-addr u fam -- fileid ior ) Создает файл именованный символьной строкой, определенной c-addr и u, и открывает его с методом доступа к файлу fam. Смысл значений fam является определенным реализацией. Если файл с тем же самым именем уже существует, пересоздает его как пустой файл. Если файл был успешно создан и открыт, ior нулевой, fileid его идентификатор, и файл был позиционирован в начало. Иначе, ior - код результата ввода-вывода определенный реализацией и fileid неопределенное.
DELETE-FILE 11.6.1.1190 DELETE-FILE FILE ( c-addr u -- ior ) Удаляет файл, именованный символьной строкой, определенной c-addr u. ior - определенный реализацией код результата ввода-вывода.
FILE-POSITION 11.6.1.1520 FILE-POSITION FILE ( fileid -- ud ior ) ud - текущая позиция для файла идентифицированного fileid. ior является кодом результата ввода-вывода определенным реализацией. ud не определен если ior является ненулевым.
FILE-SIZE 11.6.1.1522 FILE-SIZE FILE ( fileid -- ud ior ) ud - размер в символах файла, идентифицированного fileid. ior является кодом результата ввода-вывода определенным реализацией. Эта операция не затрагивает значение, возвращаемое FILE-POSITION. ud не определен, если ior ненулевой.
INCLUDE-FILE 11.6.1.1717 INCLUDE-FILE FILE ( i*x fileid -- j*x ) Удаляет fileid со стека. Сохраняет спецификацию текущего входного источника, включая текущее значение SOURCE-ID. Запоминает fileid в SOURCE-ID. Делает файл определенный fileid входным источником. Записывает нуль в BLK. Другое состояние стека по причине обработанных слов. Повторяет до конца файла: читает строку из файла, заполняет входной буфер содержимым этой строки, обнуляет >IN, и интерпретирует. Текстовая интерпретация начинается в позиции файла, где произошло бы следующее чтение файла. Когда достигнут конец файла, закрывает файл и восстанавливает спецификацию входного источника к ее сохраненному значению. Неопределенная ситуация существует, если fileid неверен, если есть исключение ввода-вывода чтения fileid, или если исключение ввода- вывода происходит при закрытии fileid. Когда неопределенная ситуация существует, состояние (открытый или закрытый) для любых файлов которые интерпретировались - определенное реализацией. See also: 11.3.4 Входной источник.
INCLUDED 11.6.1.1718 INCLUDED FILE ( i*x c-addr u -- j*x ) Удаляет c-addr u со стека. Сохраняет спецификацию текущего входного источника, включая текущее значение SOURCE-ID. Открывает файл определенный c-addr u, сохраняет результирующий fileid в SOURCE-ID, и делает его входным источником. Сохраняет нуль в BLK. Другое состояние стека по причине включенных слов. Повторяет до конца файла: читает строку из файла, заполняет входной буфер содержимым этой строки, обнуляет >IN, и интерпретирует. Текстовая интерпретация начинается в позиции файла, где произошло бы следующее чтение файла. Когда достигнут конец файла, закрывает файл и восстанавливает спецификацию входного источника к ее сохраненному значению. Неопределенная ситуация существует, если заданный файл не может быть открыт, если исключение ввода-вывода происходит при чтении файла, или если исключение ввода-вывода происходит при закрытии файла. Когда неопределенная ситуация существует, состояние (открытый или закрытый) любых файлов которые интерпретировались - определенное реализацией. See also: 11.6.1.1717 INCLUDE-FILE.
OPEN-FILE 11.6.1.1970 OPEN-FILE FILE ( c-addr u fam -- fileid ior ) Открывает файл заданный символьной строкой определенной c-addr u, с методом доступа к файлу, обозначенным fam. Смысл значений fam определенный реализацией. Если файл успешно открыт, ior нулевой, fam - его идентификатор, и файл был позиционирован начало. Иначе, ior - код результата ввода-вывода определенный реализацией и fam неопределенное.
R/O 11.6.1.2054 R/O "r-o" FILE ( -- fam ) fam - значение определенное реализацией для выбора метода доступа к файлу "только для чтения". See also: 11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE.
R/W 11.6.1.2056 R/W "r-w" FILE ( -- fam ) fam - значение определенное реализацией для выбора метода доступа к файлу "чтение - запись". See also: 11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE.
READ-FILE 11.6.1.2080 READ-FILE FILE ( c-addr u1 fileid -- u2 ior ) Читает u1 последовательных символов в c-addr с текущей позиции файла, идентифицированного fileid. Если u1 символы читаются без исключения, ior нулевое, и u2 равно u1. Если конец файла достигнут, прежде прочтения u1 символов, ior нуль и u2 - число фактически прочитанных символов. Если операция инициализирована когда значение, возвращенное FILE- POSITION равно значению, возвращенному FILE-SIZE для файла идентифицированного fileid - ior нулевое, и u2 нулевое. Если происходит исключение, ior - код результата ввода-вывода определенный реализацией, и u2 - число символов переданное в c- addr без исключения. Неопределенная ситуация существует, если операция инициализирована когда значение, возвращенное FILE-POSITION большее чем значение, возвращенное FILE-SIZE для файла, идентифицированного fileid, или если требуемая операция пытается читать не записанные части файла. При завершении операции, FILE-POSITION возвращает следующую позицию файла после последнего прочтенного символа.
READ-LINE 11.6.1.2090 READ-LINE FILE ( c-addr u1 fileid -- u2 flag ior ) Читает следующую строку из файла, определенного fileid в память с адреса c-addr. Читаются максимум u1 символов. До двух символов завершения строки определенных реализацией могут читаться в память в конец строки, но не включаются в количество u2. Буфер строки, предусмотренный c-addr должен быть, по крайней мере, длиной u1+2 символов. Если операция успешная, flag - true, и ior нулевой. Если признак конца строки был получен прежде прочтения символов u1, тогда фактически читается u2-число символов, не включая признак конца строки(0 <= u2 <= u1). Когда u1 = u2, признак конца строки должен все же быть достигнут. Если операция инициализирована когда значение, возвращенное FILE- POSITION равно значению, возвращенному FILE-SIZE для файла, идентифицированного fileid, flag - false, ior нулевое, и u2 нулевое. Если ior ненулевое, в течение операции произошло исключение, и ior - определенный реализацией код завершения ввода- вывода. Неопределенная ситуация существует, если операция инициализирована когда значение, возвращенное FILE-POSITION больше чем значение, возвращенное FILE-SIZE для файла, идентифицированного fileid, или если требуемая операция пытается читать не записанные части файла. При завершении операции, FILE-POSITION возвращает следующую позицию файла после последнего прочтенного символа.
REPOSITION-FILE 11.6.1.2142 REPOSITION-FILE FILE ( ud fileid -- ior ) Переустанавливает позицию файла, идентифицированного fileid на ud. ior - код завершения ввода-вывода определенный реализацией. Неопределенная ситуация существует если файл позиционирован вне границ файла. При завершении операции, FILE-POSITION возвращает значение ud.
RESIZE-FILE 11.6.1.2147 RESIZE-FILE FILE ( ud fileid -- ior ) Устанавливает размер файла, идентифицированного fileid на ud. ior - код завершения ввода-вывода определенный реализацией. Если результирующий файл больше чем файл перед операцией, часть файла добавленного в результате операции могла бы быть не записана. При завершении операции, FILE-SIZE возвращает значение ud и FILE- POSITION возвращает неопределенное значение. See also: 11.6.1.2080 READ-FILE, 11.6.1.2090 READ-LINE.
S" 11.6.1.2165 S" "s-quote" FILE Расширьте семантику 6.1.2165 S" так: Interpretation: ( "ccc<quote>" -- c-addr u ) Выделяет ccc, ограниченную " (двойная кавычка). Сохраняет результирующую строку c-addr u во временном местоположении. Максимальная длина временного буфера зависящая-от-реализаци, но должна быть не меньше чем 80 символов. Последующие использования S" могут перезаписывать временный буфер. По крайней мере, один такой буфер должен быть предусмотрен. Compilation: ( "ccc<quote>" -- ) Выделяет ccc, ограниченную " (двойная кавычка). Добавляет семантику времени-выполнения данную ниже к текущему определению. ( -- c-addr u ) Возвращает c-addr и u, которые описывают строку, состоящую из символов ccc. See also: 3.4.1 Синтаксический анализ, 6.2.0855 C", 6.1.2165 S", 11.3.5 Другие временные области.
SOURCE-ID 11.6.1.2218 SOURCE-ID "source-i-d" FILE ( -- 0 | -1 | fileid ) Расширьте 6.2.2218 SOURCE-ID, чтобы включить ввод текстового файла следующим образом: SOURCE-ID Входной источник -------------------------------------------- fileid Текстовый файл "fileid" -1 Строка (через EVALUATE) 0 Пользовательское устройство ввода -------------------------------------------- Неопределенная ситуация существует, если SOURCE-ID используется, когда BLK содержит ненулевое значение.
W/O 11.6.1.2425 W/O "w-o" FILE ( -- fam ) fam - значение определенное реализацией для выбора метода доступа к файлу "только запись". See also: 11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE.
WRITE-FILE 11.6.1.2480 WRITE-FILE FILE ( c-addr u fileid -- ior ) Записывает u символов из c-addr в файл, идентифицированный fileid начиная с его текущей позиции. ior - определенный реализацией код результата ввода-вывода. При завершении операции, FILE-POSITION возвращает следующую позицию файла после последнего символа записанного в файл, и FILE-SIZE возвращает значение большее или равное значению возвращенному FILE- POSITION. See also: 11.6.1.2080 READ-FILE, 11.6.1.2090 READ-LINE.
WRITE-LINE 11.6.1.2485 WRITE-LINE FILE ( c-addr u fileid -- ior ) Записывает u символов из c-addr, сопровождаемых зависящим-от- реализации признаком конца строки в файл, идентифицированный fileid начиная с его текущей позиции. ior - определенный реализацией код результата ввода-вывода. При завершении операции, FILE-POSITION возвращает следующую позицию файла после последнего символа записанного в файл, и FILE-SIZE возвращает значение большее или равное значению возвращенному FILE- POSITION. See also: 11.6.1.2080 READ-FILE, 11.6.1.2090 READ-LINE.
FILE-STATUS 11.6.2.1524 FILE-STATUS FILE EXT (c-addr u -- x ior ) Возвращает состояние файла, идентифицированного символьной строкой c-addr u. Если файл существует, ior нулевой; иначе ior - код завершения ввода-вывода определенный реализацией. x содержит определенную реализацией информацию о файле.
FLUSH-FILE 11.6.2.1560 FLUSH-FILE FILE EXT ( fileid -- ior ) Пытается инициировать запись на запоминающее устройство любую буферизированную информацию, записанную в файл, относящийся к fileid, и информация о размере файла будет записана в каталоге хранения при изменении. Если операция успешна, ior нулевой. Иначе, это - код завершения ввода-вывода определенный реализацией.
REFILL 11.6.2.2125 REFILL FILE EXT ( -- flag ) Расширьте семантику выполнения 6.2.2125 REFILL следующим: Когда входной источник - текстовый файл, пытается читать следующую строку из текстового входного файла. Если успешно, делает результат текущим входным буфером, обнуляет >IN, и возвращает true. Иначе возвращает false. See also: 6.2.2125 REFILL, 7.6.2.2125 REFILL.
RENAME-FILE 11.6.2.2130 RENAME-FILE FILE EXT ( c-addr1 u1 c-addr2 u2 -- ior ) Переименовывает файл, именованный символьной строкой c-addr1 u1 в имя из символьной строки c-addr2 u2. ior - код завершения ввода- вывода определенный реализацией.
>FLOAT 12.6.1.0558 >FLOAT "to-float" FLOATING ( c-addr u -- true | false ) ( F: -- r | ) или ( c-addr u -- r true | false ) Пытается выполнить преобразование строки определенной c-addr и u во внутреннее представление с плавающей точкой. Если строка представляет допустимое число с плавающей точкой в синтаксисе ниже, возвращает его значение r и true. Если строка не представляет допустимое число с плавающей точкой, возвращает только false. Строка пробелов должна быть обработана как специальный случай представления нуля.
Синтаксис преобразуемой строки := <мантисса>[<экспонента>] <мантисса> := [<знак>]{<цифры>[.<цифры0>] | .<цифры> } <экспонента> := <маркер><цифры0> <маркер> := {<e-форма> | <знак-форма>} <e-форма> := <e-символ>[<знак-форма>] <знак-форма> := { + | - } <e-символ>:= { D | d | E | e }

D>F 12.6.1.1130 D>F "d-to-f" FLOATING ( d -- ) ( F: -- r ) or ( d -- r ) r - число с плавающей точкой эквивалентное d. Неопределенная ситуация существует если d точно не может быть представлено как значение с плавающей точкой.
F! 12.6.1.1400 F! "f-store" FLOATING ( f-addr -- ) ( F: r -- ) or ( r f-addr -- ) Сохраняет r в f-addr.
F* 12.6.1.1410 F* "f-star" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) Умножает r1 на r2, возвращает r3.
F+ 12.6.1.1420 F+ "f-plus" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) Прибавляет r1 к r2, возвращает сумму r3.
F- 12.6.1.1425 F- "f-minus" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) Вычитает r2 из r1, возвращает r3.
F/ 12.6.1.1430 F/ "f-slash" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) Делит r1 на r2, возвращает частное r3. Неопределенная ситуация существует если r2 нулевое, или частное находится вне диапазона числа с плавающей точкой.
F0< 12.6.1.1440 F0< "f-zero-less-than" FLOATING ( -- flag ) ( F: r -- ) or ( r -- flag ) flag - true, если и только если r - меньше чем нуль.
F0= 12.6.1.1450 F0= "f-zero-equals" FLOATING ( -- flag ) ( F: r -- ) or ( r -- flag ) flag - true, если и только если r - равно нулю.
F< 12.6.1.1460 F< "f-less-than" FLOATING ( -- flag ) ( F: r1 r2 -- ) or ( r1 r2 -- flag ) flag - true, если и только если r1 - меньше чем r2.
F>D 12.6.1.1470 F>D "f-to-d" FLOATING ( -- d ) ( F: r -- ) or ( r -- d ) d - целое число со знаком две-ячейки эквивалентное целой части из r. Дробная часть r откинута. Неопределенная ситуация существует, если целая часть r точно не может быть представлена как целое число со знаком две-ячейки.
F@ 12.6.1.1472 F@ "f-fetch" FLOATING ( f-addr -- ) ( F: -- r ) or ( f-addr -- r ) r - значение, сохраненное в f-addr.
FALIGN 12.6.1.1479 FALIGN "f-align" FLOATING ( -- ) Если указатель области данных - не выровнен с плавающей точкой, резервирует достаточно пространства данных для выравнивания.
FALIGNED 12.6.1.1483 FALIGNED "f-aligned" FLOATING ( addr -- f-addr ) f-addr - первый с-плавающей-точкой-выровненный адрес больший или равный addr.
FCONSTANT 12.6.1.1492 FCONSTANT "f-constant" FLOATING ( "<spaces>name" -- ) ( F: r -- ) or ( r "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения определенной ниже. name объявлено как "f-constant". name Выполнение: ( -- ) ( F: -- r ) or ( -- r ) Помещает r на стек с плавающей точкой. See also: 3.4.1 Синтаксический анализ.
FDEPTH 12.6.1.1497 FDEPTH "f-depth" FLOATING ( -- +n ) +n - число значений, содержащихся на отделенном по умолчанию стеке с плавающей точкой. Если числа с плавающей точкой сохраняются на стеке данных, +n является текущим числом возможных значений с плавающей точкой, содержащихся на стеке данных.
FDROP 12.6.1.1500 FDROP "f-drop" FLOATING ( F: r -- ) or ( r -- ) Удаляет r со стека с плавающей точкой.
FDUP 12.6.1.1510 FDUP "f-dupe" FLOATING ( F: r -- r r ) or ( r -- r r ) Дублирует r.
FLITERAL 12.6.1.1552 FLITERAL "f-literal" FLOATING Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( F: r -- ) or ( r -- ) Добавляет семантику времени-выполнения, данную ниже к текущему определению. ( F: -- r ) or ( -- r ) Помещает r на стек с плавающей точкой.
FLOAT+ 12.6.1.1555 FLOAT+ "float-plus" FLOATING ( f-addr1 -- f-addr2 ) Добавляет размер в адресуемых элементах числа с плавающей точкой к f-addr1, возвращает f-addr2.
FLOATS 12.6.1.1556 FLOATS FLOATING ( n1 -- n2 ) n2 - размер в адресуемых элементах n1 чисел с плавающей точкой.
FLOOR 12.6.1.1558 FLOOR FLOATING ( F: r1 -- r2 ) or ( r1 -- r2 ) Округление r1 к целому значению, использующему правило "округления к отрицательной бесконечности", возвращает r2.
FMAX 12.6.1.1562 FMAX "f-max" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) r3 большее из r1 и r2.
FMIN 12.6.1.1565 FMIN "f-min" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) r3 меньшее из r1 и r2.
FNEGATE 12.6.1.1567 FNEGATE "f-negate" FLOATING ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - отрицание r1.
FOVER 12.6.1.1600 FOVER "f-over" FLOATING ( F: r1 r2 -- r1 r2 r1 ) or ( r1 r2 -- r1 r2 r1 ) Помещает копию r1 на вершину стека с плавающей точкой.
FROT 12.6.1.1610 FROT "f-rote" FLOATING ( F: r1 r2 r3 -- r2 r3 r1 ) or ( r1 r2 r3 -- r2 r3 r1 ) Вращает три верхних элемента стека с плавающей точкой.
FROUND 12.6.1.1612 FROUND "f-round" FLOATING ( F: r1 -- r2 ) or ( r1 -- r2 ) Округляет r1 к целому значению, использующему правило "округления к ближайшему", возвращает r2. See also: 12.3.2 Операции c плавающей точкой.
FSWAP 12.6.1.1620 FSWAP "f-swap" FLOATING ( F: r1 r2 -- r2 r1 ) or ( r1 r2 -- r2 r1 ) Меняет два верхних элемента стека с плавающей точкой.
FVARIABLE 12.6.1.1630 FVARIABLE "f-variable" FLOATING ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name с семантикой выполнения определенной ниже. Резервирует 1 FLOATS адресуемый элемент области данных как с-плавающей-точкой-выровненный адрес. name объявлено как "f-variable". name Выполнение: ( --f-addr ) f-addr - адрес области данных, зарезервированной FVARIABLE когда оно создавало name. Программа ответственна за инициализацию содержимого зарезервированного пространства. See also: 3.4.1 Синтаксический анализ.
REPRESENT 12.6.1.2143 REPRESENT FLOATING ( c-addr u -- n flag1 flag2 ) (F: r -- ) или ( r c-addr u -- n flag1 flag2 ) В c-addr, помещает символьное-строковое внешнее представление мантиссы числа с плавающей точкой r. Возвращает n как экспоненту в десятичном основании, знак как flag1 и "допустимый результат" как flag2. Символьная строка должна состоять из u самых старших цифр мантиссы представленной как десятичная дробь с подразумеваемой десятичной точкой слева от первой цифры, и нулевой первой цифрой только если все цифры нулевые. Мантисса округлена к u цифрам в соответствии с правилом "округления к ближайшему"; n откорректирован, в случае необходимости, чтобы соответствовать округленной величине мантиссы. Если flag2 - true тогда r было в диапазоне определенных реализацией чисел с плавающей точкой. Если flag1 - true тогда r - отрицательное. Неопределенная ситуация существует, если значение BASE - не десятичное десять. Когда flag2 - false, n и flag1 - определенное реализацией, как содержимое c-addr. При этих обстоятельствах, строка в c-addr должна состоять из графических символов. See also: 3.2.1.2 Преобразование цифр, 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой.
DF! 12.6.2.1203 DF! "d-f-store" FLOATING EXT ( df-addr -- ) ( F: r -- ) or ( r df-addr -- ) Сохраняет число с плавающей точкой r в df-addr как 64-бит IEEE число с двойной точностью. Если мантисса внутреннего представления r имеет большую точность, чем IEEE формат с двойной точностью, оно должно быть округлено, используя правило "округления к ближайшему". Неопределенная ситуация существует, если экспонента r слишком большая, для размещения в IEEE формате с двойной точностью. See also: 12.3.1.1 Адреса, 12.3.2 Операции c плавающей точкой.
DF@ 12.6.2.1204 DF@ "d-f-fetch" FLOATING EXT ( df-addr -- ) ( F: -- r ) or ( df-addr -- r ) Выбирает 64-бит IEEE число с двойной точностью, сохраненное в df- addr на стек с плавающей точкой как r во внутреннем представлении. Если IEEE мантисса с двойной точностью имеет большую точность, чем внутреннее представление, оно будет округлено к внутреннему представлению, используя правило "округления к ближайшему". Неопределенная ситуация существует если экспонента IEEE представления с двойной точностью слишком большая, для размещения во внутреннем представлении. See also: 12.3.1.1 Адреса, 12.3.2 Операции c плавающей точкой.
DFALIGN 12.6.2.1205 DFALIGN "d-f-align" FLOATING EXT ( -- ) Если указатель области данных - выровнен не на двойное-с-плавающей- точкой, резервирует достаточно пространства данных для выравнивания. See also: 12.3.1.1 Адреса.
DFALIGNED 12.6.2.1207 DFALIGNED "d-f-aligned" FLOATING EXT ( addr -- df-addr ) df-addr - первый двойное-с-плавающей-точкой-выровненный адрес больший или равный addr. See also: 12.3.1.1 Адреса.
DFLOAT+ 12.6.2.1208 DFLOAT+ "d-float-plus" FLOATING EXT ( df-addr1 -- df-addr2 ) Добавляет размер в адресуемых элементах 64-бит IEEE числа с двойной точностью к df-addr1, возвращает df-addr2. See also: 12.3.1.1 Адреса.
DFLOATS 12.6.2.1209 DFLOATS "d-floats" FLOATING EXT ( n1 -- n2 ) n2 - размер в адресуемых элементах n1 64-бит IEEE числа с двойной точностью.
F** 12.6.2.1415 F** "f-star-star" FLOATING EXT ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) Возводит r1 в степень r2, возвращает результат r3.
F. 12.6.2.1427 F. "f-dot" FLOATING EXT ( -- ) ( F: r -- ) or ( r -- ) Отображает с конечным пробелом верхнее число со стека с плавающей точкой, используя нотацию с фиксированной точкой: [-] <цифры>.<цифры0> Неопределенная ситуация существует, если значение BASE - не (десятичное) десять или если символьное строковое представление превышает размер буфера выходной строки отображаемого числа. See also: 12. 12.6.1.0558 >FLOAT.
FABS 12.6.2.1474 FABS "f-abs" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - абсолютное значение r1.
FACOS 12.6.2.1476 FACOS "f-a-cos" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - главный угол в радианах, чей косинус - r1. Неопределенная ситуация существует, если |r1| больше единицы.
FACOSH 12.6.2.1477 FACOSH "f-a-cosh" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - значение с плавающей точкой, чей гиперболический косинус - r1. Неопределенная ситуация существует, если r1 - меньше единицы.
FALOG 12.6.2.1484 FALOG "f-a-log" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) Возводит десять в степень r1, возвращает r2.
FASIN 12.6.2.1486 FASIN "f-a-sine" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - главный угол в радианах, чей синус - r1. Неопределенная ситуация существует, если |r1| больше единицы.
FASINH 12.6.2.1487 FASINH "f-a-cinch" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - значение с плавающей точкой, чей гиперболический синус - r1. Неопределенная ситуация существует, если r1 - меньше единицы.
FATAN 12.6.2.1488 FATAN "f-a-tan" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - главный угол в радианах, чей тангенс - r1.
FATAN2 12.6.2.1489 FATAN2 "f-a-tan-two" FLOATING EXT ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) r3 - угол в радианах, чей тангенс - r1/r2. Неопределенная ситуация существует, если r1 и r2 нулевые.
FATANH 12.6.2.1491 FATANH "f-a-tan-h" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - значение с плавающей точкой, чей гиперболический тангенс - r1. Неопределенная ситуация существует, если r1 - вне диапазона с -1E0 по 1E0.
FCOS 12.6.2.1493 FCOS "f-cos" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - косинус угла r1 в радианах.
FCOSH 12.6.2.1494 FCOSH "f-cosh" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - гиперболический косинус r1.
FE. 12.6.2.1513 FE. "f-e-dot" FLOATING EXT ( -- ) ( F: r -- ) or ( r -- ) Отображает с конечным пробелом верхнее число со стека с плавающей точкой используя инженерную нотацию, где мантисса больше или равна 1.0 и меньше чем 1000.0 и десятичная экспонента - множитель трех. Неопределенная ситуация существует, если значение BASE - не (десятичное) десять или если символьное строковое представление превышает размер буфера выходной строки отображаемого числа. See also: 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой, 12.6.1.2143 REPRESENT.
FEXP 12.6.2.1515 FEXP "f-e-x-p" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) Возводит e в степень r1, возвращает r2.
FEXPM1 12.6.2.1516 FEXPM1 "f-e-x-p-m-one" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) Возводит e в степень r1, и вычитает один, возвращает r2.
FLN 12.6.2.1553 FLN "f-l-n" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - натуральный логарифм r1. Неопределенная ситуация существует если r1 - меньше или равно нулю.
FLNP1 12.6.2.1554 FLNP1 "f-l-n-p-one" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - натуральный логарифм величины r1 плюс один. Неопределенная ситуация существует если r1 - меньше или равно минус один.
FLOG 12.6.2.1557 FLOG "f-log" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - десятичный логарифм r1. Неопределенная ситуация существует если r1 меньше или равно нулю.
FS. 12.6.2.1613 FS. "f-s-dot" FLOATING EXT ( -- ) ( F: r -- ) or ( r -- ) Отображает, с конечным пробелом, верхнее число со стека с плавающей точкой в экспоненциальном формате: <мантисса><экспонента> где: <мантисса> := [-]<цифра>.<цифры0> <экспонента> := E[-]<цифры> Неопределенная ситуация существует, если значение BASE - не (десятичное) десять или если символьное строковое представление превышает размер буфера выходной строки отображаемого числа. See also: 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой, 12.6.1.2143 REPRESENT.
FSIN 12.6.2.1614 FSIN "f-sine" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - синус угла r1 в радианах.
FSINCOS 12.6.2.1616 FSINCOS "f-sine-cos" FLOATING EXT ( F: r1 -- r2 r3 ) or ( r1 -- r2 r3 ) r2 - синус угла r1 в радианах. r3 - косинус угла r1 в радианах.
FSINH 12.6.2.1617 FSINH "f-cinch" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - гиперболический синус r1.
FSQRT 12.6.2.1618 FSQRT "f-square-root" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - квадратный корень r1. Неопределенная ситуация существует, если r1 - меньше нуля.
FTAN 12.6.2.1625 FTAN "f-tan" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - тангенс угла r1 в радианах. Неопределенная ситуация существует если cos(r1) нулевое.
FTANH 12.6.2.1626 FTANH "f-tan-h" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - гиперболический тангенс r1.
F~ 12.6.2.1640 F~ "f-proximate" FLOATING EXT ( -- flag ) ( F: r1 r2 r3 -- ) or ( r1 r2 r3 -- flag ) Если r3 положительно, flag - true если абсолютное значение (r1 минус r2) меньше чем r3. Если r3 нулевое, flag - true если зависящее-от-реализации кодирование r1 и r2 точно идентично (положительный и отрицательный нуль неравны если они имеют различное кодирование). Если r3 - отрицательное, flag - true если абсолютное значение (r1 минус r2) меньше чем абсолютное значение r3 умноженное на сумму абсолютных значений r1 и r2.
PRECISION 12.6.2.2035 PRECISION FLOATING EXT ( -- u ) Возвращает число u значащих цифр, в настоящее время используемых в F., FE., или FS..
SET-PRECISION 12.6.2.2200 SET-PRECISION FLOATING EXT ( u -- ) Устанавливает число u значащих цифр, в настоящее время используемых в F., FE., или FS..
SF! 12.6.2.2202 SF! "s-f-store" FLOATING EXT ( sf-addr -- ) ( F: r -- ) or ( r sf-addr -- ) Сохраняет число с плавающей точкой r как 32-бит IEEE с одинарной точностью число в sf-addr. Если мантисса внутреннего представления r имеет большую точность чем IEEE формат с одинарной точностью, оно будет округленно с использованием правила "округления к ближайшему". Неопределенная ситуация существует если экспонента r слишком большая, чтобы быть размещенной в формате IEEE с одинарной точностью. See also: 12.3.1.1 Адреса, 12.3.2 Операции c плавающей точкой.
SF@ 12.6.2.2203 SF@ "s-f-fetch" FLOATING EXT ( sf-addr -- ) ( F: -- r ) or ( sf-addr -- r ) Выбирает 32-бит IEEE число с одинарной точностью, сохраненное в sf- addr на стек с плавающей точкой как r во внутреннем представлении. Если IEEE мантисса с одинарной точностью имеет большую точность чем внутреннее представление, оно будет округлено к внутреннему представлению с использованием правила "округления к ближайшему". Неопределенная ситуация существует если экспонента IEEE представления с одинарной точностью слишком большая, чтобы быть размещенной во внутреннем представлении. See also: 12.3.1.1 Адреса, 12.3.2 Операции c плавающей точкой.
SFALIGN 12.6.2.2204 SFALIGN "s-f-align" FLOATING EXT ( -- ) Если указатель области данных - выровнен не на одинарное-с- плавающей-точкой, резервирует достаточно пространства данных для выравнивания. See also: 12.3.1.1 Адреса.
SFALIGNED 12.6.2.2206 SFALIGNED "s-f-aligned" FLOATING EXT ( addr -- sf-addr ) sf-addr - первый одинарный-с-плавающей-точкой-выровненный адрес больший или равный addr. See also: 12.3.1.1 Адреса.
SFLOAT+ 12.6.2.2207 SFLOAT+ "s-float-plus" FLOATING EXT ( sf-addr1 -- sf-addr2 ) Прибавляет размер в адресуемых элементах 32-бит IEEE числа с одинарной точностью к sf-addr1, возвращает sf-addr2. See also: 12.3.1.1 Адреса.
SFLOATS 12.6.2.2208 SFLOATS "s-floats" FLOATING EXT ( n1 -- n2 ) n2 - размер в адресуемых элементах n1 32-бит IEEE чисел с одинарной точностью. See also: 12.3.1.1 Адреса.
(LOCAL) 13.6.1.0086 (LOCAL) "paren-local-paren" LOCAL Interpretation: Семантика интерпретации для этого слова не определена. Execution: ( c-addr u -- ) Когда выполнено в течение компиляции, (LOCAL) посылает сообщение системе, которое имеет одно из двух значений. Если u ненулевое, сообщение идентифицирует новый local, чье имя определения дается строкой символов идентифицированной c-addr u. Если u нулевое, сообщение - "последний local" и c-addr не имеет никакого значения. Результат выполнения (LOCAL) в течение компиляции определения - создание набора именованных local идентификаторов, каждый из которых - имя определения которое имеет только семантику выполнения в пределах этого источника определений. local Выполнение: ( -- x ) Помещает значение local, x на стек. Значение local инициализировано как описано в 13.3.3 Обработка locals, и может быть изменено с помощью TO предшествующим имени local. Неопределенная ситуация существует когда local выполнено в состоянии интерпретации. Примечание: Это слово не имеет специальной семантики компиляции в обычном смысле, потому что оно предоставляет доступ к системной возможности использования другими пользователем-определенными словами, которые его включают. Однако, средство locals в целом и последовательность посылаемых сообщений, определяет специфические правила использования с семантическими значениями, которые описаны подробно в разделе 13.3.3 Обработка locals. Примечание: Это слово не предназначено для прямого использования в определении, для объявления этих locals определений. Оно вместо этого используется системными или пользовательскими компилирующими словами. Эти компилирующие слова в свою очередь определяют их собственный синтаксис, и могут использоваться непосредственно в определениях для объявления locals. В этом контексте, синтаксис для (LOCAL) определен в терминах последовательности сообщений времени- компиляции и описан подробно в разделе 13.3.3 Обработка locals. Примечание: Набор слов Locals изменяет синтаксис и семантику 6.2.2295 TO как определено в расширении основного набора слов. See also: 3.4 Интерпретатор текста Forth.
TO 13.6.1.2295 TO LOCAL Расширьте семантику 6.2.2295 TO таким образом: Interpretation: ( x "<spaces>name" -- ) Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. Сохраняет x в name. Неопределенная ситуация существует, если name не было определено с помощью VALUE. Compilation: ( "<spaces>name" -- ) Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Неопределенная ситуация существует, если name не было определено с помощью VALUE или (LOCAL). ( x -- ) Сохраняет x в name. Примечание: Неопределенная ситуация существует, если POSTPONE или [COMPILE], применяется к TO. See also: 3.4.1 Синтаксический анализ, 6.2.2295 TO, 6.2.2405 VALUE, 13.6.1.0086 (LOCAL).
LOCALS| 13.6.2.1795 LOCALS| "locals-bar" LOCAL EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( "<spaces>name1" "<spaces>name2" ... "<spaces>namen" "|" -- ) Создает до восьми идентификаторов local, периодически пропуская ведущие пробелы, выделя name, и выполняя 13.6.1.0086 (LOCAL). Список locals, который будет определен, заканчивается |. Добавляет семантику времени-выполнения данную ниже к текущему определению. ( xn ... x2 x1 -- ) Инициализирует до восьми идентификаторов local как описано в 13.6.1.0086 (LOCAL), каждый из которых берет как его начальное значение верхний элемент стека, удаляя его со стека. Идентификатор name1 инициализирован x1, идентификатор name2 - x2, и т.д. При вызове, каждый local будет возвращать его значение. Значение local может быть изменено, использованием 13.6.1.2295 TO.
ALLOCATE 14.6.1.0707 ALLOCATE MEMORY ( u -- a-addr ior ) Распределяет u адресуемых элементов непрерывной области данных. Указатель области данных не затронут этой операцией. Начальное содержимое распределенного пространства не определено. Если распределение успешное, a-addr - выровненный стартовый адрес распределенного пространства и ior нулевое. Если операция ошибочна, a-addr не представляет допустимый адрес и ior - код завершения ввода-вывода определенный реализацией. See also: 6.1.1650 HERE, 14.6.1.1605 FREE, 14.6.1.2145 RESIZE.
FREE 14.6.1.1605 FREE MEMORY ( a-addr -- ior ) Возвращает непрерывную зону области данных, обозначенную a-addr в систему для последующего распределения. a-addr должен указать зону области данных, которая была предварительно получена с помощью ALLOCATE или RESIZE. Указатель области данных не затронут этой операцией. Если операция успешна, ior нулевое. Если операция ошибочна, ior - код завершения ввода-вывода определенный реализацией. See also: 6.1.1650 HERE, 14.6.1.0707 ALLOCATE, 14.6.1.2145 RESIZE.
RESIZE 14.6.1.2145 RESIZE MEMORY ( a-addr1 u -- a-addr2 ior ) Изменяет распределение непрерывной области данных, начинающейся с адреса a-addr1, предварительно распределенной ALLOCATE или RESIZE, до u адресуемых элементов. u может быть или больше или меньше чем текущий размер зоны. Указатель области данных не затронут этой операцией. Если операция успешна, a-addr2 - выровненный стартовый адрес u адресуемых элементов распределенной памяти и ior нулевое. a-addr2 может быть, но не обязательно, такой же как a-addr1. Если они - не равны, значения содержащиеся в области a-addr1 скопированы в a- addr2, до минимального размера любой из этих двух областей. Если они равны, значения содержащиеся в области сохраняются по минимуму u или первоначального размера. Если a-addr2 - не такой же как a- addr1, область памяти a-addr1 возвращается системе согласно операции FREE. Если операция ошибочна, a-addr2 равен a-addr1, область памяти a- addr1 не затронута, и ior - код результата ввода-вывода определенный реализацией. See also: 6.1.1650 HERE, 14.6.1.0707 ALLOCATE, 14.6.1.1605 FREE.
.S 15.6.1.0220 .S "dot-s" TOOLS ( -- ) Копирует и отображает значения находящиеся на стеке данных. Формат отображения зависящий-от-реализаци. .S может быть реализовано с использованием слов вывода отображаемых чисел. Следовательно, его использование может разрушать временную область, идентифицированную #>. See also: 3.3.3.6 Другие временные области.
? 15.6.1.0600 ? "question" TOOLS ( a-addr -- ) Отображает значение, сохраненное в a-addr. ? может быть реализовано, с использованием слов вывода отображаемых чисел. Следовательно, его использование может разрушать временную область, идентифицированную #>. See also: 3.3.3.6 Другие временные области.
DUMP 15.6.1.1280 DUMP TOOLS ( addr u -- ) Отображает содержание u последовательных адресов, начинающихся с addr. Формат отображения зависящий от реализации. DUMP может быть реализовано, с использованием слов вывода отображаемых чисел. Следовательно, его использование может разрушать временную область, идентифицированную #>. See also: 3.3.3.6 Другие Временные Области.
SEE 15.6.1.2194 SEE TOOLS ( "<spaces>name" -- ) Отображает удобочитаемое представление определения именованного слова. Источник представления (декомпиляция объектного кода, блок источника, и т.д.) и специфическая форма отображения - определенное реализацией. SEE может быть реализовано, с использованием слов вывода отображаемых чисел. Следовательно, его использование может разрушать временную область, идентифицированную #>. See also: 3.3.3.6 Другие временные области.
WORDS 15.6.1.2465 WORDS TOOLS ( -- ) Перечисляет имена определений в первом списке слов порядка поиска. Формат отображения зависящий-от-реализаци. WORDS может быть реализовано, с использованием слов вывода отображаемых чисел. Следовательно, его использование может разрушать временную область, идентифицированную #>. See also: 3.3.3.6 Другие Временные Области.
;CODE 15.6.2.0470 ;CODE "semicolon-code" TOOLS EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: colon-sys -- ) Добавляет семантику времени-выполнения ниже к текущему определению. Заканчивает текущее определение, позволяя ему быть найденным в словаре, и вводит состояние интерпретации, потребляя colon-sys. Последующие символы в области анализа типично представляют исходный текст на языке программирования, обычно некоторой формы ассемблера. Эти символы, обработанные определенным реализацией способом, производят соответствующий машинный код. Процесс продолжается, пополнением входного буфера по мере необходимости, до обработки определенной реализацией завершающей последовательности. ( -- ) ( R: nest-sys -- ) Заменяет семантику выполнения самого последнего определения на семантику выполнения name, данную ниже. Возвращает управление на вызывающее определение, определенное nest-sys. Неопределенная ситуация существует если самое последнее определение не было определено с помощью CREATE или определенного пользователем слова, которое вызывает CREATE. name Выполнение: ( i*x -- j*x ) Исполняет машинную последовательность кода, которая была сгенерирована после ;CODE. See also: 6.1.1250 DOES>.
AHEAD 15.6.2.0702 AHEAD TOOLS EXT Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( C: -- orig ) Помещает адрес ячейки новой неразрешенной ссылки вперед orig на стек потока управления. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Семантика не завершена, пока orig не разрешена (например, с помощью THEN). ( -- ) Продолжает выполнение с адреса ячейки, определенного разрешением orig.
ASSEMBLER 15.6.2.0740 ASSEMBLER TOOLS EXT ( -- ) Заменяет первый список слов в порядке поиска на список слов ASSEMBLER. See also: 16. Дополнительный набор слов порядка поиска.
BYE 15.6.2.0830 BYE TOOLS EXT ( -- ) Возвращает управление в базовую операционную систему, если существует.
CODE 15.6.2.0930 CODE TOOLS EXT ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Создает определение для name, обозначенное "code definition", с семантикой выполнения определенной ниже. Последующие символы в области анализа типично представляют исходный текст на языке программирования, обычно некоторой формы ассемблера. Эти символы, обработанные определенным реализацией способом, производят соответствующий машинный код. Процесс продолжается, пополнением входного буфера по мере необходимости, до обработки определенной реализацией завершающей последовательности. name Выполнение: ( i*x -- j*x ) Исполняет машинную последовательность кода, которая была сгенерирована после CODE. See also: 3.4.1 Синтаксический анализ.
CS-PICK 15.6.2.1015 CS-PICK "c-s-pick" TOOLS EXT Interpretation: Семантика интерпретации для этого слова не определена. Выполнение:( C: destu ... orig0|dest0 -- destu ... orig0|dest0 destu ) ( S: u -- ) Удаляет u. Копирует destu на вершину стека потока управления. Неопределенная ситуация существует, если есть меньше чем u+1 элементов, каждый из которых должен быть orig или dest, на стеке потока управления перед выполнением CS-PICK. Если стек потока управления реализован с использованием стека данных, u должен быть самым верхним элементом на стеке данных.
CS-ROLL 15.6.2.1020 CS-ROLL "c-s-roll" TOOLS EXT Interpretation: Семантика интерпретации для этого слова не определена. Execution: ( C: origu|destu origu-1|destu-1 ... orig0|dest0 -- origu-1|destu-1 ... orig0|dest0 origu|destu ) ( S: u -- ) Удаляет u. Вращает u+1 элементов на вершине стека потока управления так, чтобы origu|destu находились на вершине стека потока управления. Неопределенная ситуация существует, если есть меньше чем u+1 элементов, каждый из которых должен быть orig или dest, на стеке потока управления перед выполнением CS-ROLL. Если стек потока управления реализован с использованием стека данных, u должен быть самым верхним элементом на стеке данных.
EDITOR 15.6.2.1300 EDITOR TOOLS EXT ( -- ) Заменяет первый список слов в порядке поиска на список слов EDITOR. See also: 16. Дополнительный набор слов порядка поиска.
FORGET 15.6.2.1580 FORGET TOOLS EXT ( "<spaces>name" -- ) Пропускает ведущие разделители пробелы. Выделяет name, ограниченное пробелом. Находит name, затем удаляет name из словаря наряду со всеми словами, добавленными в словарь после name. Неопределенная ситуация существует, если name не может быть найдено. Если набор слов Порядка поиска присутствует, FORGET исследует список слов компиляции. Неопределенная ситуация существует если список слов компиляции удален. Неопределенная ситуация существует, если FORGET, удаляет слово, требуемое для правильного выполнения. Примечание: Это слово устаревшее и включено как уступка существующим реализациям. See also: 3.4.1 Синтаксический анализ.
STATE 15.6.2.2250 STATE TOOLS EXT ( -- a-addr ) Расширьте семантику 6.1.2250 STATE, чтобы позволить ;CODE, изменить значение в STATE. Программа непосредственно не должна изменять содержимое STATE. See also: 3.4 Интерпретатор текста Forth, 6.1.0450 :, 6.1.0460 ;, 6.1.0670 ABORT, 6.1.2050 QUIT, 6.1.2250 STATE, 6.1.2500 [, 6.1.2540 ], 6.2.0455 :NONAME, 15.6.2.0470 ;CODE.
[ELSE] 15.6.2.2531 [ELSE] "bracket-else" TOOLS EXT Compilation: Исполняет семантику выполнения, данную ниже. Execution: ( "<spaces>name ... " -- ) Пропускает ведущие пробелы, выделяет и снимает ограниченные пробелом слова из области анализа, включая вложенные ссылки [IF] ... [THEN] и [IF] ... [ELSE] ... [THEN], пока слово [THEN] не будет проанализировано и снято. Если область анализа становится исчерпанной, она пополняется как с помощью REFILL. [ELSE] - слово немедленного исполнения. See also: 3.4.1 Синтаксический анализ.
[IF] 15.6.2.2532 [IF] "bracket-if" TOOLS EXT Compilation: Исполняет семантику выполнения, данную ниже. Execution: ( flag | flag "<spaces>name ... " -- ) Если flag - true, не делает ничего. Иначе, пропускает ведущие пробелы, выделяет и снимает ограниченные пробелом слова из области анализа, включая вложенные ссылки [IF] ... [THEN] и [IF] ... [ELSE] ... [THEN], пока слово [ELSE] или слово [THEN] не будет проанализировано и снято. Если область анализа становится исчерпанной, она пополняется как с помощью REFILL. [IF] - слово немедленного исполнения. Неопределенная ситуация существует, если [IF] - следствие выполнения POSTPONE, или если достигнут конец входного буфера и не может быть пополнен перед анализом ограничителей [ELSE] или [THEN].
[THEN] 15.6.2.2533 [THEN] "bracket-then" TOOLS EXT Compilation: Исполняет семантику выполнения, данную ниже. Execution: ( -- ) Не делает ничего. [THEN] - слово немедленного исполнения.
DEFINITIONS 16.6.1.1180 DEFINITIONS SEARCH ( -- ) Делает список слов компиляции таким же, как первый список слов в порядке поиска. Определяет, что имена последующих определений будут помещены в список слов компиляции. Последующие изменения в порядке поиска не будут затрагивать список слов компиляции. See also: 16.3.3 Поиск имен определений.
FIND 16.6.1.1550 FIND SEARCH Расширьте семантику 6.1.1550 FIND, таким образом: ( c-addr -- c-addr 0 | xt 1 | xt -1 ) Ищет определение именованное в строке со счетчиком в c-addr. Если определение не найдено после поиска всех списков слов в порядке поиска, возвращает c-addr и нуль. Если определение найдено, возвращяет xt. Если определение немедленного исполнения, также возвращает один (1); иначе также возвращает минус-один (-1). Для данной строки, значения возвращенные FIND во время компиляции, могут отличаться от возвращенных при не компиляции. See also: 3.4.2 Поиск имен определений, 6.1.0070 ', 6.1.1550 FIND, 6.1.2033 POSTPONE, 6.1.2510 ['], D.6.7 Immediate-ности.
FORTH-WORDLIST 16.6.1.1595 FORTH-WORDLIST SEARCH ( -- wid ) Возвращает wid, идентификатор списка слов, который включает все стандартные слова, предоставленные реализацией. Этот список слов - первоначально список слов компиляции и - часть начального порядка поиска.
GET-CURRENT 16.6.1.1643 GET-CURRENT SEARCH ( -- wid ) Возвращает wid, идентификатор списка слов компиляции.
GET-ORDER 16.6.1.1647 GET-ORDER SEARCH ( -- widn ... wid1 n ) Возвращает число списков слов n в порядке поиска и идентификаторы списков слов widn ... wid1 идентифицирующие эти списки слов. wid1 идентифицирует список слов, который просматривается первым, и widn список слов, который просматривается последним. Порядок поиска не затронут.
SEARCH-WORDLIST 16.6.1.2192 SEARCH-WORDLIST SEARCH ( c-addr u wid -- 0 | xt 1 | xt -1 ) Ищет определение, идентифицированное строкой c-addr u в списке слов идентифицированном wid. Если определение не найдено, возвращает нуль. Если определение найдено, возвращает его идентификатор исполнения xt и один (1) если определение немедленного исполнения, и минус-один (-1) иначе.
SET-CURRENT 16.6.1.2195 SET-CURRENT SEARCH ( wid -- ) Устанавливает список слов компиляции на список слов, идентифицированный wid.
SET-ORDER 16.6.1.2197 SET-ORDER SEARCH ( widn ... wid1 n -- ) Устанавливает порядок поиска на список слов, идентифицированный widn ... wid1. Впоследствии, список слов wid1 будет просматриваться первым, и список слов widn просматриваться последним. Если n нулевой, порядок поиска пуст. Если n - минус один, установит порядок поиска на определенный реализацией минимальный порядок поиска. Минимальный порядок поиска должен включать слова FORTH- WORDLIST и SET-ORDER. Система должна позволять быть n по крайней мере восьми.
WORDLIST 16.6.1.2460 WORDLIST SEARCH ( -- wid ) Создает новый пустой список слов, возвращая его идентификатор списка слов wid. Новый список слов может быть возвращен из пула предварительно размещенных списков слов или может быть динамически распределен в области данных. Система должна позволять создание, по крайней мере, 8 новых списков слов в дополнение к любым предоставленным как часть системы.
ALSO 16.6.2.0715 ALSO SEARCH EXT ( -- ) Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где wid1 просматривается первым) в widn, ... wid2, wid1, wid1. Неопределенная ситуация существует, если есть слишком много списков слов в порядке поиска.
FORTH 16.6.2.1590 FORTH SEARCH EXT ( -- ) Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где wid1 просматривается первым) в widn, ... wid2, widFORTH-WORDLIST.
ONLY 16.6.2.1965 ONLY SEARCH EXT ( -- ) Устанавливает порядок поиска на определенный реализацией минимальный порядок поиска. Минимальный порядок поиска должен включать слова FORTH-WORDLIST и SET-ORDER.
ORDER 16.6.2.1985 ORDER SEARCH EXT ( -- ) Отображает списки слов в порядке поиска в их последовательности порядка поиска, от первого просматриваемого до последнего. Также отображает список слов, в который будут помещены новые определения. Формат отображения - зависящий от реализации. ORDER может быть реализован с использованием слов вывода отображаемых чисел. Следовательно, их использование может разрушать временную область, идентифицированную #>. See also: 3.3.3.6 Другие временные области.
PREVIOUS 16.6.2.2037 PREVIOUS SEARCH EXT ( -- ) Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где wid1 просматривается первым) в widn, ... wid2. Неопределенная ситуация существует, если порядок поиска был пуст прежде, чем было выполнено PREVIOUS.
-TRAILING 17.6.1.0170 -TRAILING "dash-trailing" STRING ( c-addr u1 -- c-addr u2 ) Если u1 больше чем нуль, u2 равно u1 минус число пробелов в конце символьной строки, определенной c-addr u1. Если u1 нуль или вся строка состоит из пробелов, u2 нулевой.
/STRING 17.6.1.0245 /STRING "slash-string" STRING ( c-addr1 u1 n -- c-addr2 u2 ) Корректирует символьную строку c-addr1, n символами. Результирующая символьная строка, определенная c-addr2 u2, начинается с c-addr1 плюс n символов, и длиной u1 минус n символов.
BLANK 17.6.1.0780 BLANK STRING ( c-addr u -- ) Если u больше чем нуль, сохраняет символьное значение пробела в u последовательных символьных позициях, начинающихся с c-addr.
CMOVE 17.6.1.0910 CMOVE "c-move" STRING ( c-addr1 c-addr2 u -- ) Если u больше чем нуль, копирует u последовательных символов из области данных начинающейся с c-addr1 в область, начинающуюся с c- addr2, выполняя посимвольно с наименьших адресов к наибольшим. Отличие с: 17.6.1.0920 CMOVE>.
CMOVE> 17.6.1.0920 CMOVE> "c-move-up" STRING ( c-addr1 c-addr2 u -- ) Если u больше чем нуль, копирует u последовательных символов из области данных начинающейся с c-addr1 в область, начинающуюся с c- addr2, выполняя посимвольно с наибольших адресов к наименьшим. Отличие с: 17.6.1.0910 CMOVE.
COMPARE 17.6.1.0935 COMPARE STRING ( c-addr1 u1 c-addr2 u2 -- n ) Сравнивает строку, определенную c-addr1 u1 со строкой, определенной c-addr2 u2. Строки сравниваются, начиная с заданных адресов, посимвольно, до длины более короткой строки или до нахождения различия. Если две строки идентичны - n нулевое. Если две строки идентичны до длины более короткой строки, n равно минус-один (-1) если u1 - меньше чем u2, иначе один (1). Если две строки - не идентичны до длины более короткой строки, n равно минус-один (-1) если первый несоответствующий символ в строке определенной c-addr1 u1 имеет меньшее числовое значение чем соответствующий символ в строке, определенной c-addr2 u2, иначе один (1).
SEARCH 17.6.1.2191 SEARCH STRING ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) Ищет строку, определенную c-addr1 u1 в строке, определенной c-addr2 u2. Если flag - true, соответствие было найдено с c-addr3 и с u3 оставшимися символами. Если flag - false не было никакого соответствия и c-addr3 равен c-addr1, и u3 равно u1.
SLITERAL 17.6.1.2212 SLITERAL STRING Interpretation: Семантика интерпретации для этого слова не определена. Compilation: ( c-addr1 u -- ) Добавляет семантику времени-выполнения, данную ниже к текущему определению. ( -- c-addr2 u ) Возвращает c-addr2 u описание строки, состоящей из символов определенных c-addr1 u в течение компиляции. Программа не должна изменять возвращенную строку.