04a readme and corrections
This commit is contained in:
parent
3922fc11cd
commit
17cf6b6fa0
6 changed files with 44 additions and 13 deletions
|
@ -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
23
04a/README.md
Normal 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.
|
2
04a/in03
2
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
|
||||
|
|
10
04a/in04a
10
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!
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue