Последняя активность 1 month ago

capitalex's Avatar capitalex ревизий этого фрагмента 1 month ago. К ревизии

4 files changed, 267 insertions

ewe.process.wul(файл создан)

@@ -0,0 +1,138 @@
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 + }

lamb.process.wul(файл создан)

@@ -0,0 +1,70 @@
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(файл создан)

@@ -0,0 +1,53 @@
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 +

process.wul(файл создан)

@@ -0,0 +1,6 @@
1 + { @processor @ }
2 + @process switch to $who ; @processor $id {
3 + @processor ( $who $id )
4 + }
5 +
6 + @ done ; @processor @ { }
Новее Позже