aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-08 09:45:07 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-08 09:45:07 -0400
commit3d4602bcfbdef2c5122cb94bf945dddc49eaec77 (patch)
tree0816512aaf44e9323942a241aba2ff85093e7f67 /src
parent8015bd2a2139256587db0eae93839e1b7dd51a13 (diff)
Improvements to compiler system value handling
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/c.bqn b/src/c.bqn
index de713ece..4f3d50a9 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -58,11 +58,12 @@ Tokenize←{
wk←na⌊∘÷˜(⊑bA)-˜w/t # Kind of word from first char
t-↩na×l∧t≥na+⊑bA # Case-insensitive
wi←0<wt←(2×wk≥0)(×⟜¬+⊢)w/»t=⊑bW # Type: 0 number, 1 system, 2 identifier
- i←l>n←l∧(+`w)⊏0∾¬wi # Number mask
+ i←l>n←l∧(+`w)⊏0∾¬wi # Identifier/Number masks
num←is ReadNums○(((0∾us)<∨⟜«0∾n)/0⊸∾) t×l # Numbers
ir←(us/˜«⊸<i)(⊢+∧⟜(2⊸=))wi/wk # Identifier role
- id←(2∾˜1=wi/wt)⊔(ig←1-˜(i>us)×+`w>n)⊔t # ⟨Identifiers, system values⟩
- {⟨ig⊐/𝕩,"Numbers can't start with underscores"⟩!0}⍟(∨´)(⊑bA)>⊑¨∾id
+ ws←1=wi/wt⋄ig←1-˜(i>us)×+`w>n # Identifier groups
+ {⟨𝕩/𝕨,"Numbers can't start with underscores"⟩!0}⍟(∨´⊢)⟜(ws<(⊑bA)>⊏⟜t)/(¯1»⌈`)⊸<ig
+ id←ws(¬⊸/≍○</)ig⊔t # ⟨Identifiers, system values⟩
# Deduplicate literals and identifiers; other cleanup
ki←(wt⍒⊸⊏/w)∾(ci∾/si)⊏+`»f # Indices in t