![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ONLY FORTH ALSO DEFINITIONS
DECIMAL XL I ST LIST; THRU THRU THRU THRU THRU LOAD
THRU THRU 12 72 LOAD 14 Экр # 41 CPROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( I -> ) \ СПИСОК ДЕЛАЕТСЯ НУЛЕВЫМ (ПУСТЫМ) 3: ПУСТОЙ DUP 2+ DUP ROT! НУЛЬ SWAP! ; 4 5 ( I @СПИСОК -> ) \ УСТАНОВКА ИМЕНИ СПИСКА I 6 \ НА © СПИСОК 7: УСТАНОВИТЬ DUP НУЛЬ - IF DROP ПУСТОЙ 9 ( ©ЭЛЕМЕНТ I -> ) \ ДОБАВЛ. © ЭЛЕМЕНТ К ГОЛОВЕ 10 \ СПИСКА I 11: СВЯЗЬ 2 OVER +! ©!;. 12 \ СЛОВО, ВЫПОЛНЯЮЩЕЕ РЕКУРСИЮ 13: РЕКУРСИЯ LAST @ NAME> , ; IMMEDIATE 15
Экр 0\ 2 3 4 5 6 7 8 9 # 39 C: PR O L O G.BLK МОДИФИЦИРОВАННЫЙ ОПЕРАТОР CASE ДЛЯ OF COMPILE OVER COMPILE - [COMPILE] IF COMPILE DROP; IMMEDIATE ENDCASE COMPILE DROP BEGIN? DUP WHILE Экр # 42 CPROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( НУЛЬ S I S 2... SN I -> ) \ ПОСТРОЕНИЕ СПИСКА 3 \ С ИМЕНЕМ I 4: СПИСОК > R BEGIN DUP НОЛЬ NOT 6 WHILE R@ СВЯЗЬ 7 REPEATE R > 2DR O P ' 8 ( ©СПИСОК I -> ) \ РЕКУРСИВНОЕ ОПРЕДЕЛЕНИЕ 9 \ 2 СОЕД
IF 2DR O P ELSE OVER Х ВОСТ OVER РЕКУРСИЯ SWAP ПЕРВЫЙ SWAP СВЯЗЬ
Экр # 40 CPROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ ЛИСПА НА ФОРТЕ-83 2 VARIABLE НУЛЬ НУЛЬ НУЛЬ! \ ПУСТОЙ СПИСОК 4 ( #ЭЛЕМЕНТОВ -> ) 5 \ #ЭЛЕМЕНТОВ-МАКСИМ. ЧИСЛУ ЭЛЕМЕНТ. СПИСКА 6: НОВСПИСОК CREATE HERE 2+, НУЛЬ, 2* ALLOT; 7 ( ©СПИСОК -> ©ПЕРВЫЙ) 8 \ © ПЕРВЫЙ-УКАЗАТ.НА ПЕРВЫЙ ЭЛЕМ.СПИСКА 9: ПЕРВЫЙ @; 10 ( © С ПИСОК | Н УЛЬ -> Ф ЛАГ) 11 \ ФЛАГ - ИСТИНА, ЕСЛИ СПИСОК ПУСТОЙ 12: НОЛЬ ©НУЛЬ-; 13 ( © С ПИСО К -> © Х ВОСТ) 14 \ ©ХВОСТ - УКАЗАТЕЛЬ НА ОСТАТОК СПИСКА 15: ХВОСТ DUP НОЛЬ IF @ ELSE 2- THEN; Экр # 43 C: PR O L O G.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( © -> ФЛАГ) \ ФЛАГ - ИСТИНА, ЕСЛИ © ДАЕТ PFA 3 \ ПЕРЕМЕННОЙ 4: ATOM? B O DY > < §> [ ' ] НУЛЬ © -;
5 ( ©СПИСОК -> ) BEGIN DUP ПЕРВЫЙ DUP ATOM? IF DUP НОЛЬ NOT IF B O DY> > NAME. ID ELSE DROP THEN ELSE РЕКУРСИЯ THEN Х ВОСТ DUP НОЛЬ
274 275 Экр # 44 C: PROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83
2 ( ©СПИСОК -> ) IF DROP CR." НУЛЬ" IF BODY> > NAME.ID ELSE ВЫДАТЬСП THEN Экр # 47 C: PROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 UNNEST 3 ( ©СПИСОК -> ©ПОСЛЕДНИЙ) \ ВОЗВРАЩАЕТ 4 \ УКАЗАТЕЛЬ НА ПОСЛЕДНИЙ 5 \ ЭЛЕМЕНТ СПИСКА С УКАЗАТЕЛЕМ ©СПИСОК 6: ПОСЛЕДНИЙ DUP ХВОСТ НОЛЬ NOT
7 IF ХВОСТ РЕКУРСИЯ 8 THEN
10 \ ИТЕРАТИВНЫЙ ВАРИАНТ СЛОВА ПОСЛЕДНИЙ 11: ПОСЛЕДНИЙ
12 BEGIN DUP ХВОСТ НОЛЬ NOT 13 WHILE ХВОСТ 14 REPEAT
Экр # 45 CPROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( -> С) \ ЧТЕНИЕ ОЧЕРЕДНОГО СИМВОЛА ИЗ 3 \ ВХОДНОГО ПОТОКА 4: ЧТСИМ BEGIN ИСТОЧНИК > IN @ /STRING 5 IF С© 1 > IN +! TRUE 6 ELSE DROP ['] ИСТОЧНИК > BODY © ['] 7 (ИСТОЧНИК) - 8 IF QUERY ELSE 1 BLK +! 0 > IN! THEN FALSE 9 THEN 10 UNTIL; ( -> CFA) 11 \ ЕСЛИ СЛОВА НЕТ В СЛОВАРЕ, 12 \ СОЗДАЕТСЯ ПЕРЕМЕННАЯ 13: 7CREATE > IN @ DEFINED 14 IF NIP ELSE DROP > IN! HERE VARIABLE 4 + NAME> 15 THEN;
Экр # 48 CPROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( ©СПИСОК -> N) \ ВОЗВРАЩАЕТ ЧИСЛО 3 \ ЭЛЕМЕНТОВ В СПИСКЕ 4: ДЛИНА DUP НОЛЬ 5 IF DROP 0 6 ELSE ХВОСТ РЕКУРСИЯ 1+ 7 THEN; 9 UNNEST 10 \ ДЛИНА. ИТЕРАТИВНЫЙ ВАРИАНТ 11: ДЛИНА 0
12 BEGIN OVER НОЛЬ NOT 13 WHILE 1+ SWAP ХВОСТ SWAP 14 REPEAT NIP
Экр # 46 C: PROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83
2 ( I -> ) BEGIN ЧТСИМ OF FALSE ENDOF ASCII ( -1 > IN +! 7CREATE EXECUTE FALSE ROT Экр # 49 CPROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( ЭЛЕМЕНТ ©СПИСОК -> @ХВОСТ) \ ЕСЛИ ЭЛЕМЕНТ В СПИСКЕ
©ХВОСТ БУДЕТ ОСТАТКОМ СПИСКА, НАЧИНАЮЩЕГОСЯ С ELSE SWAP ХВОСТ РЕКУРСИЯ
276 277 Э к р # 50 C PROLOG. BLK 0 \ ОТДЕЛЬНЫЕ СПИСКИ НОВСПИСОК I I НОВСПИСОК 1 2 4 20 НОВСПИСОК 1 3
VARIABLE S I VARIABLE S2 8 VARIABLE S3
I I ЧТСП (S I S2 - S3 ) 11 1 2 Ч ТСП (S I I I @S 2S 3) 12 1 3 ЧТСП (S3) 14 Экр 2 ( 3 4 5 6 7 8 9 10 11 12 13 14 15 # 53 O PROLOG.BLK УНИФИКАЦИЯ ПРОЛОГА НА ФОРТЕ-83 C l C2 -> F ) ELSE 2DUP ATOM? SWAP ATOM? OR ELSE 2DUP ПЕРВЫЙ SWAP ПЕРВЫЙ SWAP
Экр # 51 O PROLOG.BLK 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83
2 ( С СШ -> СП2) |
Последнее изменение этой страницы: 2019-03-29; Просмотров: 240; Нарушение авторского права страницы