diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-07-05 20:40:13 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-07-05 22:10:28 -0400 |
| commit | 542ad5bd80c43f5765a2404ed5c14ebf3b6d2c3d (patch) | |
| tree | 4e7e4443e3571d3c709179f660f4550e68f18d3f | |
| parent | 061721cfe5c39e1f499f675bd6fd7625d8fc9826 (diff) | |
Add dzaima/BQN bytecode backend (missing block support)
| -rwxr-xr-x | dc.bqn | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -115,3 +115,31 @@ Compile←{ f←⟨rcp,or,body⟩ Gen ⟨(≠¨f)/(1‿2‿0∾¨1)⥊¨¨f64 ⋄ 2 ⋄ ∾f⟩ } + + +⍝ Targetting dzaima/BQN bytecode: + +DParse ← { + l←≠𝕩⋄sep←𝕩∊bS⋄𝕩↩(⌽⍋⍋⌽+`(≠↑0∾⊢)⊸∨sep)⊏𝕩 + a←𝕩∊2↑bG⋄o←𝕩=1⊑bB⋄c←𝕩=0⊑bB⋄v←𝕩≥vi⋄f←𝕩∊bF + d←+`o-c⋄fe←(d⍋⊸(⍋∘⊣⊏+`∘⊏)o)⊏l∾(⍋⊏⟜d)⊸⊏/c + dy←1↓0∾˜o∨v⋄la←(¯1⌽f×dy)/(o×fe)⌈↕l⋄mc←/f׬dy + n←𝕩≥vi+𝕨⋄id←/v-n⋄cn←/f∨n⋄s←/sep⋄u←⍷ob←cn⊏𝕩 + bc←(⍋(∾˜cn∾id)∾(1+/a)∾s∾mc∾la)⊏∾⟨0¨cn,(1+(id-1)⊏a),u⊐ob,vi-˜id⊏𝕩,(11-⊑bG)+a/𝕩,14¨s,5¨mc,6¨la⟩ + bc‿u +} + +prims←⟨ + +,-,×,÷,⋆,√,⌊,⌈,|,¬,∧,∨,<,>,≠,=,≤,≥,≡,≢,⊣,⊢,⥊,∾,≍,↑,↓,↕,⌽,⍉,/,⍋,⍒,⊏,⊑,⊐,⊒,∊,⍷,⊔ + ˜,˘,¨,⌜,⁼,´,` + ∘,○,⊸,⟜,⌾,⊘,◶,⎉,⚇,⍟ +⟩ +DGenFn←{ + ⟨t,nVar,nLoc,lits⟩←⟨⟩Tokenize𝕩 + ⟨bc,u⟩←nVar DParse t + o←(u-(vi+nVar-≠prims)×u≥vi)⊏prims∾ReadNum¨lits + ⟨bc,o,nVar↑•a,⟨⟩⟩ +} +DRun←{ + ('f'‿0 •COMP DGenFn 𝕩){𝔽} 0 +} |
