ewe.process.wul
· 3.0 KiB · Text
Исходник
Playground
@processor @ewe ; @ewe @ewe.done { }
@processor @ewe ;
@ewe @ewe.become ; @ewe.stack $processor {
@processor @ewe ;
@processor switch to $processor ;
}
@processor @ewe ;
@ewe @ewe.dup ; @ewe.stack $ {
@processor @ewe ;
@ewe.stack ( $ $ ) ;
}
@processor @ewe ;
@ewe @ewe.swap ; @ewe.stack ( $x $y ) {
@processor @ewe ;
@ewe.stack ( $y $x ) ;
}
@processor @ewe ;
@ewe @ewe.drop ; @ewe.stack ( $x ) {
@processor @ewe ;
}
@processor @ewe ;
@ewe @ewe.nip ; @ewe.stack ( $ $x ) {
@processor @ewe ;
@ewe.stack $x ;
}
@processor @ewe ;
@ewe @ewe.call ; @ewe.stack $fn {
@processor @ewe ;
@ewe def $fn ;
}
@processor @ewe ;
@ewe @ewe.if ; @ewe.stack ( $true $ true ) {
@processor @ewe ;
@ewe def $true ;
}
@processor @ewe ;
@ewe @ewe.if ; @ewe.stack ( $ $false false ) {
@processor @ewe ;
@ewe def $false ;
}
@processor @ewe ;
@ewe @ewe.lt ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring(tonumber($x) < tonumber($y))] ;
}
@processor @ewe ;
@ewe @ewe.eq ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring(tonumber($x) == tonumber($y))] ;
}
@processor @ewe ;
@ewe @ewe.gt ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring(tonumber($x) > tonumber($y))] ;
}
@processor @ewe ; @ewe @ewe.and ; @ewe.stack ( true ture ) {
@processor @ewe ;
@ewe.stack true ;
}
@processor @ewe ; @ewe @ewe.and ; @ewe.stack ( $1 $2 ) { @ewe.stack false ; }
@processor @ewe ; @ewe @ewe.or ; @ewe.stack ( true $ ) { @ewe.stack true ; }
@processor @ewe ; @ewe @ewe.or ; @ewe.stack ( $ true ) { @ewe.stack true ; }
@processor @ewe ; @ewe @ewe.or ; @ewe.stack ( $ $ ) { @ewe.stack false ; }
@processor @ewe ; @ewe @ewe.not ; @ewe.stack true { @ewe.stack false ; }
@processor @ewe ; @ewe @ewe.not ; @ewe.stack false { @ewe.stack true ; }
@processor @ewe ;
@ewe @ewe.sub ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring($x - $y)] ;
}
@processor @ewe ;
@ewe @ewe.add ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring($x + $y)] ;
}
@processor @ewe ;
@ewe @ewe.div ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring($x / $y)] ;
}
@processor @ewe ;
@ewe @ewe.mod ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring($x % $y)] ;
}
@processor @ewe ;
@ewe @ewe.mul ; @ewe.stack ~( $x $y ) {
@processor @ewe ;
@ewe.stack $z ; @code [$z = tostring($x * $y)] ;
}
@processor @ewe ;
@ewe @ewe.pop ; @ewe.stack $name {
@processor @ewe ;
@ewe pop $name ;
}
@processor @ewe ;
@ewe @ewe.push ; @ewe.stack $name {
@processor @ewe ;
@ewe push $name ;
}
@processor @ewe ;
@ewe @ewe.peek ; @ewe.stack $name {
@processor @ewe ;
@ewe peek $name ;
}
@processor @ewe ;
@ewe ( $x ) {
@processor @ewe ;
@ewe.stack $x ;
}
@processor @ ; @ ewe push $id {
@processor @ ;
@ewe $id ;
}
| 1 | @processor @ewe ; @ewe @ewe.done { } |
| 2 | |
| 3 | @processor @ewe ; |
| 4 | @ewe @ewe.become ; @ewe.stack $processor { |
| 5 | @processor @ewe ; |
| 6 | @processor switch to $processor ; |
| 7 | } |
| 8 | |
| 9 | @processor @ewe ; |
| 10 | @ewe @ewe.dup ; @ewe.stack $ { |
| 11 | @processor @ewe ; |
| 12 | @ewe.stack ( $ $ ) ; |
| 13 | } |
| 14 | |
| 15 | @processor @ewe ; |
| 16 | @ewe @ewe.swap ; @ewe.stack ( $x $y ) { |
| 17 | @processor @ewe ; |
| 18 | @ewe.stack ( $y $x ) ; |
| 19 | } |
| 20 | |
| 21 | @processor @ewe ; |
| 22 | @ewe @ewe.drop ; @ewe.stack ( $x ) { |
| 23 | @processor @ewe ; |
| 24 | } |
| 25 | |
| 26 | @processor @ewe ; |
| 27 | @ewe @ewe.nip ; @ewe.stack ( $ $x ) { |
| 28 | @processor @ewe ; |
| 29 | @ewe.stack $x ; |
| 30 | } |
| 31 | |
| 32 | @processor @ewe ; |
| 33 | @ewe @ewe.call ; @ewe.stack $fn { |
| 34 | @processor @ewe ; |
| 35 | @ewe def $fn ; |
| 36 | } |
| 37 | |
| 38 | @processor @ewe ; |
| 39 | @ewe @ewe.if ; @ewe.stack ( $true $ true ) { |
| 40 | @processor @ewe ; |
| 41 | @ewe def $true ; |
| 42 | } |
| 43 | |
| 44 | @processor @ewe ; |
| 45 | @ewe @ewe.if ; @ewe.stack ( $ $false false ) { |
| 46 | @processor @ewe ; |
| 47 | @ewe def $false ; |
| 48 | } |
| 49 | |
| 50 | @processor @ewe ; |
| 51 | @ewe @ewe.lt ; @ewe.stack ~( $x $y ) { |
| 52 | @processor @ewe ; |
| 53 | @ewe.stack $z ; @code [$z = tostring(tonumber($x) < tonumber($y))] ; |
| 54 | } |
| 55 | |
| 56 | @processor @ewe ; |
| 57 | @ewe @ewe.eq ; @ewe.stack ~( $x $y ) { |
| 58 | @processor @ewe ; |
| 59 | @ewe.stack $z ; @code [$z = tostring(tonumber($x) == tonumber($y))] ; |
| 60 | } |
| 61 | |
| 62 | @processor @ewe ; |
| 63 | @ewe @ewe.gt ; @ewe.stack ~( $x $y ) { |
| 64 | @processor @ewe ; |
| 65 | @ewe.stack $z ; @code [$z = tostring(tonumber($x) > tonumber($y))] ; |
| 66 | } |
| 67 | |
| 68 | @processor @ewe ; @ewe @ewe.and ; @ewe.stack ( true ture ) { |
| 69 | @processor @ewe ; |
| 70 | @ewe.stack true ; |
| 71 | } |
| 72 | @processor @ewe ; @ewe @ewe.and ; @ewe.stack ( $1 $2 ) { @ewe.stack false ; } |
| 73 | |
| 74 | @processor @ewe ; @ewe @ewe.or ; @ewe.stack ( true $ ) { @ewe.stack true ; } |
| 75 | @processor @ewe ; @ewe @ewe.or ; @ewe.stack ( $ true ) { @ewe.stack true ; } |
| 76 | @processor @ewe ; @ewe @ewe.or ; @ewe.stack ( $ $ ) { @ewe.stack false ; } |
| 77 | |
| 78 | @processor @ewe ; @ewe @ewe.not ; @ewe.stack true { @ewe.stack false ; } |
| 79 | @processor @ewe ; @ewe @ewe.not ; @ewe.stack false { @ewe.stack true ; } |
| 80 | |
| 81 | @processor @ewe ; |
| 82 | @ewe @ewe.sub ; @ewe.stack ~( $x $y ) { |
| 83 | @processor @ewe ; |
| 84 | @ewe.stack $z ; @code [$z = tostring($x - $y)] ; |
| 85 | } |
| 86 | |
| 87 | @processor @ewe ; |
| 88 | @ewe @ewe.add ; @ewe.stack ~( $x $y ) { |
| 89 | @processor @ewe ; |
| 90 | @ewe.stack $z ; @code [$z = tostring($x + $y)] ; |
| 91 | } |
| 92 | |
| 93 | @processor @ewe ; |
| 94 | @ewe @ewe.div ; @ewe.stack ~( $x $y ) { |
| 95 | @processor @ewe ; |
| 96 | @ewe.stack $z ; @code [$z = tostring($x / $y)] ; |
| 97 | } |
| 98 | |
| 99 | @processor @ewe ; |
| 100 | @ewe @ewe.mod ; @ewe.stack ~( $x $y ) { |
| 101 | @processor @ewe ; |
| 102 | @ewe.stack $z ; @code [$z = tostring($x % $y)] ; |
| 103 | } |
| 104 | |
| 105 | @processor @ewe ; |
| 106 | @ewe @ewe.mul ; @ewe.stack ~( $x $y ) { |
| 107 | @processor @ewe ; |
| 108 | @ewe.stack $z ; @code [$z = tostring($x * $y)] ; |
| 109 | } |
| 110 | |
| 111 | @processor @ewe ; |
| 112 | @ewe @ewe.pop ; @ewe.stack $name { |
| 113 | @processor @ewe ; |
| 114 | @ewe pop $name ; |
| 115 | } |
| 116 | |
| 117 | @processor @ewe ; |
| 118 | @ewe @ewe.push ; @ewe.stack $name { |
| 119 | @processor @ewe ; |
| 120 | @ewe push $name ; |
| 121 | } |
| 122 | |
| 123 | @processor @ewe ; |
| 124 | @ewe @ewe.peek ; @ewe.stack $name { |
| 125 | @processor @ewe ; |
| 126 | @ewe peek $name ; |
| 127 | } |
| 128 | |
| 129 | @processor @ewe ; |
| 130 | @ewe ( $x ) { |
| 131 | @processor @ewe ; |
| 132 | @ewe.stack $x ; |
| 133 | } |
| 134 | |
| 135 | @processor @ ; @ ewe push $id { |
| 136 | @processor @ ; |
| 137 | @ewe $id ; |
| 138 | } |
| 139 |
lamb.process.wul
· 1.5 KiB · Text
Исходник
Playground
{
@lamb.id 1 ;
@code [
local lamb = {}
lamb.objects = {}
lamb.groups = setmetatable({}, {__mode = "v"})
] ;
}
@processor @ewe ;
@ewe push @lamb.id ; @ewe.stack $n {
@processor @ewe ;
@lamb.id $n ;
}
@processor @ewe ;
@ewe @lamb.new ; @lamb.id $id {
@processor @ewe ; @process switch to @ ;
@lamb.id $id ;
@ allocate new lamb
, increment id by 1
, ewe push $id
, done ;
}
@processor @ewe ;
@ewe @lamb.is ; @ewe.stack ( $class $obj ) {
@processor @ewe ;
@ewe.stack ( $obj ) ;
@code [lamb.objects[$obj].class = $class] ;
}
@processor @ewe ;
@ewe @lamb.set ; @ewe.stack ( $key $value $obj ) {
@processor @ewe ;
@ewe.stack ( $obj ) ;
@code [lamb.objects[$obj][$key] = $value] ;
}
@processor @ewe ;
@ewe @lamb.get ; @ewe.stack ( $key $obj ) {
@processor @ewe ;
@ewe.stack ( $value ) ;
@code [$value = lamb.objects[$obj][$key]] ;
}
@processor @ewe ;
@ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 4 ) {
@processor @ewe ;
@ewe $obj does $1 $2 $3 $4 ;
}
@processor @ewe ;
@ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 $5 5 ) {
@processor @ewe ;
@ewe $obj does $1 $2 $3 $4 $5 ;
}
@processor @ ;
@ allocate new lamb ; @lamb.id $n {
@processor @ ;
@lamb.id $n ;
@code [lamb.objects[$n] = {}] ;
}
@processor @ ;
@ increment id by 1 ; @lamb.id $n {
@processor @ ; @process switch to @ewe ;
@ewe ( $n 1 @ewe.add [@lamb.id] @ewe.push @ewe.done ) ;
}
| 1 | { |
| 2 | @lamb.id 1 ; |
| 3 | @code [ |
| 4 | local lamb = {} |
| 5 | lamb.objects = {} |
| 6 | lamb.groups = setmetatable({}, {__mode = "v"}) |
| 7 | ] ; |
| 8 | } |
| 9 | |
| 10 | @processor @ewe ; |
| 11 | @ewe push @lamb.id ; @ewe.stack $n { |
| 12 | @processor @ewe ; |
| 13 | @lamb.id $n ; |
| 14 | } |
| 15 | |
| 16 | @processor @ewe ; |
| 17 | @ewe @lamb.new ; @lamb.id $id { |
| 18 | @processor @ewe ; @process switch to @ ; |
| 19 | @lamb.id $id ; |
| 20 | @ allocate new lamb |
| 21 | , increment id by 1 |
| 22 | , ewe push $id |
| 23 | , done ; |
| 24 | } |
| 25 | |
| 26 | @processor @ewe ; |
| 27 | @ewe @lamb.is ; @ewe.stack ( $class $obj ) { |
| 28 | @processor @ewe ; |
| 29 | @ewe.stack ( $obj ) ; |
| 30 | @code [lamb.objects[$obj].class = $class] ; |
| 31 | } |
| 32 | |
| 33 | @processor @ewe ; |
| 34 | @ewe @lamb.set ; @ewe.stack ( $key $value $obj ) { |
| 35 | @processor @ewe ; |
| 36 | @ewe.stack ( $obj ) ; |
| 37 | @code [lamb.objects[$obj][$key] = $value] ; |
| 38 | } |
| 39 | |
| 40 | @processor @ewe ; |
| 41 | @ewe @lamb.get ; @ewe.stack ( $key $obj ) { |
| 42 | @processor @ewe ; |
| 43 | @ewe.stack ( $value ) ; |
| 44 | @code [$value = lamb.objects[$obj][$key]] ; |
| 45 | } |
| 46 | |
| 47 | @processor @ewe ; |
| 48 | @ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 4 ) { |
| 49 | @processor @ewe ; |
| 50 | @ewe $obj does $1 $2 $3 $4 ; |
| 51 | } |
| 52 | |
| 53 | @processor @ewe ; |
| 54 | @ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 $5 5 ) { |
| 55 | @processor @ewe ; |
| 56 | @ewe $obj does $1 $2 $3 $4 $5 ; |
| 57 | } |
| 58 | |
| 59 | @processor @ ; |
| 60 | @ allocate new lamb ; @lamb.id $n { |
| 61 | @processor @ ; |
| 62 | @lamb.id $n ; |
| 63 | @code [lamb.objects[$n] = {}] ; |
| 64 | } |
| 65 | |
| 66 | @processor @ ; |
| 67 | @ increment id by 1 ; @lamb.id $n { |
| 68 | @processor @ ; @process switch to @ewe ; |
| 69 | @ewe ( $n 1 @ewe.add [@lamb.id] @ewe.push @ewe.done ) ; |
| 70 | } |
main.processor.wul
· 1.0 KiB · Text
Исходник
Playground
{
@ make player at 100 100
, move player by 20 50
, @lamb pprint
}
@processor @ ;
@ move player by $x $y {
@processor @ ; @process switch to @ewe ;
@ewe ( #player @ewe.peek move by $x $y 4 @lamb.invoke @ewe.done ) ;
}
@processor @ ;
@ make player at $x $y {
@processor @ ; @process switch to @ewe ;
@ewe (
@lamb.new
Player @lamb.is
$x x @lamb.set
$y y @lamb.set
#player @ewe.push @ewe.done
)
}
@processor @ ;
@ @lamb pprint {
@processor @ ;
@code [require "pprint" (lamb.objects)]
}
@processor @ewe ;
@ewe $self does move by $x $y {
@processor @ewe ;
@ewe (
$self
@ewe.dup x @lamb.get $x @ewe.add x @lamb.set
@ewe.dup y @lamb.get $y @ewe.add y @lamb.set
@ewe.drop
) ;
}
@processor @ewe ;
@ewe push #player ; @ewe.stack $id {
@processor @ewe ;
#player $id ;
}
@processor @ewe ;
@ewe peek #player ; #player $p {
@processor @ewe ;
#player $p ; @ewe ( $p )
}
| 1 | { |
| 2 | @ make player at 100 100 |
| 3 | , move player by 20 50 |
| 4 | , @lamb pprint |
| 5 | } |
| 6 | |
| 7 | @processor @ ; |
| 8 | @ move player by $x $y { |
| 9 | @processor @ ; @process switch to @ewe ; |
| 10 | @ewe ( #player @ewe.peek move by $x $y 4 @lamb.invoke @ewe.done ) ; |
| 11 | } |
| 12 | |
| 13 | @processor @ ; |
| 14 | @ make player at $x $y { |
| 15 | @processor @ ; @process switch to @ewe ; |
| 16 | @ewe ( |
| 17 | @lamb.new |
| 18 | Player @lamb.is |
| 19 | $x x @lamb.set |
| 20 | $y y @lamb.set |
| 21 | #player @ewe.push @ewe.done |
| 22 | ) |
| 23 | } |
| 24 | |
| 25 | @processor @ ; |
| 26 | @ @lamb pprint { |
| 27 | @processor @ ; |
| 28 | @code [require "pprint" (lamb.objects)] |
| 29 | } |
| 30 | |
| 31 | @processor @ewe ; |
| 32 | @ewe $self does move by $x $y { |
| 33 | @processor @ewe ; |
| 34 | @ewe ( |
| 35 | $self |
| 36 | @ewe.dup x @lamb.get $x @ewe.add x @lamb.set |
| 37 | @ewe.dup y @lamb.get $y @ewe.add y @lamb.set |
| 38 | @ewe.drop |
| 39 | ) ; |
| 40 | } |
| 41 | |
| 42 | @processor @ewe ; |
| 43 | @ewe push #player ; @ewe.stack $id { |
| 44 | @processor @ewe ; |
| 45 | #player $id ; |
| 46 | } |
| 47 | |
| 48 | @processor @ewe ; |
| 49 | @ewe peek #player ; #player $p { |
| 50 | @processor @ewe ; |
| 51 | #player $p ; @ewe ( $p ) |
| 52 | } |
| 53 | |
| 54 |
process.wul
· 116 B · Text
Исходник
Playground
{ @processor @ }
@process switch to $who ; @processor $id {
@processor ( $who $id )
}
@ done ; @processor @ { }
| 1 | { @processor @ } |
| 2 | @process switch to $who ; @processor $id { |
| 3 | @processor ( $who $id ) |
| 4 | } |
| 5 | |
| 6 | @ done ; @processor @ { } |