X-Git-Url: https://git.kengrimes.com/?a=blobdiff_plain;f=src%2Fapc.c;h=a0667650c2168c09c2ab17f32e82768517ff6214;hb=e957af2c23e57f97591580aff0b7835eb4af1dc2;hp=9f267ac960e706dc5befdf5243126bbb11b5f186;hpb=4fb15555f514c5a20245b4640fe22a8bc3010f2d;p=henge%2Fapc.git diff --git a/src/apc.c b/src/apc.c index 9f267ac..a066765 100644 --- a/src/apc.c +++ b/src/apc.c @@ -23,31 +23,26 @@ #define DEFAULT_PAGESIZE 4096 const char* cargs['Z'] = {0}; -const long sys_pagesize; -yypstate* apc_pstate; -yycstate* apc_cstate; - +long sys_pagesize; + int main(int, char*[]); - -extern //bison -int yyparse(void); extern //lexer.c -int lexer_init(void); -extern -int scanner_init(void); -extern -int scanner(yypstate*, yycstate*); +int lexer_init(void); +extern //scanner.c +int scanner_init(void); +extern //scanner.c +void scanner_quit(void); +extern //scanner.c +int scanner_scanpath(char const*); extern //ir.c -int ir_init(void); - -extern //apc/parser.tab.c -YYSTYPE yylval; +int ir_init(void); +extern //ir.c +int ir_linker(void); +extern //ir.c +int ir_condenser(void); extern -yycstate* yycstate_new(void); - -extern //lexer.c -int lexer(void); +void ir_test(void); /* Main entry from terminal parses the command line and kicks off recursive scanning @@ -67,13 +62,17 @@ int main "\t\t-o\tOutput filename \t\t[a.asspak]\n" \ "\t\t-h\tPrint this help\n" #define DONE -1 +#define SCANPATH (cargs['d'] ? cargs['d'] : "./") { int opt; - + if ((sys_pagesize = sysconf(_SC_PAGESIZE)) == 0) + sys_pagesize = DEFAULT_PAGESIZE; + if (ir_init()) + { perror("init"); + exit(EXIT_FAILURE); + } getopt: switch (opt = getopt(argc, argv, OPTS)) - { case DONE: - break; - case 'd' : + { case 'd' : case 'o' : if (strnlen(optarg, MAXSTR) != MAXSTR) { cargs[opt] = optarg; @@ -87,19 +86,15 @@ int main printf(USAGE); printf(USAGE_LONG); exit(EXIT_SUCCESS); + case DONE: + break; } - if ((sys_pagesize = sysconf(_SC_PAGESIZE)) == 0) - sys_pagesize = DEFAULT_PAGESIZE; - - apc_pstate = yypstate_new(); - apc_cstate = yycstate_new(); - - if (scanner_init() || ir_init()) - { perror("init"); + if (scanner_scanpath(SCANPATH)) + { perror("scanner"); exit(EXIT_FAILURE); } - scanner(); - + ir_test(); + ir_linker(); + ir_condenser(); exit(EXIT_SUCCESS); } -