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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/*!
# Statements

Statements describe what the program does. The original Dartmouth BASIC
was separated into a compiler and operating system with statements like `GOTO`
and `PRINT` for the compiled language and commands like `SAVE` and `LIST`
for controlling the system. 64K BASIC is a unique implementation where
everything is compiled and executed by a virtual machine. There are no
commands, everything is a statement.

Statements tend to be short and it's common to put multiple statements on a
single line. Use a colon `:` to separate statements. This works in both
direct and indirect modes.

```text
FOR I = 1 TO 10 : PRINT I : NEXT I
```

Statement words can never be used in variable names. 64K BASIC will insert
spaces to help you when you accidentally include a word in a variable name.

```text
LET BONK = 1
10 LET B ON K = 1
```

Statements need to be properly formatted with the information they need.
Angled brackets `<>` are used to indicate required items.
Square brackets `[]` are used to indicate optional items.
Ellipsis `...` indicate items that may repeat.
Vertical bars `|` separate mutually exclusive options.
All letters and punctuation not in brackets are required.
*/

#[path = "statements/clear.rs"]
#[allow(non_snake_case)]
pub mod CLEAR;

#[path = "statements/cls.rs"]
#[allow(non_snake_case)]
pub mod CLS;

#[path = "statements/cont.rs"]
#[allow(non_snake_case)]
pub mod CONT;

#[path = "statements/data.rs"]
#[allow(non_snake_case)]
pub mod DATA;

#[path = "statements/def.rs"]
#[allow(non_snake_case)]
pub mod DEF;

#[path = "statements/deftype.rs"]
#[allow(non_snake_case)]
pub mod DEFTYPE;

#[path = "statements/delete.rs"]
#[allow(non_snake_case)]
pub mod DELETE;

#[path = "statements/dim.rs"]
#[allow(non_snake_case)]
pub mod DIM;

#[path = "statements/end.rs"]
#[allow(non_snake_case)]
pub mod END;

#[path = "statements/erase.rs"]
#[allow(non_snake_case)]
pub mod ERASE;

#[path = "statements/for.rs"]
#[allow(non_snake_case)]
pub mod FOR;

#[path = "statements/gosub.rs"]
#[allow(non_snake_case)]
pub mod GOSUB;

#[path = "statements/goto.rs"]
#[allow(non_snake_case)]
pub mod GOTO;

#[path = "statements/if.rs"]
#[allow(non_snake_case)]
pub mod IF;

#[path = "statements/input.rs"]
#[allow(non_snake_case)]
pub mod INPUT;

#[path = "statements/let.rs"]
#[allow(non_snake_case)]
pub mod LET;

#[path = "statements/list.rs"]
#[allow(non_snake_case)]
pub mod LIST;

#[path = "statements/load.rs"]
#[allow(non_snake_case)]
pub mod LOAD;

#[path = "statements/mid.rs"]
#[allow(non_snake_case)]
pub mod MID;

#[path = "statements/new.rs"]
#[allow(non_snake_case)]
pub mod NEW;

#[path = "statements/next.rs"]
#[allow(non_snake_case)]
pub mod NEXT;

#[path = "statements/on.rs"]
#[allow(non_snake_case)]
pub mod ON;

#[path = "statements/print.rs"]
#[allow(non_snake_case)]
pub mod PRINT;

#[path = "statements/read.rs"]
#[allow(non_snake_case)]
pub mod READ;

#[path = "statements/rem.rs"]
#[allow(non_snake_case)]
pub mod REM;

#[path = "statements/renum.rs"]
#[allow(non_snake_case)]
pub mod RENUM;

#[path = "statements/restore.rs"]
#[allow(non_snake_case)]
pub mod RESTORE;

#[path = "statements/run.rs"]
#[allow(non_snake_case)]
pub mod RUN;

#[path = "statements/save.rs"]
#[allow(non_snake_case)]
pub mod SAVE;

#[path = "statements/stop.rs"]
#[allow(non_snake_case)]
pub mod STOP;

#[path = "statements/swap.rs"]
#[allow(non_snake_case)]
pub mod SWAP;

#[path = "statements/tron.rs"]
#[allow(non_snake_case)]
pub mod TRON;

#[path = "statements/while.rs"]
#[allow(non_snake_case)]
pub mod WHILE;