blob: e81c86e6c9c646cc737d7d2a128d0a6c6e7ec316 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Automaton for the preprocessor:
class | 0 1 2 3 4
st\ev | \0 \n ! space other
START | print print print
0 | END START CMD NORMAL NORMAL
NORMAL | print print print print
1 | END START NORMAL NORMAL NORMAL
CMD | add
2 | END START IGNORE CMD1 CMD2
IGNORE |
3 | END START IGNORE IGNORE IGNORE
CMD1 | add
4 | X X X CMD1 CMD2
CMD2 | idcmd add
5 | X X X ARG CMD2
ARG | add
6 | X X ARG1 ARG ARG1
ARG1 | proc proc add add add
7 | END START ARG1 ARG1 ARG1
states: 0-7 plus END and X -> 4 bits
actions: 4. -> 8 bits total, fits in a char.
print 0x10 copies the character to stdout
add 0x20 adds the character to the processing string
idcmd 0x40 ids the processing string for an !include cmd
proc 0x80 gets the filename and procs the include
|