uCBQN/cc.bqn
2021-04-22 22:05:53 +03:00

53 lines
2.4 KiB
BQN
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#! /usr/bin/env dbqn
# Modified version of https://github.com/mlochbaum/BQN/blob/master/src/cjs.bqn, which is under the ISC license (https://github.com/mlochbaum/BQN/blob/master/LICENSE)
args•args
"Usage: ./cc.bqn path/to/mlochbaum/BQN <one of [rcfe] or an expression>"!2args
return 1args
args˜ return
path(args)"/src/"
args˜1
L {"m_caB(" (𝕩)",(B[]){" (1","¨𝕩)"})"}
LI {"m_cai32("(𝕩)",(i32[]){"(1","¨𝕩)"})"}
# Escape the special characters that appear in BQN sources.
Esc{
in (@+091013)"'""" # Null, Tab, LF, CR, and quotes
out "0tnr" # Whitespace characters changed to letters
i in𝕩
𝕩 i out((i<out)/) 𝕩 # Replace
(i<in) /"\"¨ 𝕩 # Insert \
}
Str "m_str32(U"""Esc""")"˙ # A BQN string
Char {"m_c32(U'"(Esc𝕩)"')"} # A BQN character
Num {s"-"/˜𝕩<0 =|"m_f64("")"˜s| "m_f64("s"1.0/0.0)"𝕩} # Format number
F # Format number
Import {𝕨•Import path𝕩}
FChars {𝕨•FChars path𝕩}
FLines {𝕨•FLines path𝕩}
glyphs Import "glyphs.bqn"
compile glyphs Import "c.bqn"
useInd "-i"args args˜useInd
Comp (3+useInd) ((<"inc(runtime[""])"˙)¨62)Compile
J \n¨
Fconst @NumChar, Str,
prov {"inc("𝕩")"}¨"bi_type""bi_fill""bi_log""bi_grLen""bi_grOrd""bi_asrt""bi_add""bi_sub""bi_mul""bi_div""bi_pow""bi_floor""bi_eq""bi_le""bi_fne""bi_shape""bi_pick""bi_ud""bi_tbl""bi_scan""bi_fillBy""bi_val""bi_catch"
Fout {((𝕩)LI F¨,L ·prov(𝕨0) Fconst¨,L (LI F¨)¨,L (L F¨)¨) {𝕎𝕩}¨ 𝕩}
Frun 1Fout
Long {¯2𝕩¨<","\n}
LFC LongFoutComp
CArg {J (¯5𝕩˙) FLines "c.bqn"}
•Out(¬return) ("r""c""cc""f""e""p")
{𝕩reflenImport "pr.bqn"Long Frun len(1)Comp ref}
{𝕩LFC CArg "⟨""⟩"«","¨'"'(˜)¨glyphs}
{𝕩LFC "{""}"˜CArg"𝕩"}
{𝕩LFC FChars "f.bqn"}
{𝕩LFC SVG "e"}
{𝕩LFC SVG "p"}
¯1 · J LFoutComp¨
args