From fa5da41ea5a0762b7aeee8ad97522e215651d054 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sat, 31 Oct 2020 22:15:18 -0400 Subject: Move expression explanation code to src/e.bqn --- src/e.bqn | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/e.bqn (limited to 'src/e.bqn') diff --git a/src/e.bqn b/src/e.bqn new file mode 100644 index 00000000..5e8b4864 --- /dev/null +++ b/src/e.bqn @@ -0,0 +1,53 @@ +wh ← 10.75‿24 +pad← wh×2‿1 +to ← 1+wh÷2‿3 +t ← 10 + +ps ← At "class=Paren|stroke=currentColor|fill=none|stroke-width=1" +rc ← At "class=code|stroke-width=1|rx=10" +gr ← "g" At "font-family=BQN,monospace|font-size=18px" +gt ← "g" At "text-anchor=middle" +gb ← "g" At "class=codeCover|stroke-width=6|stroke-linejoin=round" +gf ← "g" At "font-size=15px|opacity=0.9" +Shadow ← { + t ← (⟨0,0‿¯2⟩+⌜𝕨) ("text" Attr Pos)⊸Enc¨ (⊢≍Highlight¨) ⥊¨𝕩 + gt Enc ⟨gb,gf⟩ Enc¨<˘ t +} + +Explain ← { + b‿const‿blk‿i ← 𝕨 + ba‿bc‿bo‿bp ← '0'-˜⟨ # For each instruction, number of: + "11111000000000010000022000" # Arguments + "000//232323223102303200121" # Stack values consumed + "11111111111111011101111111" # Stack values output + "00000110111001001101000100" # Position determiner + ⟩ + m ← { # Mask of instruction starts + a ← ba(⊣⊏˜≠⊸>×⊢)b + na← ∾⟜≠ (≠-(1+↕∘≠)⊸(»·⌈`×)⌾⌽) <⟜128 b + n ← 1+{(𝕩=⌜a) +˝∘× >⊏⟜na⍟𝕩↕≠a}↕3 + ! ∧´ ↕∘≠⊸< n + Se←{(⊏˜𝕨)Se 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟(0=¯1⊑⊢) + (≠↑∾⟜≠Se 1∾0¨) n + } + mb‿mi ← m⊸/¨ b‿i + mi↓˜↩¯1 + + r←+`(mb⊏bo)-na←mb⊏bc + ! 1=¯1⊑r + p←((¯1↓r)⍋⊸⊏○⍋(⊏⟜r+⊒))⊸⊏/na + j←¯1↓mi⊏˜⊏˜⍟≠{s←𝕩⊏˜g←⍋𝕩⋄(g/˜(⊒s)=s⊏mb⊏bp)⌾((⍷s)⊸⊏)↕≠mb}p + je←j∾¯1.25 + d←+`⊸×f←0