diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-11-28 19:31:51 -0500 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-11-28 19:37:12 -0500 |
| commit | 92bd804e1249774b33f54cc9b8504ac9e72ca651 (patch) | |
| tree | 97d4eb44d75733bc75f4c5f7523f45c8f7850c87 /src | |
| parent | b2df3496227d2d7ebe1363fad0bafbfcb2a6efb4 (diff) | |
Allow · as placeholder in assignment and headers
Diffstat (limited to 'src')
| -rw-r--r-- | src/c.bqn | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -147,7 +147,6 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn cp←𝕩=1+⊑bB # Closed paren nr←(IT¬cp)⊏(𝕩=2+⊑bI)+2×𝕩=⊑bO # Nothingness role: 1 for 𝕨, 2 for · nx←0 ⋄ nei←↕≠nr ⋄ _nerr←{𝕗 _err_ nei 2=nx⌈↩𝕩} - "Can't strand Nothing (·)"_nerr nr׬ns g⊏˜↩⍋g⊏sdl←sl∨dl # Avoid reordering strands and dots in rev rp←≠⊸»⌾(g⊸⊏)↕≠r # Position of previous, for roles # Permutation to reverse each expression: *more* complicated than it looks @@ -242,7 +241,6 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn "Missing operand"_nerr op×2(«⌈m2×»)no⌈2×m2≥ro∨r∊↕2 s←𝕩=sep⋄fo←𝕩∊⟨2+⊑bB,1+⊑bH⟩ # Separators, function open { or ; ls←s∧fo<○IT lo←𝕩=4+⊑bB # List Separators: after ⟨lo, not {fo - "Can't use Nothing (·) in lists"_nerr ne×»lo∨ls "Double subjects (missing ‿?)"_err_(G) ∧⟜«ro»⊸∨⊸<r=0 mm←𝕩=2+⊑bG⋄ma←tr<mm∧«ir≥1⋄mm∧↩1»ps # Modified assignment; monadic modified "No right-hand side in non-modified assignment"_err_(G) ma<mm @@ -252,6 +250,8 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn ak←af+(0≤ar)+(ai⊏ma)+(⊑bG)-˜ai⊏𝕩 # Class of assignment: 1⇐ 2⇐? 3←? 4↩? 5+↩? at∾↩hj⋄ac←«⊸-(ak∾6¨hj)⌾(at⊸⊏)0¨𝕩 # Header assignment is 6 temporarily aa←×gac←g⊏ac↩»+`(1⊸»⊸∨0=+`)⊸×gi⊏ac # Broadcast ac to the entire target + api←/ap←aa∧2=no # Assignment placeholder + "Can't use Nothing (·) in lists"_nerr (¬ap)×no×(gr⊏¬ns)∨»lo∨ls ac-↩3×ah←6=ac # Assignment is header; 6→3 nx⌈↩aa×1=no # Prevent assignment to 𝕨 if it's · nf←H ac<xv=vi-˜⊑bG # Namespace bodies @@ -264,7 +264,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn aid←(¯6⊸≤∧<⟜nv)𝕩-vi # Assignable identifer hq←/hp←(g⊏ah)∧𝕩≥nv+vi # Header constant atc←(hg<ps<«aa∧r≥0)<aid∨hp∨(ps>«𝕩=⊑bL)∨𝕩(=⟜(3+⊑)<M)bB - "Assignment target must be a name or list of targets"_err_(G) (a∨atc)<aa + "Assignment target must be a name or list of targets"_err_(G) (a∨atc∨ap)<aa "Can't nest assignments (write aliases with ⇐)"_err_(ai⊏G) ((5≠ai⊏gac)∧ak=2)<ai⊏aa "Can't use result of function/modifier assignment without parentheses"_err_(G) hg<(0<er)∧(0≤r)∧»⊸>aa af>↩alm←ai⊏aa⋄al←alm/ai # aliases al @@ -318,8 +318,8 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn # Object code generation: numbers oc ordered by source location (after rev) oi ao←48+(0⌈(1+⊑bG)-˜ai⊏𝕩+ma+mm)∾-hd # Assignment opcode - or←⍋oi←idor∾g⊏˜∾⟨cn,cn,bk,bk,hq,2/l,at,dr,qp,al+1,al+1,oa+1⌈oa⊏os,fl,rt⟩ - oc←or⊏∾idoc∾⟨0¨cn,ob,1¨bk,1+↕≠bk,43¨hq,⥊⍉(11+l⊏aa)≍ll,ao,6¨dr,42¨qp,66¨al,vi-˜(al-1)⊏𝕩 + or←⍋oi←idor∾g⊏˜∾⟨cn,cn,bk,bk,hq,2/l,api,at,dr,qp,al+1,al+1,oa+1⌈oa⊏os,fl,rt⟩ + oc←or⊏∾idoc∾⟨0¨cn,ob,1¨bk,1+↕≠bk,43¨hq,⥊⍉(11+l⊏aa)≍ll,44¨api,ao,6¨dr,42¨qp,66¨al,vi-˜(al-1)⊏𝕩 24+oa⊏r,16+(fn/dy+2×fm⌈1=ny)+4×0<fa⊏er,¯1↓rc←7+nf⟩ # Instruction source positions MI←-⊸↓˜⟜≠∾g⊏˜⊢⋄oj←(rt-∘≠⊸⌽oi⌊1-˜≠i)Mi∾⟨1-˜at,oa,fa⟩ |
