UCONVERT
UCONVERT — фортовское слово Каллисто. Преобразовать последовательность цифр в целое, с учётом BASE.
UCONVERT ( u a −− u1 a1 ) Преобразовать u и литеры от a+1 в u1 и a1 −− адрес первой не цифры.
Ввод слова UCONVERT
В режиме ЛАТ последовательно нажмите клавиши 3 С/П 5 4 ↔ ИП × 2
CONVERT в стандарте ANS Forth
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. См.: 3.2.1.2 Преобразование цифр. A.6.2.0970 CONVERT CONVERT может быть определено следующим образом: : CONVERT CHAR+ 65535 >NUMBER DROP ;
История
В стандарте Форта 1994 года слово CONVERT было определено, как устаревшее. Его нет в черновике стандарта 200x года.
Каллистянское слово UCONVERT нестандартное, т.к. в стандарте Форт-94 вместо u прописана пара чисел ud1.
CONVERT в предыдущем стандарте Forth-83 (англ.)
CONVERT +d1 addr1 -- +d2 addr2 79 +d2 is the result of converting the characters within the text beginning at addr1+1 into digits, using the value of BASE , and accumulating each into +d1 after multiplying +d1 by the value of BASE . Conversion continues until an unconvertible character is encounter. addr2 is the location of the first unconvertible character.
CONVERT в стандарте Forth-79 (англ.)
CONVERT d1 addr1 -- d2 addr2 195 Convert to the equivalent stack number the text beginning at addr1+1 with regard to BASE. The new value is accumulated into double number d1, being left as d2. addr2 is the address of the first non-convertible character.
(NUMBER) в fig-FORTH Release 1 glossary, май 1979 (англ.)
(NUMBER) d1 addr1 --- d2 addr2 Convert the ascii text beginning at addr1+l with regard to BASE. The new value is accumulated into double number d1, being left as d2. Addr2 is the address of the first unconvertable digit. Used by NUMBER.
Реализация
Описание и определение слова CONVERT в ядре ФОРТ-ЕС:
CONVERT WD1,A1,->WD2,A2 ПРЕОБРАЗОВАТЬ WD1 И ЛИТЕРЫ 39 ОТ А1+1 В WD2 И А2 - АДРЕС 1-ОЙ НЕ ЦИФРЫ Экран номер 39 ( 31.03.86 DIGIT CONVERT NUMBER ) : CONVERT ( WD1,AI->WD2,A2) BEGIN 1+ DUP >R C@ BASE @ DIGIT WHILE SWAP BASE @ UM* DROP ROT BASE @ UM* D+ DPL @ 1+ IF DPL 1+! THEN R> REPEAT R> ;
Ссылки
- Исходный текст слова UCONVERT в Каллисто Классик 1.0
- См. слова DIGIT, BASE и NUMBER
- Слово CONVERT и комментарий к нему в стандарте ANS Forth (англ.)
- ВВОД-ВЫВОД в книге Л.Броуди «Начальный курс программирования на языке Форт»
- I/O and You в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |