aboutsummaryrefslogtreecommitdiff
path: root/src/c.bqn
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-09-09 20:57:48 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-09-09 20:57:48 -0400
commit0223b4cafdcbe7ae0ccde96b236ebd47b9dbb89a (patch)
tree1e7aded2e7bd7b6d7eabff3945fc3f8daa63f503 /src/c.bqn
parent0dff9871abb061ee72daa2ec1f6820d42098a2d6 (diff)
Variable-length body lists depending on whether inverses are defined
Diffstat (limited to 'src/c.bqn')
-rw-r--r--src/c.bqn8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 11c0ad0e..6c8f6a7f 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -314,9 +314,11 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn
# Instruction source positions
MI←-⊸↓˜⟜≠∾g⊏˜⊢⋄oj←(rt-∘≠⊸⌽oi⌊1-˜≠i)Mi∾⟨1-˜at,oa,fa⟩
ind←⟨oj,oj Mi fa⊏IT»¬ro∨ma⟩(¯1∾˜or⊏(≠rt)⊸⌽)⊸⊏¨i‿e
- cj←/1+1=ciw←cw⊏˜ci←/cm∨↩fx∧1≠cw
- cg←¯1(↑∾˜cj(⊒∘⊣+⊏)(4⌊(2×ci⊏cu)+1<ciw)+↓)5ׯ1+`(ci⊏cf)∾1
- ci↩<˘∘‿5⥊cg⊔cj⊏ci # Indices for multi-body blocks
+ cj←/cv←1+1=ciw←cw⊏˜ci←/cm∨↩fx∧1≠cw
+ ck←4⌊(2×ci⊏cu)+1<ciw
+ cg←¯1+`cif←ci⊏cf
+ ckt←2⌈(cif/·⍋⊏⟜cg)⊸⊏∘⍒⊸⊏cv+ck
+ ci↩ckt/⊸⊔(¯1(↑∾˜cj(⊒∘⊣+⊏)ck+cg⊏↓)0∾+`ckt)⊔cj⊏ci # Indices for multi-body blocks
fq←⟨cf/ft,cf/¬fx,ci⌾((cf/cm)⊸/)/cf⟩ # Per-function data
cq←⟨/1∾or≥oc-○≠rt,fsc+≠¨dn,dn,dx⟩ # Per-body data
⟨oc∾¯1⊑rc,u,fq,cq,ind⟩ # Overall output