language: fix functors, more syntax words.
parent
cb92c8c448
commit
b77e568759
|
@ -47,7 +47,7 @@ ERROR: unknown-constructor-parameters class effect unknown ;
|
|||
scan-constructor scan-effect ensure-constructor-parameters
|
||||
parse-definition ;
|
||||
|
||||
SYNTAX: CONSTRUCTOR:
|
||||
SYNTAX: \ CONSTRUCTOR:
|
||||
parse-constructor
|
||||
[ [ constructor-boa-quot ] dip compose ]
|
||||
[ drop ] 2bi define-declared ;
|
||||
|
@ -59,6 +59,6 @@ SYNTAX: CONSTRUCTOR:
|
|||
: scan-full-input-effect ( -- effect )
|
||||
"(" expect scan-rest-input-effect ;
|
||||
|
||||
SYNTAX: SLOT-CONSTRUCTOR:
|
||||
SYNTAX: \ SLOT-CONSTRUCTOR:
|
||||
scan-new-word [ name>> "(" append create-reset ] keep
|
||||
'[ scan-rest-input-effect in>> _ '[ _ _ slots>boa ] append! ] define-syntax ;
|
||||
|
|
|
@ -35,7 +35,7 @@ PRIVATE>
|
|||
[ [ [ dup ] 2dip [descriptive] ] keep define-declared ]
|
||||
3bi ;
|
||||
|
||||
SYNTAX: DESCRIPTIVE: (:) define-descriptive ;
|
||||
SYNTAX: \ DESCRIPTIVE: (:) define-descriptive ;
|
||||
|
||||
PREDICATE: descriptive < word
|
||||
"descriptive-definition" word-prop >boolean ;
|
||||
|
@ -45,7 +45,7 @@ M: descriptive definer drop \ DESCRIPTIVE: \ ; ;
|
|||
M: descriptive definition
|
||||
"descriptive-definition" word-prop ;
|
||||
|
||||
SYNTAX: DESCRIPTIVE:: (::) define-descriptive ;
|
||||
SYNTAX: \ DESCRIPTIVE:: (::) define-descriptive ;
|
||||
|
||||
INTERSECTION: descriptive-lambda descriptive lambda-word ;
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ in: eval
|
|||
: eval ( str effect -- )
|
||||
[ (eval) ] with-file-vocabs ; inline
|
||||
|
||||
SYNTAX: eval( \ eval parse-call-paren ;
|
||||
SYNTAX: \ eval( \ eval parse-call-paren ;
|
||||
|
||||
: (eval>string) ( str -- output )
|
||||
[
|
||||
|
|
|
@ -6,8 +6,8 @@ in: functors.backend
|
|||
defer: functor-words
|
||||
\ functor-words [ H{ } clone ] initialize
|
||||
|
||||
SYNTAX: FUNCTOR-SYNTAX:
|
||||
scan-word
|
||||
SYNTAX: \ FUNCTOR-SYNTAX:
|
||||
scan-escaped-word
|
||||
gensym [ parse-definition define-syntax ] keep
|
||||
swap name>> \ functor-words get-global set-at ;
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ M: object (fake-quotations>) , ;
|
|||
[ parse-definition* ] dip
|
||||
suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: TUPLE:
|
||||
FUNCTOR-SYNTAX: \ TUPLE:
|
||||
scan-param suffix!
|
||||
scan-token {
|
||||
{ ";" [ tuple suffix! f suffix! ] }
|
||||
|
@ -67,67 +67,67 @@ FUNCTOR-SYNTAX: TUPLE:
|
|||
FUNCTOR-SYNTAX: final
|
||||
[ last-word make-final ] append! ;
|
||||
|
||||
FUNCTOR-SYNTAX: SINGLETON:
|
||||
FUNCTOR-SYNTAX: \ SINGLETON:
|
||||
scan-param suffix!
|
||||
\ define-singleton-class suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: singleton:
|
||||
FUNCTOR-SYNTAX: \ singleton:
|
||||
scan-param suffix!
|
||||
\ define-singleton-class suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: MIXIN:
|
||||
FUNCTOR-SYNTAX: \ MIXIN:
|
||||
scan-param suffix!
|
||||
\ define-mixin-class suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: mixin:
|
||||
FUNCTOR-SYNTAX: \ mixin:
|
||||
scan-param suffix!
|
||||
\ define-mixin-class suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: M:
|
||||
FUNCTOR-SYNTAX: \ M:
|
||||
scan-param suffix!
|
||||
scan-param suffix!
|
||||
[ create-method-in dup \ method set ] append!
|
||||
parse-definition*
|
||||
\ define* suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: C:
|
||||
FUNCTOR-SYNTAX: \ C:
|
||||
scan-param suffix!
|
||||
scan-param suffix!
|
||||
scan-effect
|
||||
[ [ [ boa ] curry ] append! ] dip suffix!
|
||||
\ define-declared* suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: :
|
||||
FUNCTOR-SYNTAX: \ :
|
||||
scan-param suffix!
|
||||
parse-declared*
|
||||
\ define-declared* suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: SYMBOL:
|
||||
FUNCTOR-SYNTAX: \ SYMBOL:
|
||||
scan-param suffix!
|
||||
\ define-symbol suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: symbol:
|
||||
FUNCTOR-SYNTAX: \ symbol:
|
||||
scan-param suffix!
|
||||
\ define-symbol suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: SYNTAX:
|
||||
FUNCTOR-SYNTAX: \ SYNTAX:
|
||||
scan-param suffix!
|
||||
parse-definition*
|
||||
\ define-syntax suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: INSTANCE:
|
||||
FUNCTOR-SYNTAX: \ INSTANCE:
|
||||
scan-param suffix!
|
||||
scan-param suffix!
|
||||
";" expect
|
||||
\ add-mixin-instance suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: GENERIC:
|
||||
FUNCTOR-SYNTAX: \ GENERIC:
|
||||
scan-param suffix!
|
||||
scan-effect suffix!
|
||||
";" expect
|
||||
\ define-simple-generic* suffix! ;
|
||||
|
||||
FUNCTOR-SYNTAX: MACRO:
|
||||
FUNCTOR-SYNTAX: \ MACRO:
|
||||
scan-param suffix!
|
||||
parse-declared*
|
||||
\ define-macro suffix! ;
|
||||
|
@ -184,4 +184,4 @@ defer: ;FUNCTOR delimiter
|
|||
|
||||
PRIVATE>
|
||||
|
||||
SYNTAX: FUNCTOR: (FUNCTOR:) define-declared ;
|
||||
SYNTAX: \ FUNCTOR: (FUNCTOR:) define-declared ;
|
||||
|
|
|
@ -21,10 +21,10 @@ in: literals
|
|||
|
||||
PRIVATE>
|
||||
|
||||
SYNTAX: $ scan-word expand-literal >vector ;
|
||||
SYNTAX: $[ parse-quotation with-datastack >vector ;
|
||||
SYNTAX: ${ \ } [ expand-literals ] parse-literal ;
|
||||
SYNTAX: flags{
|
||||
SYNTAX: \ $ scan-word expand-literal >vector ;
|
||||
SYNTAX: \ $[ parse-quotation with-datastack >vector ;
|
||||
SYNTAX: \ ${ \ } [ expand-literals ] parse-literal ;
|
||||
SYNTAX: \ flags{
|
||||
\ } [
|
||||
expand-literals
|
||||
0 [ bitor ] reduce
|
||||
|
|
|
@ -17,7 +17,7 @@ symbol: _
|
|||
: define-match-vars ( seq -- )
|
||||
[ define-match-var ] each ;
|
||||
|
||||
SYNTAX: MATCH-VARS: ! vars ...
|
||||
SYNTAX: \ MATCH-VARS: ! vars ...
|
||||
";" [ define-match-var ] each-token ;
|
||||
|
||||
PREDICATE: match-var < word "match-var" word-prop ;
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
USING: kernel generic generic.parser words fry ;
|
||||
in: method-chains
|
||||
|
||||
SYNTAX: AFTER: (M:) dupd '[ [ _ (call-next-method) ] _ bi ] define ;
|
||||
SYNTAX: BEFORE: (M:) over '[ _ [ _ (call-next-method) ] bi ] define ;
|
||||
SYNTAX: \ AFTER: (M:) dupd '[ [ _ (call-next-method) ] _ bi ] define ;
|
||||
SYNTAX: \ BEFORE: (M:) over '[ _ [ _ (call-next-method) ] bi ] define ;
|
||||
|
|
|
@ -224,7 +224,7 @@ M: no-method error.
|
|||
] if ;
|
||||
|
||||
! Syntax
|
||||
SYNTAX: GENERIC: scan-new-word scan-effect ";" expect define-generic ;
|
||||
SYNTAX: \ GENERIC: scan-new-word scan-effect ";" expect define-generic ;
|
||||
|
||||
: parse-method ( -- quot classes generic )
|
||||
parse-definition [ 2 tail ] [ second ] [ first ] tri ;
|
||||
|
@ -237,10 +237,10 @@ SYNTAX: GENERIC: scan-new-word scan-effect ";" expect define-generic ;
|
|||
|
||||
: (METHOD:) ( -- method def ) scan-new-method parse-definition ;
|
||||
|
||||
SYNTAX: METHOD: (METHOD:) define ;
|
||||
SYNTAX: \ METHOD: (METHOD:) define ;
|
||||
|
||||
! For compatibility
|
||||
SYNTAX: M:
|
||||
SYNTAX: \ M:
|
||||
scan-word 1array scan-word create-method-in
|
||||
parse-definition
|
||||
define ;
|
||||
|
|
|
@ -32,7 +32,7 @@ ERROR: text-found-before-eol string ;
|
|||
(parse-here)
|
||||
] "" make but-last ;
|
||||
|
||||
SYNTAX: STRING:
|
||||
SYNTAX: \ STRING:
|
||||
scan-new-word
|
||||
parse-here 1quotation
|
||||
( -- string ) define-inline ;
|
||||
|
@ -84,7 +84,7 @@ PRIVATE>
|
|||
|
||||
SYNTAX: /* "*/" parse-multiline-string drop ;
|
||||
|
||||
SYNTAX: HEREDOC:
|
||||
SYNTAX: \ HEREDOC:
|
||||
lexer get {
|
||||
[ skip-blank ]
|
||||
[ rest-of-line ]
|
||||
|
|
|
@ -39,7 +39,7 @@ ERROR: no-pair-method a b generic ;
|
|||
: (PAIR-GENERIC:) ( -- )
|
||||
scan-new-generic scan-effect define-pair-generic ;
|
||||
|
||||
SYNTAX: PAIR-GENERIC: (PAIR-GENERIC:) ;
|
||||
SYNTAX: \ PAIR-GENERIC: (PAIR-GENERIC:) ;
|
||||
|
||||
: define-pair-method ( a b pair-generic definition -- )
|
||||
[ 2array ] 2dip swap
|
||||
|
@ -54,4 +54,4 @@ SYNTAX: PAIR-GENERIC: (PAIR-GENERIC:) ;
|
|||
?swap scan-word parse-definition
|
||||
] keep ?prefix-swap define-pair-method ;
|
||||
|
||||
SYNTAX: PAIR-M: (PAIR-M:) ;
|
||||
SYNTAX: \ PAIR-M: (PAIR-M:) ;
|
||||
|
|
|
@ -607,7 +607,7 @@ PRIVATE>
|
|||
|
||||
ERROR: parse-failed input word ;
|
||||
|
||||
SYNTAX: PEG:
|
||||
SYNTAX: \ PEG:
|
||||
[let
|
||||
(:) :> ( word def effect )
|
||||
[
|
||||
|
|
Loading…
Reference in New Issue