INTERPRET: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 80: | Строка 80: | ||
Слово INTERPRET появилось в 1958 году в самой первой версии интерпретатора Форта, написанного Чак Муром на Фортране для IBM EDPM 704 для [https://ru.wikipedia.org/wiki/%D0%A1%D0%BC%D0%B8%D1%82%D1%81%D0%BE%D0%BD%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%81%D1%82%D1%80%D0%BE%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BE%D0%B1%D1%81%D0%B5%D1%80%D0%B2%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F САО]. Тогда оно ещё не называлось INTERPRET, так в то время команды Форта кодировались числами. | Слово INTERPRET появилось в 1958 году в самой первой версии интерпретатора Форта, написанного Чак Муром на Фортране для IBM EDPM 704 для [https://ru.wikipedia.org/wiki/%D0%A1%D0%BC%D0%B8%D1%82%D1%81%D0%BE%D0%BD%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%81%D1%82%D1%80%D0%BE%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BE%D0%B1%D1%81%D0%B5%D1%80%D0%B2%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F САО]. Тогда оно ещё не называлось INTERPRET, так в то время команды Форта кодировались числами. | ||
INTERPRET использовал [[WORD]], чтобы считывать слова, разделённые пробелами и [[NUMBER]] для оцифровки слов, в данном случае | INTERPRET использовал [[WORD]], чтобы считывать слова, разделённые пробелами и [[NUMBER]] для оцифровки слов, в данном случае чисел с плавающей запятой. Подобный ввод в свободном формате был в то время необычных, но более эффективным (компактней и быстрее) и надёжным. Фортрановский ввод был отформатирован в конкретные колонки и ошибки набора приводили к многочисленным задержкам. | ||
Этот интерпретатор использовал закодированную на Фортране конструкцию IF … ELSE IF, в поисках совпадения одного символа. | Этот интерпретатор использовал закодированную на Фортране конструкцию IF … ELSE IF, в поисках совпадения одного символа. |
Версия от 20:05, 20 марта 2016
INTERPRET (интерпретировать) — стандартное слово Каллисто. Текстовый интерпретатор.
Интерпретирует последовательность слов, пока там что-то есть.
Ввод слова INTERPRET
В режиме ЛАТ последовательно нажмите клавиши 7 4 2 ИП × 6 × ИП 2
INTERPRET в предыдущем стандарте Forth-83 (англ.)
INTERPRET -- M,83 Begin text interpretation at the character indexed by the contents of >IN relative to the block number contained in BLK , continuing until the input stream is exhausted. If BLK contains zero, interpret characters from the text input buffer. See: "input stream"
INTERPRET в стандарте Forth-79 (англ.)
INTERPRET Begin interpretation at the character indexed by the contents of >IN relative to the block number contained in BLK, continuing until the input stream is exhausted. If BLK contains zero, interpret characters from the terminal input buffer.
INTERPRET в fig-FORTH Release 1 glossary, май 1979 (англ.)
INTERPRET The outer text interpreter which sequentially executes or compiles text from the input stream (terminal or disc) depending on STATE. If the word name cannot be found after a search of CONTEXT and then CURRENT it is converted to a number according to the current base. That also failing, an error message echoing the name with a " ?" will be given. Text input will be taken according to the convention for WORD. If a decimal point is found as part of a number, a double number value will be left. The decimal point has no other purpose than to force this action. See NUMBER.
Реализация INTERPRET
Юрий Семёнов приводит следующее описание слова INTERPRET (стр. 140):
: INTERPRET BEGIN ( начало бесконечного цикла) FINDN ( поиск очередного имени в словаре) IF ( если слово найдено) STATE @ < ( в стеке байт длины, STATE ; проверяется, не является ли слово оператором немедленного исполнения) IF ( если обычное слово) NAME> , ( запись CFA найденного слова в новое описание) ELSE ( если слово немедленного исполнения) NAME> EXECUTE ( исполнение найденного слова) THEN ELSE ( если слово не найдено, проверяется - может быть это число ?) HERE NUMBER DPL @ 1+ ( преобразование пос- ледовательности кодов ASCII в число) IF ( если число двойной длины) DLITERAL ( запись последовательности "LIT, число" в описание нового слова) ELSE DROP LITERAL ( запись в описание числа одинарной длины) THEN THEN ?STACK ( указатель стека в норме ?) AGAIN ;
У Баранова-Ноздрунова определение слова INTERPRET выглядит так (стр. 79):
: INTERPRET ( ---> ) BEGIN BL WORD FINDN ?DUP IF ( Проверить признак IMMEDIATE) 1+ IF NAME> EXECUTE ELSE NAME> STATE @ IF , ELSE EXECUTE THEN THEN ELSE ( Может быть это число?) NUMBER DPL @ 1+ IF [COMPILE] 2LITERAL ELSE DROP [COMPILE] LITERAL THEN THEN AGAIN ;
История
Слово INTERPRET появилось в 1958 году в самой первой версии интерпретатора Форта, написанного Чак Муром на Фортране для IBM EDPM 704 для САО. Тогда оно ещё не называлось INTERPRET, так в то время команды Форта кодировались числами.
INTERPRET использовал WORD, чтобы считывать слова, разделённые пробелами и NUMBER для оцифровки слов, в данном случае чисел с плавающей запятой. Подобный ввод в свободном формате был в то время необычных, но более эффективным (компактней и быстрее) и надёжным. Фортрановский ввод был отформатирован в конкретные колонки и ошибки набора приводили к многочисленным задержкам.
Этот интерпретатор использовал закодированную на Фортране конструкцию IF … ELSE IF, в поисках совпадения одного символа.
В Форте ANS слово INTERPRET было заменено словом EVALUATE
Иногда текстовый интерпретатор называют «внешним» (англ. outer) интерпретатором, в противоположность адресному («внутреннему») интерпретатору.
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |