Oops
parent
78029f5464
commit
74fb0ed298
|
@ -1,74 +0,0 @@
|
||||||
USING: kernel words math inference.dataflow sequences
|
|
||||||
optimizer.def-use combinators.private namespaces arrays
|
|
||||||
math.parser assocs prettyprint io strings inference hashtables ;
|
|
||||||
IN: flow-chart
|
|
||||||
|
|
||||||
GENERIC: flow-chart* ( n word -- value nodes )
|
|
||||||
|
|
||||||
M: word flow-chart*
|
|
||||||
2drop f f ;
|
|
||||||
|
|
||||||
M: compound flow-chart*
|
|
||||||
word-def swap 1+ [ drop <computed> ] map
|
|
||||||
[ dataflow-with compute-def-use ] keep
|
|
||||||
first dup used-by prune [ t eq? not ] subset ;
|
|
||||||
|
|
||||||
GENERIC: node-word ( node -- word )
|
|
||||||
|
|
||||||
M: #call node-word node-param ;
|
|
||||||
|
|
||||||
M: #if node-word drop \ if ;
|
|
||||||
|
|
||||||
M: #dispatch node-word drop \ dispatch ;
|
|
||||||
|
|
||||||
DEFER: flow-chart
|
|
||||||
|
|
||||||
: flow-chart-node ( value node -- )
|
|
||||||
[ node-in-d <reversed> index ] keep
|
|
||||||
node-word flow-chart , ;
|
|
||||||
|
|
||||||
SYMBOL: pruned
|
|
||||||
|
|
||||||
SYMBOL: nesting
|
|
||||||
|
|
||||||
SYMBOL: max-nesting
|
|
||||||
|
|
||||||
2 max-nesting set
|
|
||||||
|
|
||||||
: flow-chart ( n word -- seq )
|
|
||||||
[
|
|
||||||
2dup 2array ,
|
|
||||||
nesting dup inc get max-nesting get > [
|
|
||||||
2drop pruned ,
|
|
||||||
] [
|
|
||||||
flow-chart* dup length 5 > [
|
|
||||||
2drop pruned ,
|
|
||||||
] [
|
|
||||||
[ flow-chart-node ] curry* each
|
|
||||||
] if
|
|
||||||
] if
|
|
||||||
] { } make ;
|
|
||||||
|
|
||||||
: th ( n -- )
|
|
||||||
dup number>string write
|
|
||||||
100 mod dup 20 > [ 10 mod ] when
|
|
||||||
H{ { 1 "st" } { 2 "nd" } { 3 "rd" } } at "th" or write ;
|
|
||||||
|
|
||||||
: chart-heading. ( pair -- )
|
|
||||||
first2 >r 1+ th " argument to " write r> . ;
|
|
||||||
|
|
||||||
GENERIC# show-chart 1 ( seq n -- )
|
|
||||||
|
|
||||||
: indent CHAR: \s <string> write ;
|
|
||||||
|
|
||||||
M: sequence show-chart
|
|
||||||
dup indent
|
|
||||||
>r unclip chart-heading. r>
|
|
||||||
2 + [ show-chart ] curry each ;
|
|
||||||
|
|
||||||
M: word show-chart
|
|
||||||
dup indent
|
|
||||||
"... pruned" print ;
|
|
||||||
|
|
||||||
: flow-chart. ( n word -- )
|
|
||||||
flow-chart 2 show-chart ;
|
|
Loading…
Reference in New Issue