вот, маленько понадобилось.
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
вот, маленько понадобилось.
[pre]source file: enum.fts
[b][color=#C0C0C0]\ 15.09.2012 m0leg[/color]
[color=#C0C0C0]\ перечисления[/color]
[color=#00F000]vocs/ struct.fts[/color]
[color=#FF00FF]ALSO[/color] [color=#FF00FF]HIDDEN[/color] UNITS [color=#FF00FF]DEFINITIONS[/color]
[color=#C0C0C0]\ завершение перечисления[/color]
[color=#FF8000]: ;ENUM[/color] TDROP [color=#FF00FF]RECENT[/color] [color=#FF8000];[/color]
[color=#C0C0C0]\ создание очередного элемента перечисления[/color]
[color=#FF8000]: :elem[/color] [color=#0080C0]( u asc # --> u )[/color] THRID >L (F) L> LIT, [color=#00F000][COMPILE] ;F[/color] [color=#C00000]IMMEDIATE[/color] [color=#00F000]1[/color] + [color=#FF8000];[/color]
[color=#C0C0C0]\ начать перечисление, определить его в словарь NAME[/color]
[color=#FF8000]: ENUM:[/color] [color=#0080C0]( / NAME a b .. ;ENUM --> )[/color]
[color=#00F000]0[/color] [color=#FF8000]Unit:
BEGIN[/color] NEXT-WORD DDUP WHERE SEARCH-NAME LFA [color=#FF8000];ENUM[/color] <> [color=#00A0A0]WHILE[/color]
DDUP [color=#00F000]s" \\"[/color] COMPARE
[color=#00A0A0]IFNOT[/color] DDROP [color=#00F000][COMPILE] \[/color]
[color=#00A0A0]ELSE[/color] :elem
[color=#00A0A0]THEN[/color]
[color=#00A0A0]REPEAT[/color] [color=#FF8000];ENUM[/color]
[color=#FF8000];[/color]
UNDER [color=#FF00FF]DEFINITIONS[/color]
[color=#FF8000]ALIAS ENUM: ENUM:[/color]
UNDER [color=#FF00FF]PREVIOUS[/color]
[color=#C00000]?ABSENT test{ \EOF -- тестовая секция ------------------------------------------[/color]
test{
DEPTH >L [color=#FF8000]ENUM: ENUMS[/color] a b c d e f [color=#FF8000];ENUM[/color] DEPTH L> <> [color=#C00000]THROW[/color]
ENUMS c [color=#00F000]2[/color] <> [color=#C00000]THROW[/color] ENUMS b [color=#00F000]1[/color] <> [color=#C00000]THROW[/color] ENUMS e [color=#00F000]4[/color] <> [color=#C00000]THROW[/color]
[color=#FF8000]ENUM: DIGITS[/color]
zero
one
two
three
four
five
six
seven
eight
nine
[color=#FF8000];ENUM[/color]
DIGITS four [color=#00F000]4[/color] <> [color=#C00000]THROW[/color]
}test
[/b][/pre]