blob: 31a4bc370ed55325b83c194cae10934b167e71d0 (
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
|
#!/usr/bin/env dbqn
impl β "
#β
# LAYER 4: Operators
ValidateRanksβ{
! 1β₯=π©
π©β©β₯π©
! (1βΈβ€β§β€β3)β π©
! β§Β΄ββΈ=βπ©
π©
}
_ranks β {β¨2β©ββ¨1,0β© ((β£-1+|)Λββ βΒ¨<ββ’) ValidateRanksβπ½}
_depthOp_β{
negβ0>nβπ¨πΎ_ranksπ© β Fβπ½
_dβ{
Rβ(π+neg)_d
π¨(2β₯(negβ§πβ₯0)β¨(0βπ)β₯ββ<ββ‘)βΆ(β¨RΒ¨βRβπ©Β¨ββ£β©ββ¨(π¨Rβ’)Β¨ββ’βFβ©)π©
}
π¨ n _d π©
}
β β _depthOp_
#β
# LAYER 5: Structural functions
Windowsβ{
Natβ(1=β’Type)βΆβ¨0,0βΈβ€β§ββΈ=β©
! 0=β’Type π©
! 1β₯=π¨
! π¨β€ββ β’π©
! β§Β΄NatΒ¨β₯π¨
sβ(β π¨)ββ’π©
! β§Β΄π¨β€1+s
π¨{(βΎβ(π¨β βΈββ’π©)ββ’β₯>)<Β¨βΈββπ©Β¨s(Β¬+ββββ’)β₯π¨}β(0<β π¨)π©
}
β β© β β Windows
#β
# LAYER 6: Everything else
# Searching
IndexOfβ(1<ββ=)βΆββΏ{
cβ1-Λ=π¨
! 0β€c
π¨ (0<β π¨)βΆβ¨0βcββ’,(+Λβ§`)β’βcβcβΏββ© π©
}
MarkFirstβ{
! 1β€=π©
uβ0βπ©
{(β u)>βu IndexOf π©}βΆ{uβ©uβΎπ©β1}βΏ0Λπ©
}
Findβ{
rβ=π¨
! rβ€=π©
π¨ β‘βr ((1+r-βΈββ’π©)ββ’π¨)βΈββr π©
}
β β© β β IndexOf
β β MarkFirst β (βΛ<β ββ’)
β· β ββΈ/ β Find
OccurrenceCount β βΛ(β’-β)βββ
ProgressiveIndexOf β {π¨ββ(βΛβOccurrenceCountπ¨βΈβ)π©}
β β OccurrenceCountβ ProgressiveIndexOf
"
raw β {β’Eval}
X β {F:β€4}
_withRef β Λ
{v:
chrsββ¨
"βββββ·"
""
"β"
β©
# built-in assumptions
GetRepls β {
cβΏn β π© β kβ"ββ"
β¨c,(β₯Β¨k)βΎ(((βΒ¨c)βk)βΈβ)nβ© βΎβ<Β¨ β¨"β’Eval","(β’Eval _withRef)"β©
}
β¨E_proc,E_nodefβ© β chrsβΏGetRepls β’Import "src/pp.bqn"
lf β @+10
pre β E_procΒ¨ lf((β’-ΛΒ¬Γ+`)β=ββ’)impl
ExecFileβ{
src β E_nodefΒ¨ β’FLines π©
((β’pathβΈβΎβΎβ(2βΎΛβ§`βΎβ½'/'β π©)βπ©)βΎβ¨π¨β©) Raw βΎ βΎβlfΒ¨ src
}
_withRef β© {π½βE_nodefβ(π½βE_nodef)}
Xβ©Raw _withRef
Raw βΎ βΎβlfΒ¨ pre
(1βΈβ ExecFile β) β’args
}
|