diff options
| -rwxr-xr-x | dc.bqn | 12 |
1 files changed, 5 insertions, 7 deletions
@@ -1,7 +1,5 @@ ⍝ Run with spec/dzref -_ur_ ← {(𝕘/⊸∾↕≠𝕩) ⊑¨∘⊔ (𝔽𝕘/𝕩)∾𝕩} - Base←{+⟜(𝕨⊸×)´⌽𝕩} Enc2←{𝕨⥊2(|∾˜(𝕨-1)Enc2⌊∘÷˜)⍟(0<𝕨)𝕩} @@ -28,7 +26,7 @@ Tokenize←{ r←𝕩='⍝'⋄s←/(≠↑2⊸↓)⊸∧𝕩=⊑"'"⋄d←/𝕩='"' g←⍋q←∾⟨ s⋄¯1↓d⋄/r⟩ ⋄q↩g⊏q e← g⊏∾⟨2+s⋄ 1↓d⋄(⊢-¯1↓0∾⊢)∘⊏⟜(0∾+`r)⊸//(𝕩=nl)∾1⟩ - Se←{(⊏˜𝕨)Se𝕩∨(↕≠𝕩)∊𝕩/𝕨}⍟{0=⊑⌽𝕩} + Se←{(⊏˜𝕨)Se 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟{0=⊑⌽𝕩} st←¯1↓Se⟜(1↑˜≠)∾⟜≠q⊸⍋¨e⋄b←st/q∾˘e ToI←¯1↓·≠¨∘⊔(≠𝕩)∾˜⥊⋄f←¬≠`ToI b cb←(¬(st/q)⊏r)/b @@ -38,14 +36,14 @@ Tokenize←{ w←(≠↑0∾⊢)⊸<l←c∊∾bD‿bN‿bA id←⍷args∾(bA∊˜w/c)⍒⊸⊏i←(1-˜l×+`w)⊔c nv←+´bA∊˜⊑¨id - c↩(w∨¬l∨c∊bW)/(vi+id⊐i)_ur_ w(vi+(≠id)+lu⊐lit)_ur_ cl c - c/˜↩¬(1∾1∾˜2⊸↓)⊸∧c∊bS + c↩(w∨¬l∨c∊bW)/(vi+id⊐i)⌾(w⊸/)(vi+(≠id)+lu⊐lit)⌾(cl⊸/)c + c/˜↩¬(1⌾⊑1⌽1⌾⊑)⊸∧c∊bS ⟨c,nv,nv-≠args,(nv↓id)∾lu⟩ } Parse←{ a←𝕩∊(2↑bG)⋄at←1⌽a⋄𝕩/˜↩¬a⋄a/˜↩¬at - l←≠𝕩⋄sep←𝕩∊bS⋄𝕩↩(bF⊑˜⥊chF⊐<'⊣')¨_ur_ sep 𝕩⋄sep∨↩𝕩=2⊑bB + l←≠𝕩⋄sep←𝕩∊bS⋄𝕩↩(bF⊑˜⥊chF⊐<'⊣')¨⌾(sep⊸/)𝕩⋄sep∨↩𝕩=2⊑bB o←𝕩=0⊑bB⋄c←𝕩=1⊑bB⋄v←a-˜𝕩≥vi⋄f←¬o∨c∨v∨sep na←(2×sep)+f×1+l↑0∾c∨v d←+`o-c⋄fe←((⍋⍋d)⊏+`(⍋d)⊏o)⊏l∾(⍋⊏⟜d)⊸⊏/c @@ -83,7 +81,7 @@ GenFn←{ ⟨t,nVar,nLoc,lits⟩←𝕨Tokenize𝕩 t⊏˜↩⍋+`-´<˘(2‿3⊏bB)=⌜t nd←+´c←t=3⊑bB - t↩((vi+nVar+≠lits)+↕∘≠)_ur_ c t + t↩((vi+nVar+≠lits)+↕∘≠)⌾(c⊸/)t ⟨a,na⟩←Parse t ops←⥊∾⟨ ∾⟜(0⥊˜3∾˜vi-≠)fntab |
