factor/core/generic/parser/parser.factor

30 lines
890 B
Factor
Raw Normal View History

! Copyright (C) 2008, 2009 Slava Pestov.
2008-06-25 04:25:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: parser kernel words generic namespaces effects.parser ;
2008-06-25 04:25:08 -04:00
IN: generic.parser
ERROR: not-in-a-method-error ;
: CREATE-GENERIC ( -- word ) CREATE dup reset-word ;
: (GENERIC:) ( quot -- )
[ CREATE-GENERIC ] dip call complete-effect define-generic ; inline
2008-06-25 04:25:08 -04:00
: create-method-in ( class generic -- method )
create-method dup set-word dup save-location ;
2008-06-25 04:25:08 -04:00
: define-inline-method ( class generic quot -- )
[ create-method-in ] dip [ define ] [ drop make-inline ] 2bi ;
2008-06-25 04:25:08 -04:00
: CREATE-METHOD ( -- method )
scan-word bootstrap-word scan-word create-method-in ;
SYMBOL: current-method
: with-method-definition ( method quot -- )
over current-method set call current-method off ; inline
2008-06-25 04:25:08 -04:00
2009-03-16 07:17:18 -04:00
: (M:) ( -- method def )
2008-06-25 04:25:08 -04:00
CREATE-METHOD [ parse-definition ] with-method-definition ;