/
bf_iter.h
130 lines (130 loc) · 2.43 KB
/
bf_iter.h
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#ifndef STATE
# define EXECUTE 0
# define SKIP 1
# define RSKIP 2
# define STATE EXECUTE
#endif
#
#if STATE == EXECUTE
#ifdef DEBUG
execute: cell = T0, cell index = Tr
#endif
# if C0 == '>'
#ifdef DEBUG
opcode >
#endif
# include "shift_T.h"
# elif C0 == '<'
#ifdef DEBUG
opcode <
#endif
# include "rshift_T.h"
# elif C0 == '+'
#ifdef DEBUG
opcode +
#endif
# define T0_NEXT ((T0 + 1) & 0xff)
# include "literals/T0.h"
# elif C0 == '-'
#ifdef DEBUG
opcode -
#endif
# define T0_NEXT ((T0 - 1) & 0xff)
# include "literals/T0.h"
# elif C0 == '.'
#ifdef DEBUG
opcode .
#endif
# define PRINT T0
# include "print.h"
# elif C0 == ','
#ifdef DEBUG
opcode ,
#endif
# if Ic == 0
# define T0_NEXT 0
# include "literals/T0.h"
# else
# define T0_NEXT I0
# include "literals/T0.h"
# include "shift_I.h"
# endif
# elif C0 == '['
#ifdef DEBUG
opcode [
#endif
# if T0 == 0
# undef STATE
# define STATE SKIP
# define NESTCOUNT 0
# endif
# elif C0 == ']'
#ifdef DEBUG
opcode ]
#endif
# if T0 != 0
# undef STATE
# define STATE RSKIP
# define NESTCOUNT 0
# include "rshift_C.h"
# endif
# endif
# if STATE == EXECUTE
# include "shift_C.h"
# endif
#elif STATE == SKIP
#ifdef DEBUG
skip: nest = NESTCOUNT
#endif
# if C0 == '['
#ifdef DEBUG
skipcode [
#endif
# define NESTCOUNT_NEXT (NESTCOUNT + 1)
# include "literals/NESTCOUNT.h"
# elif C0 == ']'
#ifdef DEBUG
skipcode ]
#endif
# if NESTCOUNT == 0
# undef STATE
# define STATE EXECUTE
# undef NESTCOUNT
# else
# define NESTCOUNT_NEXT (NESTCOUNT - 1)
# include "literals/NESTCOUNT.h"
# endif
# endif
# include "shift_C.h"
#elif STATE == RSKIP
#ifdef DEBUG
rskip: nest = NESTCOUNT
#endif
# if C0 == ']'
#ifdef DEBUG
rskipcode ]
#endif
# define NESTCOUNT_NEXT (NESTCOUNT + 1)
# include "literals/NESTCOUNT.h"
# elif C0 == '['
#ifdef DEBUG
rskipcode [
#endif
# if NESTCOUNT == 0
# undef STATE
# define STATE EXECUTE
# undef NESTCOUNT
# else
# define NESTCOUNT_NEXT (NESTCOUNT - 1)
# include "literals/NESTCOUNT.h"
# endif
# endif
# if STATE == RSKIP
# include "rshift_C.h"
# endif
#endif
#
#if Cc == 0
# undef HALT
# define HALT 1
#endif