From db99d751e2940ad1ca53b5461cce7bd734a06fba Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 30 Jul 2020 11:05:02 -0400 Subject: Move assignment target detection into main parsing --- c.bqn | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/c.bqn b/c.bqn index 53d9bed3..838da723 100755 --- a/c.bqn +++ b/c.bqn @@ -152,11 +152,10 @@ DParse ← {nv‿r𝕊𝕩: sl←1⊸⌽⊸∨𝕩∊bL⋄sr←¯1⊸⌽⌾(g⊸⊏)sl⋄sa←sl∨sr g⊏˜↩⍋g⊏sl⋄r×↩¬sa⋄o←p>0 r+↩(sa<𝕩=1⊑bB)(⊣∧¬⊸∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r - r↩¯2¨⌾((+`¯1↓1⊸⌽⌾((0∾1+g)⊸⊏)⊸-1⌽0∾𝕩∊bG)⊸/)r rev←⍋+`1+¯1↓g((¯1∾⊣)(⊣⍋⊸⊏⊏˜-⊏˜⟜⍋)⟜⍋1(+`∘∾-∾˜)⊏)o∨sl∨𝕩∊bS - g↩⍋fd←+`rev⊏br - rev⊏˜↩g⋄fd⊏˜↩g + gf←⍋fd←+`rev⊏br + rev⊏˜↩gf⋄fd⊏˜↩gf 𝕩⊏˜↩rev⋄bv←rev⊏br⋄b←/bv<0⋄fi←+`c←bv>0 FC←-⟜(≠↑0∾⊢)(c∾1)/·+`∾⟜0 @@ -164,18 +163,13 @@ DParse ← {nv‿r𝕊𝕩: ft←0∾(H↕3)+2×(H⥊3)⌈2×H⥊4 r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾(b⊸⊏)rev⊏r - id←/idm←(0⊸≤∧<⟜nv)xv←𝕩-vi⋄sp←/𝕩∊bI - d←id⊏dec←idm∧((⌈`↕∘≠⊸×𝕩∊bG)⊏𝕩=⊑bG)∧r=¯2 - ig←⍋(⊏⟜(¯1∾c/g)∾d⊸/⊏((≠𝕩)∾b⊏g)˜)id⊏fi - ig↩<⟜(≠id)⊸/(⍋+`∘⊏⟜(d∾-/˜d))⊸⊏(⍋⊏⟜(∾⟜(d⊸/)id⊏𝕩))⊸⊏ig - ui←d(⌈`↕∘≠⊸×)⊸⊏⌾(ig⊸⊏)id - ii←(ui⊏(fi⊏ft⊏≠¨spd)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv - idor←∾3⥊)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 + g⊏˜↩gs←⍋gr⊏sl⋄gr↩g⊏rev⋄𝕩⊏˜↩g⋄r⊏˜↩g⋄o⊏˜↩gr⋄si←/gr⊏sr>sl + gi←⍋g⋄b⊏↩gi⋄l⊏↩⍋gs + asn←¯1⌽+`gi⊏-⟜(≠↑0∾⊢)𝕩∊bG⋄r↩¯2¨⌾((g⊏asn)⊸/)r 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 @@ -186,6 +180,15 @@ DParse ← {nv‿r𝕊𝕩: 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 + + 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⊏ft⊏≠¨spd)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv + idor←∾3⥊