#!/usr/bin/env bqn Parse←{ x←𝕩 a←x='←'⋄at←1⌽a⋄vars←at/x⋄x(/˜)↩¬a⋄a(/˜)↩¬at l←≠x⋄o←x='('⋄c←x=')'⋄sep←x='⋄'⋄v←a-˜x∊•d∾vars⋄f←¬o∨c∨v∨sep na←(2×sep)+f×1+l↑0∾c∨v e←/c⋄d←+`o-c ed←e⊏d⋄b←(⍋⍋ed)⊏(⍋⊏⟜d)⊸⊏/o s←e-(e∾l)⊏˜{u←(≠e)¨𝕩⋄{(𝕩⊏u)↩𝕨⊏˜𝕨⍋𝕩}¨´˘2↕(∪⍋⊸⊏⊔)𝕩⋄u}⍟(0<≠)ed fe←f×(l-1)++`(-⊸≍s)⌾((e≍b)⊸⊏)l⥊0 fe⌊↩(l-1)-l↑(⌈`↕∘≠⊸×)⌾⌽1∾˜sep ia←+`l↑0∾f-l↑/⁼∧f/fe sel←¬∘⊏⟜(o∨c)⊸/⍋(fe⌈↕l)-ia ⟨sel⊸⊏¨x‿na,vars⟩ } d64←127-3 GenFn←{ ⟨x‿na,vars⟩←𝕩 D←16⊥(•d∾"ABCDEF")⊸⊐ fns←{ n←•d⊐<𝕩 n=≠•d:(D"20")∾vars⊐<𝕩 n=0:8⥊0 l←2(⌊⋆⁼)n (D"44")∾2⊥˘⌽8‿8(⊣⥊×´⊸↑)∾⟨⥊0,(11⥊2)⊤1023+l,(2⥊˜0⌈l)⊤n⟩ }‿{ v←vars⊐<𝕩⋄v<≠vars:(D"22")∾v (⥊¨(D"99")+((↕4)∾6))⊑˜"|-⌈⌊√"⊐<𝕩 }‿{ (⥊¨(D"1A")∾(D"A0")+↕6)⊑˜"⋄+-×÷⌊⌈"⊐<𝕩 } ((≠∾∾)⟨vars≠⊸∾d64⟩)∾(D"0B")∾˜∾na⊑⟜fns⊸{𝕎𝕩}¨x } Gen←{ LEB←{0≡𝕩:⥊0⋄128⊸+⌾(¯1⊸↓) 2⊥⌽⍉ (∨`⌾⌽∨´˘)⊸/ 10‿7(⊣⥊×´⊸↑) ⍉⌽(8⥊2)⊤𝕩} C←LEB∘≠⊸∾ S←∾⟜C V←≠∾∾ I←C∘•UCS t‿n‿b←𝕩 ∾⟨ 0∾(•UCS"asm")∾4↑1 1 S V (96∾⟜∾C¨)¨t 3 S V ⥊¨↕≠n 7 S V I⊸(⊣∾0∾⊢)¨⟜(↕∘≠)n 10 S V C¨ b ⟩ } Compile←{ body←GenFn Parse 𝕩 (1↓∾)(","∾⥊∘⍕)¨ Gen ⟨⟨0‿1⟩/¨¨d64 ⋄ ⥊<"fn" ⋄ ⥊