From 4f28cc8da705d4f4ed21ccd333686f133e628d9b Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sat, 10 Oct 2020 15:46:08 -0400 Subject: Simplify lexical lookup preprocessing and check that modules are immediately destructured --- src/c.bqn | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn index 807e763a..58af5139 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -134,29 +134,23 @@ Parse ← {r‿nv←𝕨 ir⌈↩(IT¬pt∧ir=0)((⊏-⊢)⟜(+`¬pp)(⊢⌊1⌈+)⊏)ir r+↩pt×»ir - id←/idm←(0⊸≤∧<⟜nv)xv←𝕩-vi⋄idx←id⊏𝕩⋄sp←/𝕩 M bI - ac←𝕩(IT∘M⊏-⟜⊑-(rev⊏¯4=r)˙)bG + idx←𝕩⊏˜id←/idm←(0⊸≤∧<⟜nv)xv←𝕩-vi⋄sp←/𝕩 M bI g↩⍋+`rev⊏p-br⋄gr←g⊏rev⋄sll←1+2÷˜0(<-○/>)gr⊏sr-sl⋄l←/g⊏𝕩=5+⊑bB g⊏˜↩gs←⍋gr⊏sl⋄gr↩g⊏rev⋄gi←⍋g 𝕩⊏˜↩g⋄r⊏˜↩gr⋄ir⊏˜↩gr⋄si←/gr⊏sr>sl⋄l⊏↩⍋gs + ni←(1↓nf)/bk←b⊏gi + "Modules must be immediately assigned" ! (0<≠)◶1‿(r≠⊸>⟜(2+⌈´)◶0‿(∧´∘⥊¯3‿0‿¯1=∾⟜¯1⊏˜(1+↕3)+⌜⊢)⊢)ni + "Modules must be destructured" ! ¬∨´(⊏⟜idm>⊏⟜rev⊏sr˙)(ni+2)⊏g a←r≤¯3⋄ps←a∨|)ps(⊢-T)+`¬ro - fa←/(ta∨ro∨«⊸∨aa)<(r=1)∨»op - dy←fa⊏«(𝕩=⊑bO)<(tr∧r≥0)∨roax←ac<0⋄ix←id⊏ax + d←id⊏dec←idm∧(1⊸<∧<⟜4)ac⋄ix←id⊏ax←ac=1 ixf←((ix+⊏⟜(¯1∾c/gf))∾d⊸/⊏((≠𝕩)∾b⊏gf)˜)id⊏fi ig←(⍋⊏⟜(ixx←∾⟜(d⊸/)idx))⊸⊏⍋ixf "Multiple definitions" ! 1∧´ixx∨○(»⊸≠((≠id)⊸≤⊸/ig)⊏⊢)ixf @@ -166,11 +160,19 @@ Parse ← {r‿nv←𝕨 lc←(1«c)/dn←c(⊢-T)+`dec ii←(ui⊏(fi⊏fsc)+dn-1)∾((sp⊏fi)⊏3×fx)++⟜(0⊸≤)2+sp⊏xv idor←∾3⥊∨|)ps(⊢-T)+`¬ro + fa←/(ta∨ro∨«⊸∨aa)<(r=1)∨»op + dy←fa⊏«(𝕩=⊑bO)<(tr∧r≥0)∨ro