From 4329621fdf29d050af3da37fb196376b26122387 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sat, 12 Sep 2020 10:23:06 -0400 Subject: Handle string/comment opening and closing separately --- src/c.bqn | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/c.bqn b/src/c.bqn index 357a9812..4df922db 100644 --- a/src/c.bqn +++ b/src/c.bqn @@ -18,7 +18,6 @@ charSet‿cgl←(∾ ≍○< ≠¨)⟨ # #'" eliminated during tokenization ⟩ ErrUnknownChars←{ - "Unclosed quote"!¬∨´⟨''','"'⟩∊𝕩 ⟨"Unknown character","s"/˜1<≠𝕩,": ",𝕩⟩∾⊸!0 } CharCode←charSet{ @@ -32,17 +31,19 @@ charRole←((⊑bI)↑/0∾3↑cgl)∾(5/⌽↕2)∾0 spc←⥊3‿5‿6-⌜3‿0 Tokenize←{ - r←𝕩='#'⋄s←/(≠↑2⊸↓)⊸∧𝕩='''⋄d←/dm←𝕩='"' + r←𝕩='#'⋄s←/(≠↑2⊸↓)⊸∧sm←𝕩='''⋄d←/dm←𝕩='"' g←⍋q←∾⟨ s⋄¯1↓d⋄/r⟩ ⋄q↩g⊏q e← g⊏∾⟨2+s⋄ 1↓d⋄(⊢-¯1↓0∾⊢)∘⊏⟜(0∾+`r)⊸//(𝕩=lf)∾1⟩ Se←{(⊏˜𝕨)Se 1¨⌾((𝕩/𝕨)⊸⊏)𝕩}⍟{0=¯1⊑𝕩} - st←¯1↓Se⟜(1↑˜≠)∾⟜≠q⍋e⋄b←st/q∾˘e - n←≠𝕩⋄f←¬≠`bm←n↑/⁼⥊b⋄f∧↩¬qe←f∧bm∧(1↓0∾˜⊢)⊸∧dm - cb←(¬(st/q)⊏r)/b - lit←𝕩⊔˜1-˜(+`qe-˜n↑/⁼⊏˘cb)×≠`n↑/⁼⥊cb + st←¯1↓Se⟜(1↑˜≠)∾⟜≠q⍋e⋄q/˜↩st⋄e/˜↩st + n←≠𝕩⋄a←n↑/⁼q⋄b←n↑/⁼e + f←¬(≠`a∨b)∨1⌽qe←a∧(≠↑0∾⊢)⊸∧dm + qm←sm∨dm⋄a∧↩qm⋄b∧↩qm + "Unclosed quote"!¬∨´qm∧bqe)×≠`a∨b UM←(≠↑¯1∾⌈`)⊸< - lu←lit/˜UM ls←⊐lit - cl←f/n↑/⁼¯1⊏˘cb + str/˜↩UM ls←⊐str + cl←f/b c←cl-˜CharCode(⊑charSet)¨⌾(cl⊸/)f/𝕩 w←(≠↑0∾⊢)⊸