aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-11 14:29:41 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-07-11 14:37:10 -0400
commit1ac8cd54ced31af3f69d0b0dbd9a026cf86792c6 (patch)
tree72a5eb246c570cf33e76079f1588033104ef886a
parent377a1306f8dc9f9b85d4e16a14eec49b7a162891 (diff)
Propagate function roles before expression reversing and handle parenthesized right operands
-rwxr-xr-xdc.bqn12
1 files changed, 6 insertions, 6 deletions
diff --git a/dc.bqn b/dc.bqn
index f4066ed2..1b45ea52 100755
--- a/dc.bqn
+++ b/dc.bqn
@@ -127,7 +127,7 @@ Compile←{
# Targetting dzaima/BQN bytecode:
RevE←{
- g←⍋+`𝕨⋄q←g⊏𝕨⋄b←q>0⋄e←q<0
+ p‿g←𝕨⋄q←g⊏p⋄b←q>0⋄e←q<0
l←1+-⟜(b/g)⌾(e/⊢)e×g
ps←b∨g⊏(𝕩∊bS)
sl←-⟜(≠↑0∾⊢)(ps∾1)/+`l∾1
@@ -135,11 +135,11 @@ RevE←{
⍋+`(¯1↓⍋0∾1+g)⊏1+(1(∾+○PL∾˜)ps)-1(∾+∾˜)l
}
DParse ← {nv‿r𝕊𝕩:
- p←bB(⊣(≠⊸>ׯ1⋆2|⊢)⊐)𝕩
- rev←p RevE𝕩⋄𝕩⊏˜↩rev⋄r⊏˜↩rev⋄p⊏˜↩rev
- xf←⌽(¬𝕩=0⊑bB)=○(⌈`(1+↕∘≠)⊸×)○⌽(¯1⌽2≤r)∨1≤r
- g←⍋+`p⋄𝕩⊏˜↩g⋄r⊏˜↩g⋄p⊏˜↩g
- v←𝕩≥vi⋄a←𝕩∊2↑bG⋄op←r≥2⋄f←(¯1↓0∾1+g)⊏xf∾0
+ g←⍋+`p←bB(⊣(≠⊸>ׯ1⋆2|⊢)⊐)𝕩
+ f←(𝕩≠1⊑bB)(∨=○(⌈`(1+↕∘≠)⊸×)⊢)(¯1⊸⌽⌾(g⊸⊏)3=r)∨1≤r
+ rev←p‿g RevE𝕩⋄g↩⍋+`rev⊏p
+ gr←g⊏rev⋄𝕩⊏˜↩gr⋄r⊏˜↩gr⋄p⊏˜↩gr⋄f⊏˜↩gr
+ v←𝕩≥vi⋄a←𝕩∊2↑bG⋄op←r≥2
s←𝕩∊bS⋄o←p>0⋄ps←s∨o⋄lc←𝕩=5⊑bB
tr←(⌈`↕∘≠⊸ׯ1⌽ps)⊏f
tf←tr∧2(|<≤)ps(⊢-⌈`∘×)+`¬op