effect-variable -> row-variable
parent
977f8e1d2c
commit
8b1b7b20d5
|
@ -38,7 +38,7 @@ IN: effects.tests
|
||||||
[ { "e" } ] [ (( ..a b c -- ..d e )) out>> ] unit-test
|
[ { "e" } ] [ (( ..a b c -- ..d e )) out>> ] unit-test
|
||||||
|
|
||||||
[ "(( a ..b c -- d ))" eval( -- effect ) ]
|
[ "(( a ..b c -- d ))" eval( -- effect ) ]
|
||||||
[ error>> invalid-effect-variable? ] must-fail-with
|
[ error>> invalid-row-variable? ] must-fail-with
|
||||||
|
|
||||||
[ "(( ..a: integer b c -- d ))" eval( -- effect ) ]
|
[ "(( ..a: integer b c -- d ))" eval( -- effect ) ]
|
||||||
[ error>> effect-variable-can't-have-type? ] must-fail-with
|
[ error>> row-variable-can't-have-type? ] must-fail-with
|
||||||
|
|
|
@ -7,8 +7,8 @@ IN: effects.parser
|
||||||
DEFER: parse-effect
|
DEFER: parse-effect
|
||||||
|
|
||||||
ERROR: bad-effect ;
|
ERROR: bad-effect ;
|
||||||
ERROR: invalid-effect-variable ;
|
ERROR: invalid-row-variable ;
|
||||||
ERROR: effect-variable-can't-have-type ;
|
ERROR: row-variable-can't-have-type ;
|
||||||
ERROR: stack-effect-omits-dashes ;
|
ERROR: stack-effect-omits-dashes ;
|
||||||
|
|
||||||
SYMBOL: effect-var
|
SYMBOL: effect-var
|
||||||
|
@ -17,12 +17,12 @@ SYMBOL: effect-var
|
||||||
: end-token? ( end token -- token ? ) [ nip ] [ = ] 2bi ; inline
|
: end-token? ( end token -- token ? ) [ nip ] [ = ] 2bi ; inline
|
||||||
: effect-opener? ( token -- token ? ) dup { f "(" "((" "--" } member? ; inline
|
: effect-opener? ( token -- token ? ) dup { f "(" "((" "--" } member? ; inline
|
||||||
: effect-closer? ( token -- token ? ) dup { ")" "))" } member? ; inline
|
: effect-closer? ( token -- token ? ) dup { ")" "))" } member? ; inline
|
||||||
: effect-variable? ( token -- token' ? ) ".." ?head ; inline
|
: row-variable? ( token -- token' ? ) ".." ?head ; inline
|
||||||
|
|
||||||
: parse-effect-var ( first? var name -- var )
|
: parse-effect-var ( first? var name -- var )
|
||||||
nip
|
nip
|
||||||
[ ":" ?tail [ effect-variable-can't-have-type ] when ] curry
|
[ ":" ?tail [ row-variable-can't-have-type ] when ] curry
|
||||||
[ invalid-effect-variable ] if ;
|
[ invalid-row-variable ] if ;
|
||||||
|
|
||||||
: parse-effect-value ( token -- value )
|
: parse-effect-value ( token -- value )
|
||||||
":" ?tail [
|
":" ?tail [
|
||||||
|
@ -39,7 +39,7 @@ PRIVATE>
|
||||||
{ [ end-token? ] [ drop nip f ] }
|
{ [ end-token? ] [ drop nip f ] }
|
||||||
{ [ effect-opener? ] [ bad-effect ] }
|
{ [ effect-opener? ] [ bad-effect ] }
|
||||||
{ [ effect-closer? ] [ stack-effect-omits-dashes ] }
|
{ [ effect-closer? ] [ stack-effect-omits-dashes ] }
|
||||||
{ [ effect-variable? ] [ parse-effect-var t ] }
|
{ [ row-variable? ] [ parse-effect-var t ] }
|
||||||
[ [ drop ] 2dip parse-effect-value , t ]
|
[ [ drop ] 2dip parse-effect-value , t ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue