NUMBER
NUMBER — встроенное слово Каллисто.
Преобразует в число последовательность символов, начиная с a+1 с учётом BASE.
Ввод слова NUMBER
В режиме ЛАТ последовательно нажмите клавиши 4 3 ÷ В/О ИП ×
История
Слово NUMBER появилось в 1958 году в самой первой версии интерпретатора Форта, написанного Чак Муром на Фортране для IBM EDPM 704 для САО. Тогда оно ещё не называлось NUMBER, так как в то время команды Форта кодировались числами.
Первый NUMBER использовался словом INTERPRET для преобразования слов в двоичный вид, в данном случае чисел с плавающей запятой.
Слово NUMBER исключено из стандарта Форта 1994 года и его нет в черновике Форта-2012. Его реализация в Каллисто отлична от старых стандартов, т.к. возвращает лишь один элемент стека, а не числовую пару.
NUMBER в предыдущем стандарте Forth-83 (англ.)
NUMBER addr -- d Convert the count and character string at addr, to a signed 32-bit integer, using the value of BASE . If numeric conversion is not possible, an error condition exists. The string may contain a preceding minus sign.
NUMBER в стандарте Forth-79 (англ.)
NUMBER addr -- n Convert the count and character string at addr, to a signed 32-bit integer, using the current base. If numeric conversion is not possible, an error condition exists. The string may contain a preceding negative sign.
NUMBER в fig-FORTH Release 1 glossary, май 1979 (англ.)
NUMBER addr --- d Convert a character string left at addr with a preceeding count, to a signed .double number, using the current numeric base. If a decimal point is encountered in the text, its position will be given in DPL, but no other effect occurs. If numeric conversion is not possible, an error message will be given.
Реализация
Описание и определение слова NUMBER в ядре ФОРТ-ЕС:
NUMBER + T->WD ПРЕОБРАЗОВАТЬ СТРОКУ Т В ЧИСЛО WD 39 Экран номер 39 ( 31.03.86 DIGIT CONVERT NUMBER ) : NUMBER ( T->WD ) 0 0 ROT DUP >R COUNT OVER + OVER С@ С" - = DUP >R SWAP >R IF ELSE 1- THEN -1 BEGIN DPL ! CONVERT DUP R@ < WHILE DUP С@ С" . <> IF RDROP RDROP R> BADWORD THEN 0 REPEAT DROP RDROP R> IF DNEGATE THEN RDROP ;
Определение слов (NUMBER) и NUMBER в FORTH ИТЭФ:
HEAD 210Q,'(NUMBER',251Q,PNUMB,$COL ; (NUMBER) BN: DW ONEP,TOR,I,CAT,BASE,AT,DIGIT,ZBRAN,MMO-$ DW SWAP,BASE,AT,USTAR,DROP,ROT,BASE,AT,USTAR DW DPLUS,DPL,AT,ONEP,ZBRAN,BN1-$,ONE,DPL,PSTOR BN1: DW FROMR,BRAN,BN-$ MMO: DW FROMR,SEMI ... HEAD 206Q,'NUMBE',322Q,NUMB,$COL ; NUMBER DW ZERO,$EX,STORE,BASE,AT,ZERO,ROT DW ONEP,DUBL,CAT,DUBL,LIT,53Q,EQUAL DW ZBRAN,NH1-$,DEC,DROP,BRAN,NH4-$ NH1: DW DUBL,LIT,55Q,EQUAL,ZBRAN,NH2-$,DROP,DEC DW SWAP,DROP,ONE,SWAP,BRAN,NH4-$ NH2: DW LIT,47Q,EQUAL,ZBRAN,NH3-$,OCTAL,ONEP NH3: DW ONEM NH4: DW LIT,-1,DPL,STORE,ZERO,ZERO,ROT,PNUMB,DUBL DW CAT,BLAN,SUB,ZBRAN,NH6-$ DW DUBL,CAT,LIT,56Q,EQUAL,ZBRAN,EXP-$ DW ZERO,DPL,STORE,PNUMB,DUBL,CAT,BLAN,SUB,ZBRAN,NH6-$ EXP: DW DPL,AT,SWAP,DUBL,CAT,LIT DW 105Q,EQUAL,ZBRAN,ER1-$,ONEP,DUBL,CAT DW LIT,55Q,EQUAL,ZBRAN,NEMI-$,ONE,BRAN,NH0-$ NEMI: DW DUBL,CAT,LIT,53Q,SUB,ZBRAN,PLU-$,ONEM PLU: DW ZERO NH0: DW SWAP,ZERO,ZERO,ROT,PNUMB,CAT,BLAN,EQUAL,ZBRAN,ER-$ DW DROP,SWAP,ZBRAN,NH5-$,MINUS NH5: DW $EX,STORE,DPL,STORE,ZERO NH6: DW DROP,ROT,ZBRAN,NH7-$,DMINU NH7: DW ROT,BASE,STORE,SEMI ER: DW DDROP,DROP ER1: DW DDROP,DDROP,DROP,ZERO,ERROR,SEMI
Ссылки
- ОСНОВЫ ФОРТА в книге Л.Броуди «Начальный курс программирования на языке Форт»
- ЧИСЛО ТИПОВ ЧИСЕЛ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- ВВОД-ВЫВОД в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Fundamental Forth в книге Leo Brodie Starting Forth (англ.)
- A Number of Kinds of Numbers в книге Leo Brodie Starting Forth (англ.)
- I/O and You в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |