From 439068eea4ff405c9f914090da42d9220893af5d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 28 Apr 2009 01:23:26 +0000 Subject: store only program chars --- bf.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/bf.c b/bf.c index eccfb93..03dc3fe 100644 --- a/bf.c +++ b/bf.c @@ -59,22 +59,31 @@ main(int argc, char **argv) progp = &prog; p = NULL; - while ((ch = fgetc(fd)) != EOF) { - *progp = alloccell(); - (*progp)->value = ch; - (*progp)->prev = p; - p = *progp; - progp = &(*progp)->next; - } + while ((ch = fgetc(fd)) != EOF) + switch (ch) { + case '>': + case '<': + case '+': + case '-': + case ',': + case '.': + case '[': + case ']': + *progp = alloccell(); + (*progp)->value = ch; + (*progp)->prev = p; + p = *progp; + progp = &(*progp)->next; + break; + default: + break; + } fclose(fd); data = alloccell(); - for (p = prog; p; p = p->next) { -#if debug - fprintf(stderr, "\t%c: %ud\n", p->value, data->value); -#endif + for (p = prog; p; p = p->next) switch (p->value) { case '>': if (!data->next) { @@ -120,7 +129,7 @@ main(int argc, char **argv) default: break; } - } + quit: return 0; } -- cgit v1.2.3