#include /* open(2) close(2) */ #include /* printf(3) */ #include /* malloc(3) */ #include /* read(2) */ /* function declarations */ void next(void) ; void expression(int level) ; void program(void) ; int eval(void) ; /* global variables */ int token; /* current token */ char *src, *old_src; /* pointer to source code string */ int poolsize; /* default size of text/data/stack */ int line; /* line number */ void next(void) { token = *src++; return; } void expression(void) { /* do nothing */ } void program(void) { next(); /* get next token */ while ( token > 0 ) { printf("token is: %c\n", token); next(); } } int eval(void) { return 0; } /* entry point */ int main(int argc, char **argv) { int i; int fd; argc--; argv++; /* initalize global variables */ poolsize = 256 * 1024; /* arbitrary */ line = 1; if ( 0 > (fd = open(*argv, 0)) ) { printf("could not open(%s, 0)\n", *argv); return 1; } if (NULL == (src = old_src = malloc(poolsize)) ) { printf("could not malloc(%d)\n", poolsize); return 1; } if ( 0 >= (i = read(fd, src, poolsize - 1)) ) { printf("read() returned %d\n", i); return 1; } src[i] = 0; close(fd); program(); return eval(); }