aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xc.bqn16
-rw-r--r--test/bcases.bqn4
-rwxr-xr-xtest/bt2
-rwxr-xr-xtest/cmpref.bqn2
4 files changed, 15 insertions, 9 deletions
diff --git a/c.bqn b/c.bqn
index 838da723..45286af3 100755
--- a/c.bqn
+++ b/c.bqn
@@ -169,13 +169,15 @@ DParse ← {nv‿r𝕊𝕩:
g↩⍋+`rev⊏p-br⋄gr←g⊏rev⋄sll←1+2÷˜0(<-○/>)gr⊏sr-sl⋄l←/g⊏𝕩=5⊑bB
g⊏˜↩gs←⍋gr⊏sl⋄gr↩g⊏rev⋄𝕩⊏˜↩g⋄r⊏˜↩g⋄o⊏˜↩gr⋄si←/gr⊏sr>sl
gi←⍋g⋄b⊏↩gi⋄l⊏↩⍋gs
- asn←¯1⌽+`gi⊏-⟜(≠↑0∾⊢)𝕩∊bG⋄r↩¯2¨⌾((g⊏asn)⊸/)r
s←𝕩∊bS⋄ps←s∨o∨gr⊏sl⋄a←𝕩∊2↑bG
- r-↩ps∨a⋄op←r≥2⋄ro←op∨1⌽r=3
- tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏ro∨r≥1
+ r-↩ps∨a⋄op←r≥2⋄fe←(r≥1)∨1⌽r=3
+ tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏fe
+ ma←tr<(𝕩=1⊑bG)∧1⌽fe
+ ro←op∨a<1⌽r=3⋄os←⌽↕∘≠⊸(⊣-⌈`∘×)⌽¬ro∨ma⋄at←(⊢+1+⊏⟜os)/a
+ aa←g⊏asn←¯1⌽+`gi⊏-⟜(≠↑0∾⊢)(↕≠𝕩)∊at-1⋄r↩¯1¨⌾(aa⊸/)r
tf←(a≤○(⌈`(1+↕∘≠)⊸×)ps)∧(⊢∧2(|<≤)ps(⊢-⌈`∘×)+`)¬ro
- opa←op>1↓0∾˜ps∨a⋄os←⌽↕∘≠⊸(⊣-⌈`∘×)⌽¬ro
- oa←⌽/opa⋄fa←/(tf∨¬tr)∧(ro∧1⌽opa)<(r=1)∨op<¯1⌽opa
+ opa←op>1↓0∾˜ps∨a
+ oa←⌽/opa⋄fa←/(1⌽aa)<(tf∨¬tr)∧(ro∧1⌽opa)<(r=1)∨op<¯1⌽opa
dy←fa⊏1↓0∾˜(𝕩≠⊑bO)∧(tr∧r≥0)∨ro<r=0
n←𝕩≥vi+nv⋄cn←/n∨𝕩≤¯1⊑bC⋄u←⍷ob←cn⊏𝕩
lo←(o/𝕩)=4⊑bB⋄ll←1+lo/1(↓--⊸↓)(o∾1)/+`(s∾0)-(1∾o)∧ps∾1
@@ -189,9 +191,9 @@ DParse ← {nv‿r𝕊𝕩:
idor←∾3⥊<is←id∾sp
idbc←⟨21+is⊏asn,(id-○(⊏⟜fd)ui)∾0¨sp,ii⟩
- or←⍋idor∾g⊏˜∾⟨cn,cn,b,b,rt,dr,l,l,si,si,1+/a,oa+1⌈oa⊏os,(dy×⊏⟜os)⊸+fa+dy⟩
+ 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+¯2=l⊏r,ll,3+¯2=si⊏r,sll,(11-⊑bG)+a/𝕩,5+oa⊏r,16+dy-7×fa⊏tr⟩
+ bc←or⊏bc0∾∾⟨25¨rt,14¨dr,3+l⊏aa,ll,3+si⊏aa,sll,(11-⊑bG)+a/ma+𝕩,5+oa⊏r,16+dy-7×fa⊏tr⟩
fs←(ft⊏⥊"fmd"≍⌜⌽↕2)∾¨((+`0∾1+⌊128⋆⁼1⌈bc)⊏˜/1∾or∊bc0+⟜↕○≠rt)≍○<¨(ft⊏spd)∾⟜(⥊¨↑⟜•a)¨lc
⟨LEBv bc,u,fs⟩
}
diff --git a/test/bcases.bqn b/test/bcases.bqn
index 1b7dfbc6..3f62caba 100644
--- a/test/bcases.bqn
+++ b/test/bcases.bqn
@@ -37,3 +37,7 @@
9 % _m←˜⋄{mm←𝕩⋄×_mm 3}m
-2 % F←{-𝕩}⋄{F 2}
2 % c‿d←2+⟨a,b⟩←↕2⋄⟨b‿c,a⟩↩⟨4⋄5⟩‿6⋄(b×c)-d×a
+3 % x←4⋄x-↩1⋄x
+5 % x←2⋄x-˜↩7⋄x
+2 % a‿b←2‿0⋄a‿b+↩2⋄a÷b
+-7 % x‿y←3‿4⋄x+⍟2˜↩2⋄Y↩-⋄Y x
diff --git a/test/bt b/test/bt
index c5ca1399..373bb5f0 100755
--- a/test/bt
+++ b/test/bt
@@ -2,7 +2,7 @@
dRun ← ⟨"dRun"⟩ •EX •path∾"../cshim.bqn"
c ← ∾(•LNS •path∾∾⟜"cases.bqn")¨""‿"b"
-{ c ∾↩ (¬"{"⊑∘∊⊢)¨⊸/ "1 %"⊸∾¨ (3≤≠)◶0‿(('#'≠2⊸⊑)∧" "≡2⊸↑)¨⊸/ •LNS •path∾"testref.bqn" }⍟⊢(<"-ref")∊•args
+{ c ∾↩ (¬":"⊑∘∊⊢)¨⊸/ "1 %"⊸∾¨ (3≤≠)◶0‿(('#'≠2⊸⊑)∧" "≡2⊸↑)¨⊸/ •LNS •path∾"testref.bqn" }⍟⊢(<"-ref")∊•args
M ← {e‿b: (⍎e)⊸≢◶""‿{(•UCS 10)∾˜""""∾b∾""": expected "∾e∾" but received "∾⍕𝕩} DRun b}
r ← '%' M∘((+`-2⊸×)∘=⊔⊢)¨ c
• ← ("All "∾(⍕≠c)∾" passed!")⍟(0=≠) ∾r
diff --git a/test/cmpref.bqn b/test/cmpref.bqn
index fb02a664..029af28c 100755
--- a/test/cmpref.bqn
+++ b/test/cmpref.bqn
@@ -53,6 +53,6 @@ E_redef ← { # handles [fmd] [←↩]
}
pre ∾↩ E_isdef◶E_proc‿E_redef¨ impl
-t ← (¬∘⊑'{'∊⊢)¨⊸/ 3⊸↓⌾(3⊸⊑) •LNS •path∾"testref.bqn"
+t ← (¬∘⊑':'∊⊢)¨⊸/ 3⊸↓⌾(3⊸⊑) •LNS •path∾"testref.bqn"
res ← DRun ∾ ∾⟜(•UCS 10)¨ pre ∾ E_proc¨ t
• ← ("All "∾(⍕≠res)∾" passed!")⍟(0=≠) /res