aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/c.bqn8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 4c9a9831..e6fdedfe 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -22,6 +22,7 @@ charSet←∾charGroups←⟨
# #'" eliminated during tokenization
bF‿bM‿bC‿bS‿bG‿bB‿bL‿bO‿bI‿bD‿bN‿bA‿bW←⊔/≠¨charGroups
+bA_e←4⊑bA
M←⊢(0⊸≤∧≠⊸>)-⟜⊑
vi←+´≠¨9↑charGroups
charRole←((vi-≠bI)↑/0∾≠¨3↑charGroups)∾(5/⌽↕2)∾0
@@ -59,7 +60,7 @@ ReadNum←{
Int←(n=⊑)◶⟨Nat,-·Nat 1⊸↓⟩
Dec←⊐⟜(<d)⊸(Nat∘↑ + ·(0<≠)◶⟨0,Nat÷10⋆≠⟩+⟜1⊸↓)
Pos←(⊑p‿i⊐⊏)◶⟨π,∞,Dec⟩
- e←⊑𝕩⊐charSet⊐<'e'
+ e←⊑𝕩⊐bA_e
m←(n=⊑)◶⟨Pos,-·Pos 1⊸↓⟩e↑𝕩
𝕩×⟜(10⋆·Int(e+1)↓⊣)˜⍟(e<≠𝕩)m
}
@@ -87,6 +88,7 @@ Parse ← {nv‿r←𝕨
FC←-⟜(≠↑0∾⊢)(c∾1)/·+`∾⟜0
H←0<1↓·FC𝕩 M (5⊑bI)+⊢
ft←0∾(H↕3)+2×(H⥊3)⌈2×H⥊4
+ fsc←ft⊏spc
r↩((1↓ft)⊏(1+2⊸≤)⊸/↕4)⌾(b⊸⊏)rev⊏r
id←/idm←(0⊸≤∧<⟜nv)xv←𝕩-vi⋄idx←id⊏𝕩⋄sp←/𝕩 M bI
@@ -113,7 +115,7 @@ Parse ← {nv‿r←𝕨
ig←⍋(⊏⟜(¯1∾c/gf)∾d⊸/⊏((≠𝕩)∾b⊏gf)˜)id⊏fi
ig↩<⟜(≠id)⊸/(⍋+`∘⊏⟜(d∾-/˜d))⊸⊏(⍋⊏⟜(∾⟜(d⊸/)idx))⊸⊏ig
ui←d(⌈`↕∘≠⊸×)⊸⊏⌾(ig⊸⊏)id
- ii←(ui⊏(fi⊏ft⊏spc)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv
+ ii←(ui⊏(fi⊏fsc)-(⌈`c⊸×)⊸¬+`dec)∾((sp⊏fi)⊏3×2|ft)++⟜(0⊸≤)2+sp⊏xv
idor←∾3⥊<is←id∾sp
idbc←⟨21+is⊏asn,(id-○(⊏⟜fd)ui)∾0¨sp,ii⟩
@@ -121,7 +123,7 @@ Parse ← {nv‿r←𝕨
or←⍋idor∾g⊏˜∾⟨cn,cn,b,b,rt,dr,l,l,si,si,at,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩
bc0←∾idbc∾⟨0¨cn,u⊐ob,15¨b,1+↕≠b⟩
bc←or⊏bc0∾∾⟨25¨rt,14¨dr,3+l⊏aa,ll,3+si⊏aa,sll,(11-⊑bG)+a/ma+𝕩,5+oa⊏r,(⊢+9×10⊸=)16+dy-7×fa⊏tr⟩
- fs←(ft⊏⥊3≍⌜⟜⌽○↕2)∾¨((+`0∾1+⌊128⋆⁼1⌈bc)⊏˜/1∾or∊bc0+⟜↕○≠rt)≍○<¨lc+ft⊏spc
+ fs←(ft⊏⥊3≍⌜⟜⌽○↕2)∾¨((+`0∾1+⌊128⋆⁼1⌈bc)⊏˜/1∾or∊bc0+⟜↕○≠rt)≍○<¨lc+fsc
⟨LEBv bc∾25,u,fs⟩
}