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/bootstrap/README.txt | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/bootstrap/README.txt (limited to 'src/bootstrap') 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