From 1355ab3629d346fe0de63342ba400062967a94b5 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 12 Aug 2021 10:02:15 -0400 Subject: =?UTF-8?q?Close-to-correct=20dispatching=20for=20multiple=20bodie?= =?UTF-8?q?s=20based=20on=20=F0=9D=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/c.bqn | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn index 1827d563..f8f3b5a9 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -166,7 +166,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn cf←1∾¬co←cb/cs⋄cm←0∾∨⟜«co # cf: body is first; cm: body is one of multiple "Header-less bodies must come last"_err_(/CB) 1(-⊸↓¯1↓ch - cc←(⍋⍋«co)⊏c∾/cs + cc←(⍋⍋«co)⊏c∾/cs # Case close rr←rev⊏r hr←rr/˜hf←hh⊏˜⟜IT⌾((⌽g)⊸⊏)¯1=rr hl←2=hn←(1⊸»+«)hc←¯1=hr @@ -175,7 +175,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn hm←¬ho∨ha←ho<(0=hr)∧1=hn # Mask for main name; header arguments "Invalid header structure"_err_(hm//∘HF) 1⊸»⊸=hm/hc hm>↩hc⋄hr/˜↩hm⋄hx←(1»hc)/ha # Header-derived role hr and immediacy ¬hx - cw←(hc/»ha)⌾(ch⊸/)1+-⟜«cm×1«cf # Body 𝕨: 0 no, 1 allowed, 2 required + cw←(hc/»hl∨ha)⌾(ch⊸/)1+-⟜«(»ch)<1(⊢<«)cf # Body 𝕨: 0 no, 1 allowed, 2 required hl/˜↩hm⋄hm↩hm⌾(hf⊸/)hf "Header left argument without right"_err_(/HF) ha>hc+`⊸⊏hx∾0 hx∨↩1=hr @@ -211,14 +211,14 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn # Prep for lexical resolution before reordering 𝕩 xv←𝕩-vi {i↩(𝕨⊏i)⌾(𝕩⊸⊏)i⋄e↩(𝕩⊏e)⌾(𝕨⊸⊏)e}´bp # Highlight all contents of a pair when error reporting - 𝕩⊏˜↩g⋄r⊏˜↩gr⋄ir⊏˜↩gr⋄l↩(l⊏⍋gs)∾/gr⊏sr>sl + 𝕩⊏˜↩g⋄hg←g⊏hf⋄r⊏˜↩gr⋄ir⊏˜↩gr⋄l↩(l⊏⍋gs)∾/gr⊏sr>sl # Parsing part 1 a←(¯5⊸<∧≤⟜¯3)r⋄ps←aaa + "Can't use result of function/modifier assignment without parentheses"_err_(G) hg<(0aa af>↩alm←ai⊏aa⋄al←alm/ai # aliases al # Lexical resolution (independent of parsing part 2 below) @@ -276,7 +276,7 @@ Parse ← {r‿vn‿i‿e‿def←𝕨⋄nv←≠vn # Parsing part 2 ta←tr∧2(>∨|)ps(⊢-T)+`¬ro # Train argument (first-level) - fa←/(fe←hf∨ta∨ro∨«⊸∨psfe∨ff dy←2≠ny←fa⊏2«no⌈2׬(tr∧r≥0)∨ro