Add global variable storage to the interpreter:
var global_names: [256][]const u8 = undefined;
var global_values: [256]i64 = undefined;
var num_globals: usize = 0;
var in_function: bool = false;
Write setGlobal(name, val) and getGlobal(name):
fn setGlobal(name: []const u8, val: i64) void {
for (0..num_globals) |i| {
if (streq(global_names[i], name)) {
global_values[i] = val;
return;
}
}
global_names[num_globals] = name;
global_values[num_globals] = val;
num_globals += 1;
}
fn getGlobal(name: []const u8) i64 {
for (0..num_globals) |i| {
if (streq(global_names[i], name)) {
return global_values[i];
}
}
return 0;
}