From 20a243ff42eab8e1bb4afe9d5cc54f5d32983b57 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 25 Jan 2023 19:49:39 -0500 Subject: Bootstrap README --- src/README.txt | 1 + src/bootstrap/README.txt | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/bootstrap/README.txt diff --git a/src/README.txt b/src/README.txt index a04d515f..05dc7c83 100644 --- a/src/README.txt +++ b/src/README.txt @@ -10,6 +10,7 @@ Compiler toolchain: - pp.bqn General preprocessing - pr.bqn Preprocess the runtime - cjs.bqn Format compiler output as Javascript literals +- bootstrap/ Simpler compilers for bootstrapping (see README there) Compilation targets: diff --git a/src/bootstrap/README.txt b/src/bootstrap/README.txt new file mode 100644 index 00000000..74034a39 --- /dev/null +++ b/src/bootstrap/README.txt @@ -0,0 +1,32 @@ +Bootstrapping chain for BQN. The following gets you a full compiler: + +- Files boot2.bqn and boot1.bqn here, and ../c.bqn +- A compiler capable of building boot2.bqn +- Primitive support sufficient to run all of the above + +Each compiler can compile the previous one, but not ones before that. +Run verify.bqn to check that object code produced at each step matches +the full compiler's output. + +The compiler boot2.bqn uses an easy-to-compile subset of BQN syntax. +Syntax restrictions for the full chain are listed below. + +Full compiler, boot 0 + No headers or namespaces (or decimals) . :;? โ‡ + No high-rank array syntax [] + No useless parentheses that enclose a single value + +Boot -1 + No stranding โ€ฟ or character literals ' + No " in comment: comments can safely be parsed before strings + No _: token role determined by first character + No Nothing: ยท doesn't appear and ๐•จ always has a value + Only ๐•Š๐•ฉ๐•จ for special names + +Boot -2 + Single-scope + No modified or list assignment + No 2-modifiers at all + +Boot -3 + Not easier to compile, just cut down further -- cgit v1.2.3