#! ./dzref tab←' '⋄nl←' ' dig ← "0123456789" alph ← "ABCDEFGHIJKLMNOPQRSTUVWXYZ" alow ← "abcdefghijklmnopqrstuvwxyz" charGroups←⟨ chF←"+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!" # Function "˜˘¨⌜⁼´˝`" # Modifier "∘○⊸⟜⌾⊘◶⎉⚇⍟" # Composition nl∾"⋄," # Separator "←↩→" # Gets "(){}⟨⟩" # Bracket "‿" # Ligature "·" # nOthing "𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕗𝕘" # Input (𝕣 pending; ℝ not allowed) dig # Digit "¯.π∞" # Numeric alow∾alph∾"_" # Alphabetic " "∾tab # Whitespace # #'" eliminated during tokenization ⟩ CharCode←(∾charGroups){g←⍋𝕗⋄g⊏˜1-˜(g⊏𝕗)⍋⊢} bF‿bM‿bC‿bS‿bG‿bB‿bL‿bO‿bI‿bD‿bN‿bA‿bW←≍¨˜⟜(+`≠↑0∾⊢)≠¨charGroups bA_e←4+⊑bA M←1⊸⊑(0⊸≤∧>)-⟜⊑ vi←+´≠¨9↑charGroups charRole←((vi-1⊑bI)↑/0∾≠¨3↑charGroups)∾(5/⌽↕2)∾0 spc←⥊3‿5‿6-⌜3‿0 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 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟{0=⊑⌽𝕩} st←¯1↓Se⟜(1↑˜≠)∾⟜≠q⍋e⋄b←st/q∾˘e ToI←¯1↓·/⁼(≠𝕩)∾˜⥊⋄f←¬≠`ToI b cb←(¬(st/q)⊏r)/b lu←⍷lit←𝕩⊔˜1-˜(+`ToI⊑˘cb)×≠`ToI cb cl←f/ToI⊑∘⌽˘cb c←CharCode f/𝕩 w←(≠↑0∾⊢)⊸0 r+↩(sa<𝕩=1+⊑bB)(⊣∧¬⊸∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r rev←⍋+`1+¯1↓g((¯1∾⊣)(⊣⍋⊸⊏⊏˜-⊏˜⟜⍋)⟜⍋1(+`∘∾-∾˜)⊏)o∨sl∨𝕩 M bS gf←⍋fd←+`rev⊏br rev⊏˜↩gf⋄fd⊏˜↩gf 𝕩⊏˜↩rev⋄bv←rev⊏br⋄b←/bv<0⋄fi←+`c←bv>0 FC←-⟜(≠↑0∾⊢)(c∾1)/·+`∾⟜0 H←0<1↓FC∘= ft←(0∾1⊸H+2×2⊸H⌈2×3⊸H)(0‿3‿4‿5+5+⊑bI)⍋𝕩 fsc←ft⊏spc r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾(b⊸⊏)rev⊏r id←/idm←(0⊸≤∧<⟜nv)xv←𝕩-vi⋄idx←id⊏𝕩⋄sp←/𝕩 M bI ad←(⌈`↕∘≠⊸×𝕩 M bG)⊏𝕩=⊑bG g↩⍋+`rev⊏p-br⋄gr←g⊏rev⋄sll←1+2÷˜0(<-○/>)gr⊏sr-sl⋄l←/g⊏𝕩=5+⊑bB g⊏˜↩gs←⍋gr⊏sl⋄gr↩g⊏rev⋄𝕩⊏˜↩g⋄r⊏˜↩g⋄o⊏˜↩gr⋄si←/gr⊏sr>sl gi←⍋g⋄l⊏↩⍋gs s←𝕩 M bS⋄ps←s∨o∨gr⊏sl⋄a←𝕩 M 2≍˜⊑bG r-↩ps∨a⋄op←r≥2⋄fe←(r≥1)∨1⌽r=3 tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏fe ma←tr<(𝕩=1+⊑bG)∧1⌽fe ro←op∨a<1⌽r=3⋄os←⌽↕∘≠⊸(⊣-⌈`∘×)⌽¬ro∨ma⋄at←(⊢+1+⊏⟜os)/a aa←g⊏asn←¯1⌽+`gi⊏-⟜(≠↑0∾⊢)(↕≠𝕩)∊at-1⋄r↩¯1¨⌾(aa⊸/)r tf←(a≤○(⌈`(1+↕∘≠)⊸×)ps)∧(⊢∧2(|<≤)ps(⊢-⌈`∘×)+`)¬ro opa←op>1↓0∾˜ps∨a oa←⌽/opa⋄fa←/(1⌽aa)<(tf∨¬tr)∧(ro∧1⌽opa)<(r=1)∨op<¯1⌽opa dy←fa⊏1↓0∾˜(𝕩≠⊑bO)∧(tr∧r≥0)∨roo+`⊸⊏0∾lo⋄rt←/𝕩=2+⊑bB d←id⊏dec←idm∧ad∧asn⋄lc←FC dec ig←⍋(⊏⟜(¯1∾c/gf)∾d⊸/⊏((≠𝕩)∾b⊏gf)˜)id⊏fi ig↩<⟜(≠id)⊸/(⍋+`∘⊏⟜(d∾-/˜d))⊸⊏(⍋⊏⟜(∾⟜(d⊸/)idx))⊸⊏ig ui←d(⌈`↕∘≠⊸×)⊸⊏⌾(ig⊸⊏)id ii←(ui⊏(fi⊏fsc)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv idor←∾3⥊