diff options
Diffstat (limited to 'test/dz_rt')
| -rwxr-xr-x | test/dz_rt | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/dz_rt b/test/dz_rt new file mode 100755 index 00000000..f83a787d --- /dev/null +++ b/test/dz_rt @@ -0,0 +1,60 @@ +#!/usr/bin/env dbqn + +# Compile and run the primitive implementations, and prim.bqn + +impl ← •LNS •path∾"../src/r.bqn" + +drun ← •EX •path∾"../dc.bqn" + +chrs←⟨ + "!+-×÷⋆√⌊⌈∧∨¬|=≠≤<>≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔" + "˙˜˘¨⌜⁼´˝`" + "∘⊸⟜○⌾⎉⚇⍟◶⊘" +⟩ +nc ← ≠¨chrs +chr ← ∾chrs +itr ← 0⥊˜≠chr + +init ← " "⊸∾¨(/⟜"_"¨nc/0‿1‿1)∾¨(nc/"FMD")∾¨(nc+´⊸↑⥊"ABC"∾⌜•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 +Mod ← {((⊑chr⊐𝕨)⊑names) ∾ " ← " ∾ 𝕩} + +pre ← ⟨ + "IsArray ← 0≠≡" + "Type ← ⟨⟩⥊0⊸⥊" + "Log ← ⋆⁼" + "GroupLen← ≠¨⊔" + "GroupOrd← ∾⊔∘⊢" + '!' Mod "{𝕩 ⋄ ≤1}⍟(1≢⊢)" +⟩∾Mod⟜⥊¨ "+-×÷⋆⌊=≤≢⥊⊑↕⌜`⊘" + + +# 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←≠`𝕩='"' ⋄ q∨↩≠`q<𝕩=''' ⋄ f←¬∨`q<𝕩='#' + ∾ (((l×f/q)+chr⊸⊐) (≥⟜l)◶⟨⊑⟜names,⥊∘⊢⟩¨ ⊢) f/𝕩 +} + +E_redef ← { # handles [fmd] [←↩] + tail ← E_proc 3↓𝕩 # must use old def + Inc ⊑𝕩 + (E_proc 1↑𝕩) ∾ "←" ∾ tail +} + +pre ∾↩ E_isdef◶E_proc‿E_redef¨ impl +t ← (¬∘⊑':'∊⊢)¨⊸/ 3⊸↓⌾(3⊸⊑) •LNS •path∾"prim.bqn" +res ← DRun ∾ ∾⟜(@+10)¨ pre ∾ E_proc¨ t +• ← ("All "∾(⍕≠res)∾" passed!")⍟(0=≠) /res |
