#include <unistd.h> //getopt, sysconf
/* Internal */
#include "parser.tab.h" //bison
+#include "ir.h"
#define DEFAULT_PAGESIZE 4096
const char* cargs['Z'] = {0};
long sys_pagesize;
-
+
int main(int, char*[]);
extern //lexer.c
void scanner_quit(void);
extern //scanner.c
int scanner_scanpath(char const*);
-//extern //ir.c
-//int ir_init(void);
+extern //ir.c
+int ir_init(void);
+extern //ir.c
+int ir_linker(void);
+extern //ir.c
+int ir_condenser(void);
+extern
+void ir_test(void);
/* Main entry from terminal
parses the command line and kicks off recursive scanning
#define DONE -1
#define SCANPATH (cargs['d'] ? cargs['d'] : "./")
{ int opt;
-
getopt:
switch (opt = getopt(argc, argv, OPTS))
- { case DONE:
- break;
- case 'd' :
+ { case 'd' :
case 'o' :
if (strnlen(optarg, MAXSTR) != MAXSTR)
{ cargs[opt] = optarg;
printf(USAGE);
printf(USAGE_LONG);
exit(EXIT_SUCCESS);
+ case DONE:
+ break;
}
if ((sys_pagesize = sysconf(_SC_PAGESIZE)) == 0)
sys_pagesize = DEFAULT_PAGESIZE;
-
- if (scanner_init())// || ir_init())
+ if (ir_init())
{ perror("init");
exit(EXIT_FAILURE);
}
- scanner_scanpath(SCANPATH);
- scanner_quit();
+#if 0
+ if (scanner_scanpath(SCANPATH))
+ { perror("scanner");
+ exit(EXIT_FAILURE);
+ }
+#endif
+ ir_class class;
+ ir_set set;
+ int i, j;
+ char wordbuf[0xFFF];
+ for (class = ir_class_root(), i = 0, j = 0; i < 100; i++)
+ { sprintf(wordbuf,"Class%i",i);
+ class = ir_class_addchild(class,(uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-s%i",i,j++);
+ set = ir_class_addset(class, (uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-s%i",i,j++);
+ ir_class_addset(class, (uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-s%i",i,j++);
+ ir_class_addset(class, (uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-sc%i",i,j=0);
+ set = ir_set_addchild(set, (uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-sc%i",i,++j);
+ ir_set_addchild(set, (uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-sc%i",i,++j);
+ set = ir_set_addchild(set, (uint8_t*)wordbuf);
+ sprintf(wordbuf,"c%i-sb%i",i,j=0);
+ ir_set_addchild(set, (uint8_t*)wordbuf);
+ }
+ ir_test();
+ ir_linker();
+ ir_condenser();
exit(EXIT_SUCCESS);
}
-