From ab3ebfa3c585fee815980688965ffe3929e24aa2 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 18 Aug 2021 16:39:03 -0400 Subject: Constant matching in headers (fixes #11) --- src/c.bqn | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn index a126bcd5..557e5ced 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -235,8 +235,9 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Role of the two sides in assignment must match"_err_(at⊏G) af∧ar≠0⌈at⊏er aid←(¯6⊸≤∧<⟜nv)𝕩-vi # Assignable identifer ak←af+(0≤ar)+(⊑bG)-˜ai⊏𝕩 # Class of assignment: 1⇐ 2⇐? 3←? 4↩? - at∾↩hj - aa←×g⊏ac←»+`(»⊸∨0=+`)⊸×gi⊏«⊸-(ak∾3¨hj)⌾(at⊸⊏)0¨𝕩# ac broadcasts it to the entire target + at∾↩hj⋄ac←«⊸-(ak∾5¨hj)⌾(at⊸⊏)0¨𝕩 # Header assignment is 5 temporarily + aa←×g⊏ac↩»+`(»⊸∨0=+`)⊸×gi⊏ac # Broadcast ac to the entire target + ac-↩2×ah←5=ac # Assignment is header; 5→3 nf←H ac«𝕩=⊑bL)∨𝕩(=⟜(3+⊑)«𝕩=⊑bL)∨𝕩(=⟜(3+⊑)aa af>↩alm←ai⊏aa⋄al←alm/ai # aliases al @@ -297,8 +299,8 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn # Object code generation: numbers oc ordered by source location (after rev) oi ao←11+(0⌈(1+⊑bG)-˜ai⊏ma+𝕩)∾13×hd # Assignment opcode - or←⍋oi←idor∾g⊏˜∾⟨cn,cn,bk,bk,2/l,at,dr,al+1,al+1,oa+1⌈oa⊏os,fl,rt⟩ - oc←or⊏∾idoc∾⟨0¨cn,ob,15¨bk,1+↕≠bk,⥊⍉(3+l⊏aa)≍ll,ao,14¨dr,28¨al,vi-˜(al-1)⊏𝕩 + or←⍋oi←idor∾g⊏˜∾⟨cn,cn,bk,bk,hq,2/l,at,dr,al+1,al+1,oa+1⌈oa⊏os,fl,rt⟩ + oc←or⊏∾idoc∾⟨0¨cn,ob,15¨bk,1+↕≠bk,23¨hq,⥊⍉(3+l⊏aa)≍ll,ao,14¨dr,28¨al,vi-˜(al-1)⊏𝕩 5+oa⊏r,19⌊5+(fn/dy+11×fm⌈1=ny)+4×0