aboutsummaryrefslogtreecommitdiff
path: root/dzref
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-02-16 16:13:57 -0500
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-02-16 16:13:57 -0500
commit1a83b6105b0d808b0b20f657b812c564c16bb5ec (patch)
tree6330887e26031c1c48c73cb915e103f00898be36 /dzref
parentcf142346760cb30c781e28d7178ad88772e3b5a7 (diff)
Merge primitive/replacement processing code for dzref and pr.bqn
Diffstat (limited to 'dzref')
-rwxr-xr-xdzref40
1 files changed, 7 insertions, 33 deletions
diff --git a/dzref b/dzref
index 24b526b2..c2d516f6 100755
--- a/dzref
+++ b/dzref
@@ -79,48 +79,22 @@ _withRef ← ˙
""
"⚇"
- nc ← ≠¨chrs
- chr ← ∾chrs
- itr ← 0⥊˜≠chr
-
- init ← " "⊸∾¨(/⟜"_"¨nc/0‿1‿1)∾¨(nc/"FMD")∾¨(nc+´⊸↑⥊"AB"∾⌜•a)
- post ← ∾⟜" "¨/⟜"_"¨nc/0‿0‿1
- names ← init∾¨'0'∾¨post
-
- Inc ← {
- i←⊑chr⊐𝕩
- n←0 ⋄ itr↩{n↩1+𝕩}⌾(i⊑⊢)itr
- names↩((i⊑init)∾('0'+n)∾i⊑post)⌾(i⊑⊢)names
- }
# built-in assumptions
- (Raw (chr⊸⊐⌾<⊑names˙)∾" ← "∾⥊)¨ "↕⊐"
- chr∾↩"⍎" ⋄ names∾↩⟨"⍎_withRef "⟩
-
-
- # checks if line is a builtin redefinition
- E_isdef ← (3≤≠)◶⟨0,∧´⟨chr," ","←↩"⟩∊˜¨3⊸↑⟩
-
- # removes comments and replaces built-ins with names
- E_proc ← {
- l←≠chr
- q←≠`𝕩∊"""'" ⋄ f←(𝕩=lf)≥○(↕∘≠⊸(⌈`×))q<𝕩='#'
- ∾ (((l×f/q)+chr⊸⊐) (≥⟜l)◶⟨⊑⟜names,⥊∘⊢⟩¨ ⊢) f/𝕩
+ GetRepls ← {
+ c‿n ← 𝕩 ⋄ k←"↕⊐"
+ ⟨c,(⥊¨k)⌾(((⊑¨c)⊐k)⊸⊏)n⟩ ∾⟜<¨ "⍎"‿"⍎_withRef "
}
- E_redef ← { # handles [fmd] [←↩]
- tail ← E_proc 3↓𝕩 # must use old def
- Inc ⊑𝕩
- (E_proc 1↑𝕩) ∾ "←" ∾ tail
- }
+ ⟨E_proc,E_nodef⟩ ← chrs‿GetRepls •Import "src/pp.bqn"
lf ← @+10
- pre ← E_isdef◶E_proc‿E_redef¨ lf((⊢-˜¬×+`)∘=⊔⊢)impl
+ pre ← E_proc¨ lf((⊢-˜¬×+`)∘=⊔⊢)impl
ExecFile←{
- src ← E_proc¨ •FLines 𝕩
+ src ← E_nodef¨ •FLines 𝕩
⟨⟨⟩,"",(∨`⌾⌽'/'=𝕩)/𝕩⟩ Raw ∾ ∾⟜lf¨ src
}
- _withRef ↩ {𝔽∘E_proc⊘(𝔽⟜E_proc)}
+ _withRef ↩ {𝔽∘E_nodef⊘(𝔽⟜E_nodef)}
X↩Raw _withRef
Raw ∾ ∾⟜lf¨ pre
≠◶(X˙)‿{ExecFile ⊑𝕩}‿{ExecFile ⊑𝕩 ⋄ X 1⊑𝕩} •args