aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-30 09:44:08 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-30 09:44:08 -0400
commit672fa33980494249626e3ffc6d73a4f69e9ba25b (patch)
treeacdb8d12ed6ce89b25ab642f5cc927dfb3e506da
parent97dd08aab03affeb0bed8508f25d7a04f2a92d67 (diff)
Support multiple assignment
-rwxr-xr-xc.bqn10
-rw-r--r--test/bcases.bqn1
2 files changed, 7 insertions, 4 deletions
diff --git a/c.bqn b/c.bqn
index 6513ecf9..53d9bed3 100755
--- a/c.bqn
+++ b/c.bqn
@@ -152,6 +152,7 @@ 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
@@ -163,13 +164,14 @@ DParse ← {nv‿r𝕊𝕩:
ft←0∾(H↕3)+2×(H⥊3)⌈2×H⥊4
r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾(b⊸⊏)rev⊏r
- id←/(0⊸≤∧<⟜nv)xv←𝕩-vi⋄d←id⊏dec←¯1⌽𝕩=⊑bG⋄sp←/𝕩∊bI
+ 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⥊<is←id∾sp
- idbc←⟨21+(is-1)⊏𝕩∊2↑bG,(id-○(⊏⟜fd)ui)∾0¨sp,ii⟩
+ idbc←⟨21+¯2=is⊏r,(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
@@ -184,9 +186,9 @@ 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
- or←⍋idor∾g⊏˜∾⟨cn,cn,b,b,rt,1+/a,dr,l,l,si,si,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩
+ or←⍋idor∾g⊏˜∾⟨cn,cn,b,b,rt,dr,l,l,si,si,1+/a,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩
bc0←∾idbc∾⟨0¨cn,u⊐ob,15¨b,1+↕≠b⟩
- bc←or⊏bc0∾∾⟨25¨rt,(11-⊑bG)+a/𝕩,14¨dr,3¨l,ll,3¨si,sll,5+oa⊏r,16+dy-7×fa⊏tr⟩
+ bc←or⊏bc0∾∾⟨25¨rt,14¨dr,3+¯2=l⊏r,ll,3+¯2=si⊏r,sll,(11-⊑bG)+a/𝕩,5+oa⊏r,16+dy-7×fa⊏tr⟩
fs←(ft⊏⥊"fmd"≍⌜⌽↕2)∾¨((+`0∾1+⌊128⋆⁼1⌈bc)⊏˜/1∾or∊bc0+⟜↕○≠rt)≍○<¨(ft⊏spd)∾⟜(⥊¨↑⟜•a)¨lc
⟨LEBv bc,u,fs⟩
}
diff --git a/test/bcases.bqn b/test/bcases.bqn
index 72249b8f..1b7dfbc6 100644
--- a/test/bcases.bqn
+++ b/test/bcases.bqn
@@ -36,3 +36,4 @@
5 % 2+⍟3-1
9 % _m←˜⋄{mm←𝕩⋄×_mm 3}m
-2 % F←{-𝕩}⋄{F 2}
+2 % c‿d←2+⟨a,b⟩←↕2⋄⟨b‿c,a⟩↩⟨4⋄5⟩‿6⋄(b×c)-d×a