Forth
http://www.fforum.winglion.ru/

перечисления
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2878
Страница 1 из 1

Автор:  mOleg [ Вт сен 18, 2012 18:35 ]
Заголовок сообщения:  перечисления

вот, маленько понадобилось.
source file: enum.fts
\ 15.09.2012 m0leg
\ перечисления

vocs/ struct.fts

ALSO HIDDEN UNITS DEFINITIONS

\ завершение перечисления
: ;ENUM TDROP RECENT ;

\ создание очередного элемента перечисления
: :elem ( u asc # --> u ) THRID >L (F) L> LIT, [COMPILE] ;F IMMEDIATE 1 + ;

\ начать перечисление, определить его в словарь NAME
: ENUM: ( / NAME a b .. ;ENUM --> )
0 Unit:
BEGIN
NEXT-WORD DDUP WHERE SEARCH-NAME LFA ;ENUM <> WHILE
DDUP s" \\" COMPARE
IFNOT DDROP [COMPILE] \
ELSE :elem
THEN
REPEAT ;ENUM
;

UNDER DEFINITIONS
ALIAS ENUM: ENUM:
UNDER PREVIOUS

?ABSENT test{ \EOF -- тестовая секция ------------------------------------------
test{
DEPTH >L ENUM: ENUMS a b c d e f ;ENUM DEPTH L> <> THROW
ENUMS c 2 <> THROW ENUMS b 1 <> THROW ENUMS e 4 <> THROW
ENUM: DIGITS
zero
one
two
three
four
five
six
seven
eight
nine
;ENUM

DIGITS four 4 <> THROW
}test

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/