04a readme and corrections

This commit is contained in:
pommicket 2021-11-17 22:58:17 -05:00
parent 3922fc11cd
commit 17cf6b6fa0
6 changed files with 44 additions and 13 deletions

View file

@ -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:

23
04a/README.md Normal file
View file

@ -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.

View file

@ -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

View file

@ -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!