вот, маленько понадобилось.
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
|