aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-17 21:38:52 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-17 22:10:18 -0400
commit37597898e329c2f6928a61c089f5b27a97e53b86 (patch)
tree455c8cdbb3ed0c6640de38f43bb5fc9586a3f6e8
parent44eb5cc1bba34cf1bd908fc8f2d156069c936955 (diff)
Refactor identifier handling to use only one ⍷⊸⊐ lookup
-rw-r--r--src/c.bqn15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 11766529..0787160f 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -49,18 +49,17 @@ Tokenize←{
c←CharCode⌾((¬cl)⊸/) f/𝕩
w←(≠↑0∾⊢)⊸<l←c M (⊑bD)≍+´1⊑¨bD‿bN‿bA
- i←(1-˜l×+`w)⊔c
- na←≠alph⋄us←¯1++´bA
+ na←≠alph⋄us←c=¯1++´bA
+ id←(1-˜(us<l)×+`w)⊔na(⊢-⊣×+⟜(⊑bA)⊸≤)c
ti←na⌊∘÷˜(⊑bA)-˜w/c
- in←na(⊢-⊣×+⟜(⊑bA)⊸≤)us⊸≠⊸/¨i
- iu←∊in⋄nv←+´iv←0≤iu/ti⋄id←iv⍒⊸⊏iu/in
- ti↩(us=c/˜(1↓0∾˜⊢)⊸<l)(⊢+∧⟜(2⊸=))0⌈ti
+ iu←(≠↑¯1∾⌈`)⊸<is←⍷⊸⊐id⋄ni←≠in←0>iu/ti
+ ti↩(us/˜(1↓0∾˜⊢)⊸<l)(⊢+∧⟜(2⊸=))0⌈ti
- c↩(w∨¬l∨c M bW)/(vi+id⊐in)⌾(w⊸/)(vi+(≠id)+lu⊐lit)⌾(cl⊸/)c
+ c↩(w∨¬l∨c M bW)/(vi+is⊏⍋⍋in)⌾(w⊸/)(vi+ni+lu⊐lit)⌾(cl⊸/)c
c/˜↩¬(≠↑1∾(c∊2‿4+⊑bB)∨⊢)⊸∧c M bS⋄c/˜↩¬(1↓1∾˜c∊3‿5+⊑bB)∧c M bS
- ic←(0⊸≤∧<⟜(≠id))c-vi⋄t←ti⌾(ic⊸/)(vi⌊c)⊏charRole
+ ic←(0⊸≤∧<⟜ni)c-vi⋄t←ti⌾(ic⊸/)(vi⌊c)⊏charRole
c+↩5×c M 5≍˜⊑bI
- ⟨c,t,nv,(nv↓id)∾lu⟩
+ ⟨c,t,+´¬in,((in//iu)⊏id)∾lu⟩
}
ReadNum←{