diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-09-12 10:23:06 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2020-09-12 10:23:06 -0400 |
| commit | 4329621fdf29d050af3da37fb196376b26122387 (patch) | |
| tree | 167e565204509c9bba4d5290ece87dfd84120b43 | |
| parent | 3e8acef07854811faf08576b46b9d59267e7f019 (diff) | |
Handle string/comment opening and closing separately
| -rw-r--r-- | src/c.bqn | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -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∧b<f + str←𝕩⊔˜1-˜(+`a>qe)×≠`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∾⊢)⊸<l←c M (⊑bD)≍+´1⊑¨bD‿bN‿bA @@ -57,7 +58,7 @@ Tokenize←{ c/˜↩¬(≠↑1∾(c∊2‿4+⊑bB)∨⊢)⊸∧c M bS⋄c/˜↩¬(1↓1∾˜c∊3‿5+⊑bB)∧c M bS ic←(vi⊸≤∧<⟜ie)c⋄t←ti⌾(ic⊸/)(vi⌊c)⊏charRole c+↩5×c M 5≍˜⊑bI - ⟨c,t,+´¬in,(in/iu)⊏id,lu⟩ + ⟨c,t,+´¬in,(in/iu)⊏id,str⟩ } ReadNum←{ |
