1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#! /usr/bin/env dbqn
# dzaima/BQN block headers have a different format to account for
# multiple bodies, and use variable names instead of counts.
# Rearrange and make up some names so the bytecode can be run.
compile β β’Import "src/c.bqn"
prims β (β’Import "dzref"){π½} "β¨
+,-,Γ,Γ·,β,β,β,β,|,Β¬,β§,β¨,<,>,β ,=,β€,β₯,β‘,β’,β£,β’,β₯,βΎ,β,β,β,β,Β«,Β»,β½,β,/,β,β,β,β,β,β,β,β·,β,!
Λ,Λ,Λ,Β¨,β,βΌ,Β΄,Λ,`
β,β,βΈ,β,βΎ,β,βΆ,β,β,β
β©"
specialβ<ΛββΏ2β₯"π€π©π¨π£ππ"
DCompileβ{
β¨bc,o,fblk,indβ© β 4 β (π¨β£prims) Compile π©
blkβΏbdy β <Λβ>(ββ fblk){
β¨t,i,l,nβ©βπ©
sβ(3Γi)β(tβ3βΏ5βΏ6)βspecial
β¨β¨t,i,π¨,π¨β© β β¨l, sβΎβ₯Β¨'a'+βn-β sβ©β©
}Β¨fblk
β¨bc,o,blk,βblk,bdy,βind,1βind,π©β©
}
DRunββ’COMPβDCompile
|