【自作】 プログラミング 【してみた】

bbbaaf25 :Anonymous 2011-02-05 11:20
uBasicのuse-basic.cを改造したbasicインタプリタ。
三条項BSDライセンスらしいので、 Copyright (c) 2006, Adam Dunkels
原型はとどめてません。gotoとかfor(;;)とか俺。
goto使わないで二重ループ抜け出すには……あっ! その場でreturnとかexitとかすればいいのか!

#include <unistd.h>
#include <errno.h>
#include "ubasic.h"
int errno;

/*---------------------------------------------------------------------------*/
int
main (int argc, char* argv[])
{
int fd;
int i;
char c[] = " ";
char program[10240];
if (argc < 2) {
fd = 0;
write (1,"run= Cntl-D\n",12);
write (1,"exit= Cntl-C\n",13);
} else {
if ((fd = open(argv[1], 00)) < 0) {
perror();
return errno;
}
}
loop:
i = 0;
while (read(fd,c,1) > 0) {
program[i] = c[0];
i++;
}
if (fd > 0) {
close(fd);
}
ubasic_init(program);
for (;;) {
ubasic_run();
if (ubasic_finished()) {
if (fd > 0) {
break;
} else {
goto loop;
}
}
}
return 0;
}
/*---------------------------------------------------------------------------*/
Powered by shinGETsu.