1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: combinators effects generic generic.standard
4 kernel sequences words lexer ;
5 IN: smalltalk.selectors
7 SYMBOLS: unary binary keyword ;
9 : selector-type ( selector -- type )
11 { [ dup [ "~!@%&*-+=|\\<>,?/" member? ] all? ] [ binary ] }
12 { [ CHAR: : over member? ] [ keyword ] }
16 : selector>effect ( selector -- effect )
20 { keyword [ [ CHAR: : = ] count ] }
21 } case "receiver" suffix { "result" } <effect> ;
23 : selector>generic ( selector -- generic )
24 [ "selector-" prepend "smalltalk.selectors" create dup ]
26 bi define-simple-generic ;
28 SYNTAX: SELECTOR: scan selector>generic drop ;