aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xc.bqn18
1 files changed, 11 insertions, 7 deletions
diff --git a/c.bqn b/c.bqn
index d7e55e02..51e1ee71 100755
--- a/c.bqn
+++ b/c.bqn
@@ -19,6 +19,11 @@ chB←"(){}⟨⟩" ⍝ Bracket
chL←"‿" ⍝ Ligature
chQ←"'""" ⍝ Quote
+Hex←16⊥(•d∾"ABCDEF")⊸⊐
+MakeTab←{(≠chF)↑⊑¨(chF⊐𝕨)⊔𝕩}
+tab1←"|-⌈⌊√÷" MakeTab (<(Hex"10")∾1)∾˜⥊¨(Hex"99")+((↕4)∾6)
+tab2←"⊣+-×÷⌊⌈" MakeTab ⥊¨(Hex"1A")∾(Hex"A0")+↕6
+
Parse←{
⟨⟩Parse𝕩;args←𝕨⋄x←𝕩
x(/˜)↩¬(x∊chW)∨<○(⌈`↕∘≠⊸×)´(lf∾chR)=⌜x
@@ -40,20 +45,19 @@ Parse←{
f64←127-3
GenFn←{
⟨x‿na,vars,locs⟩←𝕩
- D←16⊥(•d∾"ABCDEF")⊸⊐
fns←{
n←•d⊐<𝕩
- n=≠•d:(D"20")∾vars⊐<𝕩
+ n=≠•d:(Hex"20")∾vars⊐<𝕩
n=0:8⥊0
l←2(⌊⋆⁼)n
- (D"44")∾2⊥˘⌽8‿8(⊣⥊×´⊸↑)∾⟨⥊0,(11⥊2)⊤1023+l,(2⥊˜0⌈l)⊤n⟩
+ (Hex"44")∾2⊥˘⌽8‿8(⊣⥊×´⊸↑)∾⟨⥊0,(11⥊2)⊤1023+l,(2⥊˜0⌈l)⊤n⟩
}‿{
- v←vars⊐<𝕩⋄v<≠vars:(D"22")∾v
- ((<(D"10")∾1)∾˜⥊¨(D"99")+((↕4)∾6))⊑˜"|-⌈⌊√÷"⊐<𝕩
+ v←vars⊐<𝕩⋄v<≠vars:(Hex"22")∾v
+ tab1⊑˜chF⊐<𝕩
}‿{
- (⥊¨(D"1A")∾(D"A0")+↕6)⊑˜"⊣+-×÷⌊⌈"⊐<𝕩
+ tab2⊑˜chF⊐<𝕩
}
- ((≠∾∾)⟨locs≠⊸∾f64⟩)∾(D"0B")∾˜∾na⊑⟜fns⊸{𝕎𝕩}¨x
+ ((≠∾∾)⟨locs≠⊸∾f64⟩)∾(Hex"0B")∾˜∾na⊑⟜fns⊸{𝕎𝕩}¨x
}
Gen←{