functors: add MIXIN:, SINGLETON:

Slava Pestov 2009-07-22 02:06:24 -05:00
parent 668e56d5f3
commit 8d44994aae
1 changed files with 16 additions and 6 deletions

View File

@ -1,11 +1,11 @@
! Copyright (C) 2008, 2009 Slava Pestov. ! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays classes.mixin classes.parser USING: accessors arrays classes.mixin classes.parser classes.singleton
classes.tuple classes.tuple.parser combinators effects classes.tuple classes.tuple.parser combinators effects effects.parser
effects.parser fry generic generic.parser generic.standard fry generic generic.parser generic.standard interpolate
interpolate io.streams.string kernel lexer locals.parser io.streams.string kernel lexer locals.parser locals.rewrite.closures
locals.rewrite.closures locals.types make namespaces parser locals.types make namespaces parser quotations sequences vocabs.parser
quotations sequences vocabs.parser words words.symbol ; words words.symbol ;
IN: functors IN: functors
! This is a hack ! This is a hack
@ -71,6 +71,14 @@ SYNTAX: `TUPLE:
} case } case
\ define-tuple-class parsed ; \ define-tuple-class parsed ;
SYNTAX: `SINGLETON:
scan-param parsed
\ define-singleton-class parsed ;
SYNTAX: `MIXIN:
scan-param parsed
\ define-mixin-class parsed ;
SYNTAX: `M: SYNTAX: `M:
scan-param parsed scan-param parsed
scan-param parsed scan-param parsed
@ -134,6 +142,8 @@ DEFER: ;FUNCTOR delimiter
: functor-words ( -- assoc ) : functor-words ( -- assoc )
H{ H{
{ "TUPLE:" POSTPONE: `TUPLE: } { "TUPLE:" POSTPONE: `TUPLE: }
{ "SINGLETON:" POSTPONE: `SINGLETON: }
{ "MIXIN:" POSTPONE: `MIXIN: }
{ "M:" POSTPONE: `M: } { "M:" POSTPONE: `M: }
{ "C:" POSTPONE: `C: } { "C:" POSTPONE: `C: }
{ ":" POSTPONE: `: } { ":" POSTPONE: `: }