int main(int argc,char **argv){ tempClausesFileGlobal = NULL; numClausesGlobal = 0; if(argc == 1){ endHelp(); } sabrDirGlobal = getDir(argv[0]); // current argument int a = processFlags(argc,argv); if(a >= argc || !atoi(argv[a])){ endErrorMsg("Positive Integer Number Of Levels Must Be Input First"); } curLineNumGlobal = 1; numStagesGlobal = atoi(argv[a]); inventNameNumGlobal = 0; endFileGlobal = 0; a++; if(a >= argc){ endErrorMsg("Must Enter Source File"); } char *file = argv[a]; fileRead(file); a++; if(a != argc){ endErrorMsg("Too Many Arguments"); } initSym(); yyparse(); destroyLinked(symTableGlobal,freeSyms); // could use Malloc-L, Free-L and MemInfo to show no memory lost // should say: "Leak Size: 0" return 0; }
int main(int argc,char **argv) { if(argc < 2 || !atoi(argv[1])) { printf("Error: Positive Integer Number Of Levels Must Be Input.\n"); exit(0); } if(argc == 2) command = COMMAND_NONE; else if(argc == 3 && strcmp(argv[2],"-initial") == 0) command = COMMAND_INITIAL; else if(argc == 3 && strcmp(argv[2],"-debug") == 0) command = COMMAND_DEBUG; else if(argc == 3 && strcmp(argv[2],"-result") == 0) command = COMMAND_RESULT; else if(argc == 3 && strcmp(argv[2],"-all") == 0) command = COMMAND_ALL; else { printf("Error: Invalid Input.\n"); exit(0); } curLineNum = 1; numStages = atoi(argv[1]); inventNameNum = 0; endFile = 0; initSym(); printf("Start\n"); yyparse(); destroyLinked(symTable,freeSyms); // could use Malloc-L, Free-L and MemInfo to show no memory lost // should say: "Leak Size: 0" return 0; }
void initSymbols(void) { int i; Nil = symPtr(Avail), Avail = Avail->car->car; // Allocate 2 cells for NIL val(Nil) = tail(Nil) = val(Nil+1) = tail(Nil+1) = Nil; Zero = box(0); One = box(2); for (i = 0; i < IHASH; ++i) Intern[i] = Transient[i] = Nil; for (i = 0; i < EHASH; ++i) Extern[i] = Nil; initSym(mkStr(_OS), "*OS"); DB = initSym(Nil, "*DB"); Meth = initSym(box(num(doMeth)), "meth"); Quote = initSym(box(num(doQuote)), "quote"); T = initSym(Nil, "T"), val(T) = T; // Last protected symbol mkExt(val(DB) = DbVal = consStr(DbTail = box('1'))); Extern['1'] = cons(DbVal, Nil); Solo = initSym(Zero, "*Solo"); PPid = initSym(Nil, "*PPid"); Pid = initSym(boxCnt(getpid()), "*Pid"); At = initSym(Nil, "@"); At2 = initSym(Nil, "@@"); At3 = initSym(Nil, "@@@"); This = initSym(Nil, "This"); Dbg = initSym(Nil, "*Dbg"); Zap = initSym(Nil, "*Zap"); Ext = initSym(Nil, "*Ext"); Scl = initSym(Zero, "*Scl"); Class = initSym(Nil, "*Class"); Run = initSym(Nil, "*Run"); Hup = initSym(Nil, "*Hup"); Sig1 = initSym(Nil, "*Sig1"); Sig2 = initSym(Nil, "*Sig2"); Up = initSym(Nil, "^"); Err = initSym(Nil, "*Err"); Msg = initSym(Nil, "*Msg"); Uni = initSym(Nil, "*Uni"); Led = initSym(Nil, "*Led"); Tsm = initSym(Nil, "*Tsm"); Adr = initSym(Nil, "*Adr"); Fork = initSym(Nil, "*Fork"); Bye = initSym(Nil, "*Bye"); // Last unremovable symbol for (i = 0; i < (int)(sizeof(Symbols)/sizeof(symInit)); ++i) initSym(box(num(Symbols[i].code)), Symbols[i].name); }