blob: 0fa0692a9ce995640a3cd5c819f22260912c33b1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
<
[ 0 11 range {
sys .asm .intToFloat
}' each ] =*:FLOAT
sys .out .|writeall =*out
"0123456789ABCDEF" ==:base16digits
{ _ 0 lt { neg "-" }' { "" }' ? * -01
[ -01 16 { _ 16 umod base16digits * -01 16 udiv }' rep -- ] reverse str .fromArray cat
}' /base16encode64 deffd
{ "<???>" out }" /unknown defvd
[
{ o txt .produce .i out }" # integer
{ "\"" o "\"" cat cat out }" # string
{ o { ==f 0 ==e "+" ==s 0 ==i
f 0 FLOAT lt { 0 FLOAT f sub =f "-" =s }' rep
{ f 1 FLOAT lt i 500 lt and }' { f 10 FLOAT mul =f e 1 sub =e i 1 add =i }' loop
{ f 10 FLOAT ge i 500 lt and }' { f 10 FLOAT div =f e 1 add =e i 1 add =i }' loop
i 500 eq {
s
f 1 FLOAT lt "0.0e0" "inf" ?
cat out
}' {
{
0 ==d
1 10 range { ==i f i FLOAT gt { i =d }' rep } each
f d sub =f
f 10 FLOAT mul =f
d base10digits *
} /extractDigit deffst
[
0 s *
extractDigit
0 "." *
10 |extractDigit rep
0 "e" *
e 0 lt {
0 e sub =e
0 "-" *
} rep
e 0 eq {
0 "0" *
} rep
[
{ e } {
e 10 mod base10digits *
e 10 div =e
} loop
] reverse _ len dearray
] str .fromArray out
}' ? *
} * }" # float
unknown
unknown # extension area
{ "{...: " o sys .asm .rawAddress base16encode64 cat "}" cat out }"
unknown
{ "[...: " o .sys .asm .rawAddress base16encode64 cat "]" cat out }" # array
unknown # function type
{ "<...: " o sys .asm .rawAddress base16encode64 cat ">" cat out }"
unknown # name table
unknown # stack
{ "<coroutine: " o sys .asm .rawAddress base16encode64 cat ">" cat out }"
unknown
unknown
unknown
{ "[" out }"
{ "{" out }"
{ "<end of stack>" out }"
unknown
] /dumpActions deffd
{ ==indent _ ==o
"" indent { " " cat }' rep out
sys .typed .type dumpActions *
" " out
} /dumpIndented deffd
# dump top stack element
{ 0 ==i "" ==x
{ x sys .typed .type 18 neq } {
i _' =x
{ 1 add } |=i
} loop
{ 1 sub } |=i
{ i 0 ge } {
i _' =x
{ 1 sub } |=i
x 0 dumpIndented
" " out
} loop
"\n" out
}
> -- /stackdump deffd
"Welcome to elymas.\n" sys .out .writeall
scope enincludeLine =*eval
1 ==running
{ 0 =running } =*quit
{ running } {
[ ">" quoted { "{" } rep " " ] |cat fold sys .out .writeall
65536 sys .in .read _ len { ==line
line "^(.*)\n$" regex {
eval
} {
"non-terminal input" dump
} ? *
} { --
0 =running
} ? *
"\n" sys .out .writeall
stackdump
} loop
# vim: syn=elymas
|