From 6f2d2e6c57d24fc4445d0feb6233aa37f614e8b7 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 16 Sep 2020 22:57:56 -0400 Subject: Handle all deduplication together; move number evaluation into the tokenizer --- src/c.bqn | 28 ++++++++++++++-------------- wc.bqn | 8 ++++---- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/c.bqn b/src/c.bqn index 4c0907d3..2bff6d27 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -42,23 +42,23 @@ Tokenize←{ u←f∧𝕩='@'⋄ci←/u∨»a∧sm chr←(ci⊏𝕩)-(ci⊏u)×'@'-@ str←1↓¨𝕩⊔˜1-˜(+`si←dm∧a>qe)×≠`dm∧a∨b - lv←chr(⊣∾(1+¯1⌈´⊣)+⊢)○⊐str - lit←lv(⊢>¯1»⌈`)⊸/chr∾str - li←(ci∾/si)⊏+`»f c←CharCode f/𝕩 - w←»⊸¯1»⌈`)is←⊐id⋄ie←vi+≠in←0>iu⊏ti - ti↩(us/˜«⊸in←l∧(+`w)⊏0∾tw<0 + num←ReadNum¨¬⊸(+`⊸×-⊣)∘×⊸⊔ in∨⟜»⊸/c×l + ti←(us/˜«⊸us)×+`w>in)⊔c + ki←((⍋⊏⟜in)⊸⊏/w)∾(ci∾/si)⊏+`»f - c↩(w∨¬l∨c M bW)/(vi+is⊏⍋⍋in)⌾(w⊸/)(ie+lv)⌾(li⊸⊏)c + k←id‿num‿chr‿str⋄k(⊢>¯1»⌈`)⊸/¨˜↩j←⊐¨k + c↩(w∨¬l∨c M bW)/(∾j++`vi»≠¨k)⌾(ki⊸⊏)c c/˜↩¬(1»(c∊2‿4+⊑bB)∨⊢)⊸∧c M bS⋄c/˜↩¬(1«c∊3‿5+⊑bB)∧c M bS - ic←(vi⊸≤∧<⟜ie)c⋄t←ti⌾(ic⊸/)(vi⌊c)⊏charRole + t←ti⌾((c M vi∾≠⊑k)⊸/)(vi⌊c)⊏charRole c+↩5×c M 5≍˜⊑bI - ⟨c,t,+´¬in,(in/iu)⊏id,lit⟩ + ⟨c,t,≠⊑k,∾1↓k⟩ } ReadNum←{ @@ -149,8 +149,8 @@ Parse ← {nv‿r←𝕨 } Compile←{ - ⟨t,r,nVar,nums,strs⟩←Tokenize𝕩 + ⟨t,r,nVar,const⟩←Tokenize𝕩 ⟨bc,u,blk⟩←nVar‿r Parse t - o←(u-(vi+nVar-≠𝕨)×u≥vi)⊏∾⟨𝕨,ReadNum¨nums,strs⟩ + o←(u-(vi+nVar-≠𝕨)×u≥vi)⊏𝕨∾const ⟨bc,o,blk⟩ } diff --git a/wc.bqn b/wc.bqn index b270c5d8..b99ce059 100644 --- a/wc.bqn +++ b/wc.bqn @@ -2,8 +2,8 @@ # WebAssembly backend (very incomplete) -i←"⟨cgl,charSet,Tokenize,ReadNum⟩" -⟨cgl,charSet,Tokenize,ReadNum⟩ ← ⟨•path∾"src/c.bqn",i⟩ •EX •path∾"dzref" +i←"⟨cgl,charSet,Tokenize⟩" +⟨cgl,charSet,Tokenize⟩ ← ⟨•path∾"src/c.bqn",i⟩ •EX •path∾"dzref" chF←(⊑cgl)↑charSet bF‿bM‿bC‿bS‿bG‿bB‿bL‿bO‿bI‿bU‿bD‿bN‿bA‿bW←≍¨˜⟜(+`≠↑0∾⊢)cgl M←1⊸⊑(0⊸≤∧>)-⟜⊑ @@ -47,7 +47,7 @@ fntab←⍉(0¨tab1)∾tab1≍tab2 f64←127-3 GenFn←{ - ⟨t,r,nVar,lits,strs⟩←Tokenize𝕩 + ⟨t,r,nVar,lits⟩←Tokenize𝕩 nLoc←nVar-𝕨⊢0 t⊏˜↩⍋+`-˝(2‿3+⊑bB)=⌜t nd←+´c←t=3+⊑bB @@ -56,7 +56,7 @@ GenFn←{ ops←⥊∾⟨ ∾⟜(0⥊˜3∾˜vi-≠)fntab ⍉(Hex¨"20"‿"22"‿"21")∾⌜↕nVar - ⊣⌜⟜(↕3)(GenF64∘ReadNum¨lits)∾(Hex"10")∾¨3+↕nd + ⊣⌜⟜(↕3)(GenF64¨lits)∾(Hex"10")∾¨3+↕nd ⟩ (((≠∾∾)⟨nLoc∾f64⟩)∾(Hex"0B")∾˜∾)¨((⊢-˜¬×+`)a=2+⊑bB)⊔(na+3×a)⊏ops } -- cgit v1.2.3