Zuletzt aktiv 1 month ago

capitalex's Avatar capitalex hat die Gist bearbeitet 1 month ago. Zu Änderung gehen

3 files changed, 204 insertions

ewe.wul(Datei erstellt)

@@ -0,0 +1,105 @@
1 + @ ewe block do { @ewe blocking thread }
2 + @ ewe block end ; @ewe blocking thread { }
3 + @ ewe push $id { @ewe $id }
4 +
5 + @ewe @ewe.dup ; @ewe.stack $ {
6 + @ewe.stack ( $ $ )
7 + }
8 +
9 + @ewe @ewe.swap ; @ewe.stack ( $x $y ) {
10 + @ewe.stack ( $y $x )
11 + }
12 +
13 + @ewe @ewe.drop ; @ewe.stack ( $x ) { }
14 +
15 + @ewe @ewe.nip ; @ewe.stack ( $ $x ) {
16 + @ewe.stack $x
17 + }
18 +
19 + @ewe @ewe.call ; @ewe.stack $fn {
20 + @ewe def $fn ;
21 + }
22 +
23 + @ewe @ewe.if ; @ewe.stack ( $true $ true ) {
24 + @ewe def $true
25 + }
26 +
27 + @ewe @ewe.if ; @ewe.stack ( $ $false false ) {
28 + @ewe def $false
29 + }
30 +
31 + @ewe @ewe.lt ; @ewe.stack ~( $x $y ) {
32 + @ewe.stack $z ; @code [$z = tostring(tonumber($x) < tonumber($y))]
33 + }
34 +
35 + @ewe @ewe.eq ; @ewe.stack ~( $x $y ) {
36 + @ewe.stack $z ; @code [$z = tostring(tonumber($x) == tonumber($y))]
37 + }
38 +
39 + @ewe @ewe.gt ; @ewe.stack ~( $x $y ) {
40 + @ewe.stack $z ; @code [$z = tostring(tonumber($x) > tonumber($y))]
41 + }
42 +
43 + @ewe @ewe.and ; @ewe.stack ( true ture ) { @ewe.stack true }
44 + @ewe @ewe.and ; @ewe.stack ( $1 $2 ) { @ewe.stack false }
45 +
46 + @ewe @ewe.or ; @ewe.stack ( true $ ) { @ewe.stack true }
47 + @ewe @ewe.or ; @ewe.stack ( $ true ) { @ewe.stack true }
48 + @ewe @ewe.or ; @ewe.stack ( $ $ ) { @ewe.stack false }
49 +
50 + @ewe @ewe.not ; @ewe.stack true { @ewe.stack false }
51 + @ewe @ewe.not ; @ewe.stack false { @ewe.stack true }
52 +
53 + @ewe @ewe.sub ; @ewe.stack ~( $x $y ) {
54 + @ewe.stack $z ; @code [$z = tostring($x - $y)]
55 + }
56 +
57 + @ewe @ewe.add ; @ewe.stack ~( $x $y ) {
58 + @ewe.stack $z ; @code [$z = tostring($x + $y)]
59 + }
60 +
61 + @ewe @ewe.div ; @ewe.stack ~( $x $y ) {
62 + @ewe.stack $z ; @code [$z = tostring($x / $y)]
63 + }
64 +
65 + @ewe @ewe.mod ; @ewe.stack ~( $x $y ) {
66 + @ewe.stack $z ; @code [$z = tostring($x % $y)]
67 + }
68 +
69 + @ewe @ewe.mul ; @ewe.stack ~( $x $y ) {
70 + @ewe.stack $z ; @code [$z = tostring($x * $y)]
71 + }
72 +
73 + @ewe @ewe.pop ; @ewe.stack $name {
74 + @ewe pop $name
75 + }
76 +
77 + @ewe @ewe.push ; @ewe.stack $name {
78 + @ewe push $name
79 + }
80 +
81 + @ewe @ewe.peek ; @ewe.stack $name {
82 + @ewe peek $name
83 + }
84 +
85 + @ewe @ewe.block.main {
86 + @ @ewe.blocking
87 + }
88 +
89 + @ewe @ewe.unblock.main ; @ @ewe.blocking { }
90 +
91 + @ewe @ewe.unblock.main { }
92 +
93 +
94 + @ewe ( $x ) { @ewe.stack $x }
95 +
96 + @ ewe do , $op {
97 +
98 + }
99 +
100 + @ ewe doing , $op {
101 + @ ewe doing ; @ewe $op ;
102 + }
103 +
104 + @ ewe doing , ewe end ; @ewe blocking thread { }
105 +

lamb.wul(Datei erstellt)

@@ -0,0 +1,54 @@
1 + {
2 + @lamb.id 1 ;
3 + @code [
4 + local lamb = {}
5 + lamb.objects = {}
6 + lamb.groups = setmetatable({}, {__mode = "v"})
7 + ]
8 + }
9 +
10 + @ewe push @lamb.id ; @ewe.stack $n {
11 + @lamb.id $n
12 + }
13 +
14 + @ewe @lamb.new ; @lamb.id $id {
15 + @lamb.id $id ;
16 + @ ewe block do
17 + , allocate new lamb
18 + , increment id by 1
19 + , ewe push $id
20 + , ewe block end
21 + }
22 +
23 + @ewe @lamb.is ; @ewe.stack ( $class $obj ) {
24 + @ewe.stack ( $obj ) ;
25 + @code [lamb.objects[$obj].class = $class]
26 + }
27 +
28 + @ewe @lamb.set ; @ewe.stack ( $key $value $obj ) {
29 + @ewe.stack ( $obj ) ;
30 + @code [lamb.objects[$obj][$key] = $value]
31 + }
32 +
33 + @ewe @lamb.get ; @ewe.stack ( $key $obj ) {
34 + @ewe.stack ( $value ) ;
35 + @code [$value = lamb.objects[$obj][$key]]
36 + }
37 +
38 + @ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 4 ) {
39 + @ewe $obj does $1 $2 $3 $4
40 + }
41 +
42 + @ewe @lamb.invoke ; @ewe.stack ~( $obj $1 $2 $3 $4 $5 5 ) {
43 + @ewe $obj does $1 $2 $3 $4 $5
44 + }
45 +
46 + @ allocate new lamb ; @lamb.id $n {
47 + @lamb.id $n ;
48 + @code [lamb.objects[$n] = {}]
49 + }
50 +
51 + @ increment id by 1 ; @lamb.id $n {
52 + @ewe ( $n 1 @ewe.add [@lamb.id] @ewe.push )
53 + }
54 +

main.wul(Datei erstellt)

@@ -0,0 +1,45 @@
1 + {
2 + @ make player at 100 100
3 + , move player by 20 50
4 + , @lamb pprint
5 + }
6 +
7 + @ move player by $x $y {
8 + @ewe ( #player @ewe.peek move by $x $y 4 @lamb.invoke ) ;
9 + }
10 +
11 + @ewe $self does move by $x $y {
12 + @ewe (
13 + @ewe.block.main
14 + $self
15 + @ewe.dup x @lamb.get $x @ewe.add x @lamb.set
16 + @ewe.dup y @lamb.get $y @ewe.add y @lamb.set
17 + @ewe.drop
18 + @ewe.unblock.main
19 + )
20 + }
21 +
22 + @ make player at $x $y {
23 + @ewe (
24 + @ewe.block.main
25 + @lamb.new
26 + Player @lamb.is
27 + $x x @lamb.set
28 + $y y @lamb.set
29 + #player @ewe.push
30 + @ewe.unblock.main
31 + )
32 + }
33 +
34 +
35 + @ewe push #player ; @ewe.stack $id {
36 + #player $id
37 + }
38 +
39 + @ewe peek #player ; #player $p {
40 + #player $p ; @ewe ( $p )
41 + }
42 +
43 + @ @lamb pprint {
44 + @code [require "pprint" (lamb.objects)]
45 + }
Neuer Älter