aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-17 17:44:10 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-17 17:44:10 -0400
commit70eb691d6e2aa099536f267a1e87de12b94b31cf (patch)
tree11826ee652fac4f6025d9641b4d132de90ecbb03 /src
parent11e1818ce71794546004413b5427c4ad42c605cb (diff)
Check for unknown characters (including unclosed quotes)
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 81520297..47eb9d44 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -21,7 +21,14 @@ charGroups←⟨
" "∾tab # Whitespace
# #'" eliminated during tokenization
-CharCode←(∾charGroups){g←⍋𝕗⋄g⊏˜1-˜(g⊏𝕗)⍋⊢}
+ErrUnknownChars←{
+ "Unclosed quote"!¬∨´⟨''','"'⟩∊𝕩
+ ⟨"Unknown character","s"/˜1<≠𝕩,": ",𝕩⟩∾⊸!0
+}
+CharCode←(∾charGroups){
+ Chk ← ⊢⊣ErrUnknownChars∘(≠/⊣)⍟≢⟜(⊏⟜𝕗)
+ g←⍋𝕗 ⋄ ⊢ Chk g⊏˜1-˜1⌈(g⊏𝕗)⍋⊢
+}
bF‿bM‿bC‿bS‿bG‿bB‿bL‿bO‿bI‿bD‿bN‿bA‿bW←≍¨˜⟜(+`≠↑0∾⊢)≠¨charGroups
bA_e←4+⊑bA
M←1⊸⊑(0⊸≤∧>)-⟜⊑
@@ -40,7 +47,7 @@ Tokenize←{
lu←⍷lit←𝕩⊔˜1-˜(+`ToI⊑˘cb)×≠`ToI cb
cl←f/ToI⊑∘⌽˘cb
- c←CharCode f/𝕩
+ c←CharCode⌾((¬cl)⊸/) f/𝕩
w←(≠↑0∾⊢)⊸<l←c M (⊑bD)≍+´1⊑¨bD‿bN‿bA
i←(1-˜l×+`w)⊔c
na←≠alph⋄us←¯1++´bA