From 7fc06f7bc7d371edad29cd164ea0dd4e620e4af1 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Fri, 14 May 2021 16:01:18 -0400 Subject: Aliasing support --- src/c.bqn | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src/c.bqn') diff --git a/src/c.bqn b/src/c.bqn index a1922669..13aa9092 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -149,8 +149,6 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn sn←(0‿3‿4‿5+⊑bI)⍋𝕩⋄sp←/𝕩 M bI # Special name index fx←1 H sn⋄fr←(fx∨0⊸<)⊸+ft←(2⊸H⌈2×3⊸H)sn # Block immediacy ¬fx and type ft "Special name outside of any block"_err_(/{(0=fi)∧𝕩 M bI}∘𝕩) 0<⊑fr - nf←(⊑bG)H𝕩 # Namespace blocks - {"Can't return Nothing (·)"_err_𝕩 𝕩⊏nr} 1-˜nf¬⊸/0∾c⊏rev fsc←(ft⊏0‿2‿3)+3×fx # Special name count # Propagate roles through parentheses @@ -167,8 +165,7 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn r(×⟜¬-⊢)↩dl⋄dc⊏˜↩rev # Namespace and dot to ¯1 # Prep for lexical resolution before reordering 𝕩 - di←/dm←»dc # Dots aren't scoped - idv←xv⊏˜id←/idm←dm<(0⊸≤∧<⟜nv)xv←𝕩-vi + xv←𝕩-vi # Parsing part 1 p-↩br⋄g↩⍋+`p⋄g⊏˜↩⍋g⊏«⊸∨dc⋄gr←g⊏rev # Order by non-brace bracket depth, then dots @@ -186,18 +183,24 @@ Parse ← {r‿vn‿i‿e←𝕨⋄nv←≠vn "Double subjects (missing ‿?)"_err_(G) ∧⟜«ro»⊸∨⊸aa + af>↩alm←ai⊏aa⋄al←alm/ai # aliases al # Lexical resolution (independent of parsing part 2 below) + di←/dm←»dc # Dots aren't scoped + id←/idm←(gi⊏«aa∧a)