From 17cf6b6fa02db452c3b0b88b09b8884f73b0c1eb Mon Sep 17 00:00:00 2001 From: pommicket Date: Wed, 17 Nov 2021 22:58:17 -0500 Subject: 04a readme and corrections --- 04a/Makefile | 4 +++- 04a/README.md | 23 +++++++++++++++++++++++ 04a/in03 | 2 +- 04a/in04a | 10 +++------- 4 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 04a/README.md (limited to '04a') diff --git a/04a/Makefile b/04a/Makefile index e6187d4..f6b9915 100644 --- a/04a/Makefile +++ b/04a/Makefile @@ -1,6 +1,8 @@ -all: out03 +all: out03 out04a README.html out03: in03 ../03/out02 ../03/out02 +out04a: out03 in04a + ./out03 in04a out04a %.html: %.md ../markdown ../markdown $< clean: diff --git a/04a/README.md b/04a/README.md new file mode 100644 index 0000000..42dbc46 --- /dev/null +++ b/04a/README.md @@ -0,0 +1,23 @@ +# stage 04a + +Rather than a compiler, this stage only consists of a simple [preprocessor](https://en.wikipedia.org/wiki/Preprocessor). +In the future, we'll run our code through this program, then run its output +through a compiler. + +It take lines like: +``` +#define THREE d3 +``` +and then replaces `THREE` anywhere in the rest of the code with `d3`. +I've provided `in04a` as a little example. +Unlike previous programs, you can control the input and output file names +without recompiling it. So to compile the example program: +``` +make out03 +./out03 in04a out04a +``` + +Although it seems simple, this program will be very useful: +it'll let us define constants and it'll work in any language. +There really isn't much else to say about this program. With that, +we can move on to [the next stage](../04b/README.md) which should be more exciting. diff --git a/04a/in03 b/04a/in03 index e4771f3..ed965e6 100644 --- a/04a/in03 +++ b/04a/in03 @@ -68,7 +68,7 @@ R=:line ; check if we reached the end of the line C=1R D=xa - ?C=A:read_line + ?C=D:read_line ; increment R, keep looping R+=d1 !:process_line_loop diff --git a/04a/in04a b/04a/in04a index 9798c24..0cd1eed 100644 --- a/04a/in04a +++ b/04a/in04a @@ -1,7 +1,3 @@ -A+B=hello A adfhsakjfhjksah+B -#define COLON d1 -#define SEMICOLON d2 -#define COMMA d3 - -A=COLON -1B=A +#define H Hello, +#define W world +H W! -- cgit v1.2.3