aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-12 10:39:17 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-12 10:39:17 -0400
commit86b05c92e6bf1277783ff31b5f8da4cb57600feb (patch)
treebd2233c65f2dd1647f0b23797fefcfce9073f942
parent35f56ebecb316bbbc07ee5b2cd60730c3b6976df (diff)
Multi-character identifiers
-rwxr-xr-xc.bqn17
-rw-r--r--test/cases.bqn2
2 files changed, 11 insertions, 8 deletions
diff --git a/c.bqn b/c.bqn
index c422d4fd..86f0e854 100755
--- a/c.bqn
+++ b/c.bqn
@@ -7,8 +7,7 @@ charSet←∾charGroups←⟨
"⍝" ⍝ Remark
•d ⍝ +⟜(↕10)⌾•UCS'0' ⍝ Digit
"¯.π∞" ⍝ Numeric
- ' '(⊢∾+)⌾•UCS•a ⍝ Alphabetic
- "_" ⍝ Underscore
+ "_"∾' '(⊢∾+)⌾•UCS•a ⍝ Alphabetic
chF←"+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔" ⍝ Function
"˜˘¨⌜⁼´`" ⍝ Modifier
"∘○⊸⟜⌾⎉⚇⍟" ⍝ Composition
@@ -20,7 +19,7 @@ charSet←∾charGroups←⟨
"‿" ⍝ Ligature
"'""" ⍝ Quote
-bR‿bD‿bN‿bA‿bU‿bF‿bM‿bC‿bP‿bW‿bS‿bG‿bB‿bL‿bQ←↕∘≠⌾∾charGroups
+bR‿bD‿bN‿bA‿bF‿bM‿bC‿bP‿bW‿bS‿bG‿bB‿bL‿bQ←↕∘≠⌾∾charGroups
Hex←16⊥(•d∾"ABCDEF")⊸⊐
MakeTab←{{(≠chF)↑⊑¨(chF⊐𝕨)⊔𝕩}○∾⟜(⥊¨∘⥊¨)´⍉(2(÷˜∾⊣)≢)⊸⥊𝕩}
@@ -35,10 +34,14 @@ tab2←MakeTab⟨
Parse←{
- ⟨⟩Parse𝕩;args←charSet⊐𝕨⋄x←charSet⊐𝕩
- x(/˜)↩¬(x∊bW)∨<○(⌈`↕∘≠⊸×)´((⊑bS)∾bR)=⌜x
+ ⟨⟩Parse𝕩;args←charSet⊸⊐¨𝕨⋄x←charSet⊐𝕩
+ x(/˜)↩¬<○(⌈`↕∘≠⊸×)´((⊑bS)∾bR)=⌜x
+ w←(<´≠↕0∾⊢)wc←x∊bA
+ id←∪ids←(1-˜wc×+`w)⊔x
+ vi←≠charSet⋄vars←vi+↕≠id⋄args↩vi+id⊐args
+ x↩(w∨¬wc∨x∊bW)/(vi+id⊐ids)⌾(w⊸/)x
x(/˜)↩¬(1⌾⊑1⌽1⌾⊑)⊸∧x∊bS
- a←x∊(2↑bG)⋄at←1⌽a⋄vars←at/x⋄x(/˜)↩¬a⋄a(/˜)↩¬at
+ a←x∊(2↑bG)⋄at←1⌽a⋄x(/˜)↩¬a⋄a(/˜)↩¬at
l←≠x⋄sep←x∊bS⋄x↩(bF⊑˜chF⊐<'⊣')¨⌾(sep⊸/)x
o←x=0⊑bB⋄c←x=1⊑bB⋄v←a-˜x∊bD∾args∾vars⋄f←¬o∨c∨v∨sep
na←(2×sep)+f×1+l↑0∾c∨v
@@ -88,6 +91,6 @@ Gen←{
Compile←{
body←GenFn∘Parse 𝕩
- rcp←"x" GenFn∘Parse "1÷x"
+ rcp←⟨"x"⟩ GenFn∘Parse "1÷x"
Gen ⟨⟨0‿1,1‿1⟩/¨¨f64 ⋄ ⥊<"fn" ⋄ ⟨body,rcp⟩⟩
}
diff --git a/test/cases.bqn b/test/cases.bqn
index 50a8e6f7..cd7774c8 100644
--- a/test/cases.bqn
+++ b/test/cases.bqn
@@ -3,7 +3,7 @@
-1 % -2⌊1
1 % (÷2)+(÷3)+(÷6)
4 % ⊢4⊣5
-0 % s←√5,⌊9×|5-s×s
+0 % sq←√5,⌊9×|5-sq×sq
-0.5 % ((-3)+√(3×3)-4×2×1)÷2×2
-0.5 % a←2,b←3,c←1⋄((-b)+√(b×b)-4×a×c)÷2×a
-0.5 % b←1+a←1+c←1⋄((-b)+√(b×b)-4×a×c)÷2×a