aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-25 16:45:42 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-25 16:56:09 -0400
commit25918eb8c6463af4726f60e99ce8371ce6bcf15b (patch)
tree56a3a1ce0b986bb32c0dd2d174ead46baaca54be /src
parent01acb6a8f130c07b2c042aacf32c1f1b15fa30a9 (diff)
Avoid redoing work to adjust block start indices for LEB128
Diffstat (limited to 'src')
-rw-r--r--src/c.bqn16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/c.bqn b/src/c.bqn
index 04e41112..b97bf887 100644
--- a/src/c.bqn
+++ b/src/c.bqn
@@ -83,11 +83,12 @@ ReadNums←{
}
-LEBv ← {
+LEB←{
b←128
- l←⌊b⋆⁼1⌈𝕩
- o←⍋⍋((↕¯1⊑⊢)-/⟜»)⟜(+`)1+l
- o⊏l{f←×𝕨⋄(𝕨-1)(b⊸(×⟜f+|)∾𝕊⟜(⌊÷⟜b)○(f⊸/))⍟(∨´f)𝕩}𝕩
+ s←+`»i←1+l←⌊b⋆⁼1⌈𝕩
+ o←⍋⍋↕∘≠⊸-i/s
+ v←o⊏l{f←×𝕨⋄(𝕨-1)(b⊸(×⟜f+|)∾𝕊⟜(⌊÷⟜b)○(f⊸/))⍟(∨´f)𝕩}𝕩
+ v‿s
}
ErrMismatchedBrackets←{
@@ -152,9 +153,10 @@ Parse ← {nv‿r←𝕨
b⊏↩gi
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 M bc0≍○≠rt)≍○<¨lc+fsc
- ⟨LEBv bc∾25,u,fs⟩
+ 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⟩
+ bcl‿el←LEB bc∾25
+ fs←(ft⊏⥊3≍⌜⟜⌽○↕2)∾¨(el/˜1∾or M bc0≍○≠rt)≍¨lc+fsc
+ ⟨bcl,u,fs⟩
}
Compile←{