From 47056b849f990d02993fcb8f2c499000a8074c9b Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 25 Nov 2020 22:17:01 -0500 Subject: =?UTF-8?q?Full=20handling=20of=20Nothing=20(=C2=B7,=20not=20?= =?UTF-8?q?=F0=9D=95=A8)=20in=20the=20compiler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/c.bqn | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn index 81f969bf..2ff49a9d 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -118,7 +118,11 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn {"Empty statement or expression"_err_(𝕩/0∾G) (4+⊑bB)≠𝕩/0∾gx}1⊸«⊸∧1∾gb r-↩(𝕩=⊑bG)>ec←«0≤r+p # Role ¯4 for exports: ⊑bG is ⇐ "Invalid assignment or stranding use"_err_(↕∘≠) ((¯4⊸<∧≤⟜¯2)r)>ec∧»0≤r - sr←»⌾(g⊸⊏)sl←«⊸∨r=¯2⋄cp←𝕩=1+⊑bB # Strand right and left; closed paren + sr←»⌾(g⊸⊏)sl←«⊸∨r=¯2⋄ns←¬sl∨sr # Strand right and left; not stranded + cp←𝕩=1+⊑bB # Closed paren + nr←(IT¬cp)⊏𝕩=⊑bO # Nothingness role: 1 for · (handle 𝕨 later?) + "Can't strand Nothing (·)"_err_(↕∘≠) ns)gr⊏sr-sl⋄l←/g⊏𝕩=5+⊑bB # Strand length; list starts bp←⟨b,/c⟩∾¨0(>≍○(sl ni←1+(1↓nf)/bk←b⊏gi # Indices of module assignment (import) arrows "Modules must be immediately assigned"_err_(ni⊏G)∘(∨˝¯3‿0‿¯1≠r∾⟜¯1‿1⊸(⊏˜)(↕3)+⌜⊢)⍟(0<≠)ni "Modules must be destructured"_err_(ni⊏G) (⊏⟜idm>⊏⟜rev⊏sr˙)(ni+1)⊏g a←r≤¯3⋄ps←a(«∧m2≤»)m2(«∧m2≤»)noaa # Lexical resolution (independent of parsing part 2 below) @@ -197,12 +204,14 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn ta←tr∧2(>∨|)ps(⊢-T)+`¬ro # Train argument (first-level) fa←/(fe←ta∨ro∨«⊸∨psfe∨ff - dy←fa⊏«(𝕩=⊑bO)<(tr∧r≥0)∨ro