Add a parsing word to output slots to the stack instead of to an array
parent
b059ade5ed
commit
3faa1a57d3
|
@ -3,6 +3,16 @@
|
||||||
USING: help.markup help.syntax ;
|
USING: help.markup help.syntax ;
|
||||||
IN: slots.syntax
|
IN: slots.syntax
|
||||||
|
|
||||||
|
HELP: slots[
|
||||||
|
{ $description "Outputs several slot values to the stack." }
|
||||||
|
{ $example "USING: kernel prettyprint slots.syntax ;"
|
||||||
|
"IN: slots.syntax.example"
|
||||||
|
"TUPLE: rectangle width height ;"
|
||||||
|
"T{ rectangle { width 3 } { height 5 } } slots[ width height ] [ . ] bi@"
|
||||||
|
"""3
|
||||||
|
5"""
|
||||||
|
} ;
|
||||||
|
|
||||||
HELP: slots{
|
HELP: slots{
|
||||||
{ $description "Outputs an array of slot values from a tuple." }
|
{ $description "Outputs an array of slot values from a tuple." }
|
||||||
{ $example "USING: prettyprint slots.syntax ;"
|
{ $example "USING: prettyprint slots.syntax ;"
|
||||||
|
@ -14,6 +24,8 @@ HELP: slots{
|
||||||
|
|
||||||
ARTICLE: "slots.syntax" "Slots syntax sugar"
|
ARTICLE: "slots.syntax" "Slots syntax sugar"
|
||||||
"The " { $vocab-link "slots.syntax" } " vocabulary provides an alternative syntax for taking a sequence of slots from a tuple." $nl
|
"The " { $vocab-link "slots.syntax" } " vocabulary provides an alternative syntax for taking a sequence of slots from a tuple." $nl
|
||||||
|
"Syntax sugar for cleaving slots to the stack:"
|
||||||
|
{ $subsections POSTPONE: slots[ }
|
||||||
"Syntax sugar for cleaving slots to an array:"
|
"Syntax sugar for cleaving slots to an array:"
|
||||||
{ $subsections POSTPONE: slots{ } ;
|
{ $subsections POSTPONE: slots{ } ;
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,10 @@ IN: slots.syntax.tests
|
||||||
|
|
||||||
TUPLE: slot-test a b c ;
|
TUPLE: slot-test a b c ;
|
||||||
|
|
||||||
|
[ 1 2 3 ] [ T{ slot-test f 1 2 3 } slots[ a b c ] ] unit-test
|
||||||
|
[ 3 ] [ T{ slot-test f 1 2 3 } slots[ c ] ] unit-test
|
||||||
|
[ ] [ T{ slot-test f 1 2 3 } slots[ ] ] unit-test
|
||||||
|
|
||||||
[ { 1 2 3 } ] [ T{ slot-test f 1 2 3 } slots{ a b c } ] unit-test
|
[ { 1 2 3 } ] [ T{ slot-test f 1 2 3 } slots{ a b c } ] unit-test
|
||||||
[ { 3 } ] [ T{ slot-test f 1 2 3 } slots{ c } ] unit-test
|
[ { 3 } ] [ T{ slot-test f 1 2 3 } slots{ c } ] unit-test
|
||||||
[ { } ] [ T{ slot-test f 1 2 3 } slots{ } ] unit-test
|
[ { } ] [ T{ slot-test f 1 2 3 } slots{ } ] unit-test
|
||||||
|
|
|
@ -4,6 +4,10 @@ USING: combinators combinators.smart fry lexer quotations
|
||||||
sequences slots ;
|
sequences slots ;
|
||||||
IN: slots.syntax
|
IN: slots.syntax
|
||||||
|
|
||||||
|
SYNTAX: slots[
|
||||||
|
"]" [ reader-word 1quotation ] map-tokens
|
||||||
|
'[ _ cleave ] append! ;
|
||||||
|
|
||||||
SYNTAX: slots{
|
SYNTAX: slots{
|
||||||
"}" [ reader-word 1quotation ] map-tokens
|
"}" [ reader-word 1quotation ] map-tokens
|
||||||
'[ [ _ cleave ] output>array ] append! ;
|
'[ [ _ cleave ] output>array ] append! ;
|
||||||
|
|
Loading…
Reference in New Issue