![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ИДЕНТИФИКАТОР И УКАЗАТЕЛЬ СПИСКА
Списки идентифицируются своими именами в словаре Форта. 161 списка в качестве слова Форта. С другой стороны, при заданном Рис. 7.3. Словарная структура списка, созданного словом НОВСПИСОК. Указатель на голову списка помещен в pfa, а по адресу pfa+2 находится указатель на НУЛЬ, отмечающий конец списка (А В С) При заданном имени списка указатель списка может (а часто 1 1 @ Для того чтобы имя списка указывало на список, нужно (И ©СПИСОК-> ) где И - имя списка (его pfa), а @СПИСОК - указатель списка. И НУЛЬ УСТАНОВИТЬ 42 О \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 2 ( НУЛЬ S 1 S 2... SN I -> ) \ ПОСТРОЕНИЕ СПИСКА С ИМЕНЕМ I 3 • СПИСОК > R 4 BEGIN DUP НОЛЬ NOT 5 WHILE R@ СВЯЗЬ 6 REPEATE R> 2DR O P 7; 9 ( (Э СПИСОК I -> ) \ РЕКУРСИВНОЕ ОПРЕДЕЛЕНИЕ 2СОЕД СОЕД OVER НОЛЬ I F2 DR0P ELSE OVER Х ВОСТ OVER РЕКУРСИЯ SWAP ПЕРВЫЙ SWAP СВЯЗЬ THEN 15; 43 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( @ - > ФЛАГ) \ ФЛАГ = ИСТИНА, 3 \ ЕСЛИ @ ДАЕТ PFA ПЕРЕМЕННОЙ 4: ATOM? B O DY> @ ['] НУЛЬ @ =; 5 ( ©СПИСОК -> ) 6: ВЫДАТЬСП CR." (" BEGIN DUP ПЕРВЫЙ DUP ATOM? IF DUP НОЛЬ NOT 9 I F B O DY> > NAME. I D ELSE DROP THEN ELSE РЕКУРСИЯ THEN Х ВОСТ DUP НОЛЬ 12 UNTIL 8 ( ЗАБОЙ ) EMIT." )" DROP 14 44 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( @СПИСОК -> ) 3: ВЫДАТЬ DUP @ НОЛЬ
4 I F DR OPC R." НУЛЬ" ELSE DUP ATOM? 6 I F B O DY> > NAME. ID THEN ^ T HEN
162 6* 163 ВЫВОД СПИСКОВ НА ПЕЧАТЬ Вывод списков на печать производится словом ВЫДАТЬ 11 @ ВЫДАТЬ Операция @ помещает на стек указатель списка с именем П. В ВОД С ПИСКОВ Слово- СВЯЗЬ представляет собой примитивную операцию по- ( НУЛЬ S1 S2... SN И -> ) где S1... SN - элементы, а II -имя списка. Результирующий (S1 S2... SN) Введя И @ ВЫДАТЬ вы увидите Э1*от список. Элементы списка служат указателями на pfa переменных Фо- I ЧТСП где I - имя списка, а затем набрать список в скобочной записи. Ле- Непосредственно можно ввести список только одного уровня. Та- (A(BC)D) поскольку в нем содержится внутренний список. В данной реализа-
0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( -> С) \ ЧТЕНИЕ ОЧЕРЕДНОГО СИМВОЛА ИЗ ВХОДНОГО ПОТОКА 4 BEGIN ИСТОЧНИК > IN @ /STRING 5 I F С@ 1 > IN +! TRUE 6 ELSE DROP ['] ИСТОЧНИК > B O DY @ ['] (ИСТОЧНИК) = 7 I F QUERY ELSE 1 BLK +! 0 > IN! THEN FALSE THEN 9 UNTIL 11 ( -> CFA ) \ ЕСЛИ СЛОВА НЕТ В СЛОВАРЕ, СОЗДАЕТСЯ ПЕРЕМЕННАЯ 13: 7 CREATE > IN @ DEFINED 14 I F NIP ELSE DROP > IN! HERE VARIABLE 4 + NAME> THEN 15; 46 0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ 1 \ НА ФОРТЕ-83 2 ( I -> ) 3: ЧТСП > R BEGIN ЧТСИМ CASE BL OF FALSE E ND OF ASCII ( |
Последнее изменение этой страницы: 2019-03-29; Просмотров: 236; Нарушение авторского права страницы