Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


ONLY FORTH ALSO DEFINITIONS



DECIMAL

XL I ST LIST;

THRU

THRU

THRU

THRU

THRU

LOAD

 

THRU

THRU

12 72 LOAD
13

14
15





Экр # 41           CPROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ НА ФОРТЕ-83

2 ( I -> ) \ СПИСОК ДЕЛАЕТСЯ НУЛЕВЫМ (ПУСТЫМ)

3: ПУСТОЙ DUP 2+ DUP ROT! НУЛЬ SWAP! ;

4

5 ( I @СПИСОК -> ) \ УСТАНОВКА ИМЕНИ СПИСКА I

6 \ НА © СПИСОК

7: УСТАНОВИТЬ DUP НУЛЬ - IF DROP ПУСТОЙ
Я \ ELSE SWAP *! THEN '

9 ( ©ЭЛЕМЕНТ I -> ) \ ДОБАВЛ. © ЭЛЕМЕНТ К ГОЛОВЕ

10 \ СПИСКА I

11: СВЯЗЬ 2 OVER +! ©!;.

12 \ СЛОВО, ВЫПОЛНЯЮЩЕЕ РЕКУРСИЮ

13: РЕКУРСИЯ LAST @ NAME> , ; IMMEDIATE
14

15


 






Экр

0\
1

2

3

4

5

6

7

8

9
10
11
12
13
14
15


# 39         C: PR O L O G.BLK

МОДИФИЦИРОВАННЫЙ ОПЕРАТОР CASE ДЛЯ
\ ФОРТА ПЕРРИ И ЛЭКСЕНА
CASE 0; IMMEDIATE











OF COMPILE OVER

COMPILE -

[COMPILE] IF

COMPILE DROP; IMMEDIATE
ENDOF [ COMPILE] ELSE; IMMEDIATE

ENDCASE COMPILE DROP BEGIN? DUP WHILE
[COMPILE] THEN REPEATE; IMMEDIATE





Экр # 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 СОЕД
10: 2СОЕД OVER НОЛЬ

11
12
13
14
1 5






IF 2DR O P

ELSE OVER Х ВОСТ OVER РЕКУРСИЯ

SWAP ПЕРВЫЙ SWAP СВЯЗЬ
THEN


 





Экр # 40        CPROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ ЛИСПА НА ФОРТЕ-83

2 VARIABLE НУЛЬ НУЛЬ НУЛЬ! \ ПУСТОЙ СПИСОК
3

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 > < §> [ ' ] НУЛЬ © -;

6
7
8
9
10
11
12
13
1 4
15

5 ( ©СПИСОК -> )
 ВЫДАТЬСП CR." ("

BEGIN DUP ПЕРВЫЙ DUP ATOM?

IF DUP НОЛЬ NOT

 IF B O DY> > NAME. ID ELSE DROP THEN

 ELSE РЕКУРСИЯ

 THEN Х ВОСТ DUP НОЛЬ
 UNTIL 8 ( ЗАБОЙ ) EMIT." ) " DROP


 


274


275


Экр # 44       C: PROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ НА ФОРТЕ-83

3
4
5
6
7
8
9
10
11
12
13
14
15

2 ( ©СПИСОК -> )
ВЫДАТЬ DUP @ НОЛЬ

IF DROP CR." НУЛЬ"
ELSE DUP ATOM?

IF BODY> > NAME.ID

ELSE ВЫДАТЬСП

THEN
THEN


Экр # 47         C: PROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ НА ФОРТЕ-83

2 UNNEST

3 ( ©СПИСОК -> ©ПОСЛЕДНИЙ) \ ВОЗВРАЩАЕТ

4 \ УКАЗАТЕЛЬ НА ПОСЛЕДНИЙ

5 \ ЭЛЕМЕНТ СПИСКА С УКАЗАТЕЛЕМ ©СПИСОК

6: ПОСЛЕДНИЙ DUP ХВОСТ НОЛЬ NOT

 

7 IF ХВОСТ РЕКУРСИЯ

8 THEN
9;

 

10 \ ИТЕРАТИВНЫЙ ВАРИАНТ СЛОВА ПОСЛЕДНИЙ

11: ПОСЛЕДНИЙ

 

12 BEGIN DUP ХВОСТ НОЛЬ NOT

13 WHILE ХВОСТ

14 REPEAT
15;


 


Экр # 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;
8

9 UNNEST

10 \ ДЛИНА. ИТЕРАТИВНЫЙ ВАРИАНТ

11: ДЛИНА 0

 

12 BEGIN OVER НОЛЬ NOT

13 WHILE 1+ SWAP ХВОСТ SWAP

14 REPEAT NIP
15;


 


Экр # 46       C: PROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ НА ФОРТЕ-83

3
4
5
6
7
8
9
10
11
12
13
14
15

2 ( I -> )
ЧТСП > R

BEGIN ЧТСИМ
CASE BL

OF FALSE ENDOF ASCII (
OF НУЛЬ FALSE ENDOF ASCII )
OF R@ СПИСОК TRUE ENDOF ASCII ©
OF © FALSE ENDOF

-1 > IN +! 7CREATE EXECUTE FALSE ROT
ENDCASE
UNTIL R> DROP


Экр # 49         CPROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ НА ФОРТЕ-83

2 ( ЭЛЕМЕНТ ©СПИСОК -> @ХВОСТ) \ ЕСЛИ ЭЛЕМЕНТ В СПИСКЕ
\ ПРИСУТСТВУЕТ, ТО

4\

5\

6\

7:

8

9

10

11

12

13

14;

15

©ХВОСТ БУДЕТ ОСТАТКОМ СПИСКА, НАЧИНАЮЩЕГОСЯ С
ЭЛЕМЕНТА;
ИНАЧЕ НУЛЬ
ЧЛ SWAP OVER НОЛЬ
IF 2DROP НУЛЬ
ELSE OVER ПЕРВЫЙ OVER -
IF DROP

ELSE SWAP ХВОСТ РЕКУРСИЯ
THEN
THEN


 


276


277












































































Э к р # 50         C PROLOG. BLK

0 \ ОТДЕЛЬНЫЕ СПИСКИ
1


НОВСПИСОК I I

НОВСПИСОК 1 2

4 20 НОВСПИСОК 1 3
5

 


VARIABLE S I

VARIABLE S2

8 VARIABLE S3
9

 


I I ЧТСП (S I S2 - S3 )

11 1 2 Ч ТСП (S I I I @S 2S 3)

12 1 3 ЧТСП (S3)
13

14
15


Экр
0\
1






2 (

3

4

5

6

7

8

9

10

11

12

13

14

15


# 53          O PROLOG.BLK


УНИФИКАЦИЯ ПРОЛОГА НА ФОРТЕ-83

C l C2 -> F )
РАВНО 2DUP -
IF 2DR O P TRUE

ELSE 2DUP ATOM? SWAP ATOM? OR
IF 2DR O P FALSE

ELSE 2DUP ПЕРВЫЙ SWAP ПЕРВЫЙ SWAP
РЕКУРСИЯ -ROT Х ВОСТ SWAP Х ВОСТ SWAP
РЕКУРСИЯ AND
THEN
THEN


 











Экр # 51         O PROLOG.BLK

0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ

1 \ НА ФОРТЕ-83

3
4
5
6
7
8
9
10
11
12
13
14
15

2 ( С СШ -> СП2)
АССО Ц DUP НОЛЬ
IF NIP


Поделиться:



Последнее изменение этой страницы: 2019-03-29; Просмотров: 215; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.037 с.)
Главная | Случайная страница | Обратная связь