aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn19
1 files changed, 10 insertions, 9 deletions
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∧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←{