aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-10-07 15:38:51 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-10-07 15:38:51 -0400
commit5f9b2d015f9d9e6a17311c9f09cc618b34077d69 (patch)
tree54d1fe6100776fd1b8450ad218a251bb342fbb23
parent39f2d2698e1c10e9fc7090ab955bbaedb57af6d9 (diff)
Recompute ps from r instead of permuting it
-rw-r--r--src/c.bqn9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/c.bqn b/src/c.bqn
index dec6c1a9..acf69214 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -113,9 +113,8 @@ Parse ← {r‿nv←𝕨
"Empty statement or expression" ! ∧´(4+⊑bB)=(1⊸«⊸∧1∾gb)/0∾gx
"Invalid assignment or stranding use" ! ∧´(r≤¯2)/r»⊸∧⟜«○(0⊸≤)r+p
sr←»⌾(g⊸⊏)sl←«⊸∨r=¯2⋄cp←𝕩=1+⊑bB
- ps←sl∨r=¯1
g⊏˜↩⍋g⊏sl
- rev←⍋+`¯1↓(¯1∾g)(⊣⍋⊸⊏⊏˜⟜⍋¬⊏˜)⍋+`⊸+1∾g⊏ps
+ rev←⍋+`¯1↓(¯1∾g)(⊣⍋⊸⊏⊏˜⟜⍋¬⊏˜)⍋+`⊸+1∾g⊏sl∨r=¯1
gf←⍋fd←+`rev⊏br←p×𝕩M⟨2+⊑bB,2⟩
rev⊏˜↩gf⋄fd⊏˜↩gf
@@ -136,9 +135,9 @@ Parse ← {r‿nv←𝕨
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⋄gi←⍋g
- 𝕩⊏˜↩g⋄r⊏˜↩gr⋄ps⊏˜↩gr⋄si←/gr⊏sr>sl⋄l⊏↩⍋gs
- er⊏˜↩gr⋄ma←(𝕩=1+⊑bG)∧«er≥1⋄er⊏˜↩IT»ps⋄ma>↩tr←er≥1
- a←r=¯3⋄ro←(r≥2)∨a<«r=3
+ 𝕩⊏˜↩g⋄r⊏˜↩gr⋄er⊏˜↩gr⋄si←/gr⊏sr>sl⋄l⊏↩⍋gs
+ a←r=¯3⋄ps←a<r<0⋄ro←(r≥2)∨a<«r=3⋄ma←(𝕩=1+⊑bG)∧«er≥1
+ er⊏˜↩IT»ps⋄ma>↩tr←er≥1
os←⌽↕∘≠⊸(⊣-T)⌽¬ro∨ma⋄at←1+⊏⟜os⊸+/a
"Role of the two sides in assignment must match" ! (⊏⟜er≡⊏⟜r)at
r(×⟜¬-⊢)↩aa←g⊏asn←»+`gi⊏«⊸-(≠𝕩)↑/⁼at