Janus,
I gave your CBASIC interpreter a try under Ubuntu 64 bit Linux. Here are my results.
jrs@laptop:~/c_code/cbasic$ gcc cbasic.c -o cbasic
cbasic.c: In function ‘cerror’:
cbasic.c:77:9: warning: format not a string literal and no format arguments [-Wformat-security]
printf(message);
^
cbasic.c: In function ‘exec’:
cbasic.c:1017:13: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(buf);
^
cbasic.c: In function ‘parser’:
cbasic.c:1087:22: warning: format not a string literal and no format arguments [-Wformat-security]
printf(name);
^
cbasic.c:1186:17: warning: format not a string literal and no format arguments [-Wformat-security]
printf(currenttoken->text);
^
cbasic.c: In function ‘main’:
cbasic.c:1476:9: warning: format not a string literal and no format arguments [-Wformat-security]
printf(lhead->text);
^
/tmp/cc7UVBP4.o: In function `exec':
cbasic.c:(.text+0x16ee): warning: the `gets' function is dangerous and should not be used.
jrs@laptop:~/c_code/cbasic$ ./cbasic
*
footap
0empty head
=tap
5empty head
(tap
7empty head
314159tap
1empty head
*tap
6empty head
10tap
1empty head
)tap
8empty head
-tap
6empty head
3000000tap
1empty head
DIMtap
0empty head
Atap
0empty head
(tap
7empty head
17tap
1empty head
)tap
8empty head
printtap
0empty head
footap
0empty head
tintap
0empty head
=tap
5empty head
3tap
1empty head
iftap
0empty head
tintap
0empty head
>tap
6empty head
tintap
0empty head
thentap
0empty head
fintap
0empty head
printtap
0empty head
footap
0empty head
inputtap
0empty head
guesstap
0empty head
printtap
0empty head
footap
0empty head
/tap
6empty head
guesstap
0empty head
fintap
3empty head
printtap
0empty head
Well Donetap
2empty head
printtap
0empty head
tintap
0
assign statement
A
array statement
print statement77
assign statement
If statement
print statement77
input statement
print statement77
print statement77
print statement77
141590.000000
141590.000000
user input>>print 1+1
ERROR--Don't mix up typesjrs@laptop:~/c_code/cbasic$