diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-07-27 13:12:42 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-07-27 13:12:42 -0400 |
| commit | 7987c2e3f254e5048482be6878936b4a62dee842 (patch) | |
| tree | bbe926172e8e510285a7227a5be34bbe789f6bea | |
| parent | 78fb79f234c9ab1dff63ad3645945a54404792df (diff) | |
Full lexical scoping
| -rwxr-xr-x | c.bqn | 45 |
1 files changed, 27 insertions, 18 deletions
@@ -153,14 +153,30 @@ DParse ← {nv‿r𝕊𝕩: g⊏˜↩⍋g⊏sl⋄r×↩¬sa⋄o←p>0 r+↩(sa<𝕩=1⊑bB)(⊣∧¬⊸∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r rev←⍋+`1+¯1↓g((¯1∾⊣)(⊣⍋⊸⊏⊏˜-⊏˜⟜⍋)⟜⍋1(+`∘∾-∾˜)⊏)o∨sl∨𝕩∊bS - rev⊏˜↩⍋{+`⌾((⍋+`𝕩)⊸⊏)𝕩>0}rev⊏br - bv←rev⊏br⋄b←/be←bv<0 - H←<˝∘⍉2↕(1∾˜bv>0)/·+`0∾˜(rev⊏𝕩)∊(5⊑bI)+⊢ - ft←0∾(H↕3)+2×(H⥊3)⌈2×H⥊4 - r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾((be/rev)⊸⊏)r - g↩⍋+`rev⊏p-br⋄gr←g⊏rev⋄sll←1+2÷˜0(<-○/>)gr⊏sr-sl⋄l←/gr⊏𝕩=5⊑bB - g⊏˜↩gs←⍋gr⊏sl⋄gr↩g⊏rev⋄𝕩⊏˜↩gr⋄r⊏˜↩gr⋄o⊏˜↩gr⋄si←/gr⊏sr>sl⋄b⊏↩⍋g⋄l⊏↩⍋gs + fg←⍋fd←+`pr←rev⊏br⋄fi←+`⌾(fg⊸⊏)pr>0 + g↩⍋fi⋄rev⊏˜↩g⋄fi⊏˜↩g⋄fd⊏˜↩g + 𝕩⊏˜↩rev⋄bv←rev⊏br⋄b←/be←bv<0 + + FC←-⟜(≠↑0∾⊢)(1∾˜bv>0)/·+`∾⟜0 + H←0<1↓·FC𝕩∊(5⊑bI)+⊢ + ft←0∾(H↕3)+2×(H⥊3)⌈2×H⥊4 + r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾(b⊸⊏)rev⊏r + + id←/(𝕩≥vi)∧𝕩<vi+nv⋄d←id⊏dec←¯1⌽𝕩=⊑bG⋄sp←/𝕩∊bI + pr⊏˜↩fg⋄fb←¯1∾fg/˜pr>0⋄fe←(≠𝕩)∾fg/˜pr<0 + ig←⍋(⊏⟜fb∾d⊸/⊏fe˜)id⊏fi + ig↩<⟜(≠id)⊸/(⍋+`∘⊏⟜(d∾¯1⥊˜+´d))⊸⊏(⍋⊏⟜(∾⟜(d⊸/)id⊏𝕩))⊸⊏ig + ui←d(⌈`↕∘≠⊸×)⊸⊏⌾(ig⊸⊏)id + ip←1-˜ui⊏-⟜(⌈`(bv>0)⊸×)+`dec + ii←ip∾+⟜(0⊸≤)2+vi-˜sp⊏𝕩 + ii+↩(ui∾sp)⊏(+`bv>0)⊏3×2|ft + idor←∾3⥊<is←id∾sp + idbc←⟨21+(is-1)⊏𝕩∊2↑bG,(id-○(⊏⟜fd)ui)∾0¨sp,ii⟩ + lc←FC dec + + 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⋄b⊏↩⍋g⋄l⊏↩⍋gs s←𝕩∊bS⋄ps←s∨o∨gr⊏sl⋄a←𝕩∊2↑bG r-↩ps∨a⋄op←r≥2⋄ro←op∨1⌽r=3 tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏ro∨r≥1 @@ -168,20 +184,13 @@ DParse ← {nv‿r𝕊𝕩: opa←op>1↓0∾˜ps∨a⋄os←⌽↕∘≠⊸(⊣-⌈`∘×)⌽¬ro oa←⌽/opa⋄fa←/(tf∨¬tr)∧(ro∧1⌽opa)<(r=1)∨op<¯1⌽opa dy←fa⊏1↓0∾˜(𝕩≠⊑bO)∧(tr∧r≥0)∨ro<r=0 - n←𝕩≥vi+nv⋄id←/(n<𝕩≥vi)⋄sp←/𝕩∊bI⋄cn←/n∨𝕩≤¯1⊑bC⋄u←⍷ob←cn⊏𝕩 + n←𝕩≥vi+nv⋄cn←/n∨𝕩≤¯1⊑bC⋄u←⍷ob←cn⊏𝕩 lo←(o/𝕩)=4⊑bB⋄ll←1+lo/1(↓--⊸↓)(o∾1)/+`(s∾0)-(1∾o)∧ps∾1 dr←/s>o+`⊸⊏0∾lo⋄rt←/𝕩=2⊑bB - cf←g⊏+`bv>0 - dl←+`≠¨de←¯1↓(⊏⟜cf⊔○(∾⟜(1++´bv>0))⊏⟜𝕩)1+/𝕩=⊑bG - fd←0∾(bv>0)/rev⊏+`br - idf←dl⍋idl←de∾⊸⊐id⊏𝕩 - idd←(id⊏cf)-○(⊏⟜fd)idf - idi←idl-idf⊏0∾dl - is←id∾sp - or←⍋g⊏˜∾⟨cn,cn,is,is,is,b,b,rt,1+/a,dr,l,l,si,si,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩ - bc1←⟨0¨cn,u⊐ob,21+(is-1)⊏a,idd∾0¨sp,(idi∾+⟜(0⊸≤)2+vi-˜sp⊏𝕩)+3×2|(idf∾sp⊏cf)⊏ft,15¨b,1+↕≠b⟩ + or←⍋idor∾g⊏˜∾⟨cn,cn,b,b,rt,1+/a,dr,l,l,si,si,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩ + bc1←idbc∾⟨0¨cn,u⊐ob,15¨b,1+↕≠b⟩ bc←or⊏∾bc1∾⟨25¨rt,12¨/a,14¨dr,3¨l,ll,3¨si,sll,5+oa⊏r,5+dy+4×fa⊏tr⟩ - ⟨LEBv bc,u,(ft⊏⥊"fmd"≍⌜⌽↕2)∾¨(((⥊¨•a↑˜≠)¨de)∾˜¨ft⊏spd)<∘≍˘˜/1∾or∊(+´≠¨bc1)+↕≠rt⟩ + ⟨LEBv bc,u,(ft⊏⥊"fmd"≍⌜⌽↕2)∾¨(((⥊¨↑⟜•a)¨lc)∾˜¨ft⊏spd)<∘≍˘˜/1∾or∊(+´≠¨bc1)+↕≠rt⟩ } prims←⟨ |
