"Azamadt Smaguloff"
<
[hidden email]> writes:
> ну вот примерно такой вариант поиска не рабтает с magic value
> и немножко, какмне кажется удобнее располагает свои параметры
> на стеке. Пока чтобы не путаться все "новые" слова набраны в
> нижнем регистре.
>
> Какие будут замечания или предложения?
>
> Да, найдена неудобность, а точнее даже неточность в ?IMMEDIATE
> и еще одна правка нужна в СПФовском INTERPRET - вместо:
> STATE @ = нужно STATE @ >
>
> \ 28-12-2006 ~mOleg
> \ заменяем неудобный SFIND на более логичный
> \ порядок следования параметров теперь будет следующим:
> \ ( asc # --> asc # false | wid imm true )
> \ то есть всегда возвращаем три числа!
> \ либо возвращаем начальную строку с признаком false
> \ либо - адрес флаг_immediate true
>
> S" lib/include/tools.f" INCLUDED
>
> \ в СПФ4 - это слово работает не очень верно - переопределил
> : ?IMMEDIATE ( NFA -> F ) NAME>F C@ &IMMEDIATE AND 0<> ;
IMMEDIATE? - поскольку возвращает признак.
Ср. KEY? EMIT?
> \ удалить с вершины стека указанное число параметров
> : nDROP ( [ .. ] n --> ) 1+ CELLS SP@ + SP! ;
DISCARD - используйте уже данные имена.
> \ выдать адрес и длинну идентификатора имени
> : id>asc ( NFA --> asc # ) DUP 1+ SWAP C@ ;
Не используйте сокращения "asc", в России он не используется.
> \ найти слово в указанном словаре
> \ тоже меняем порядок параметров.
> : search-wordlist ( asc # voc-id -- asc # false | xt imm_flag true )
> hashname
> BEGIN DUP WHILE
> >R 2DUP R@ identify WHILE
> R> CDR
Про CDR я тоже писал: не надо использовать неочевидных сокращений.
> : stateact ( xt imm_flag --> )
Зачем писать слитно? Подчёркивания и дефисы уже отменили?
Есть общее правило: код пишут не для машины, а для человека,
потому что машина переварит любую мешанину, а человек нет.