From 70eb691d6e2aa099536f267a1e87de12b94b31cf Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 17 Aug 2020 17:44:10 -0400 Subject: Check for unknown characters (including unclosed quotes) --- src/c.bqn | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') 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∾⊢)⊸