int main(int argc, char* argv[]) { int i = 1; FILE* fp; int temp = 0; string filename; initSymbolTable(labelTABLE); initSymbolTable(entryTABLE); initSymbolTable(externTABLE); QUE_initiate(); for(;argv[i] != NULL; i++){ temp = strlen(argv[i]); filename = argv[i]; if((fp = fopen(strcat(filename, asEndOfFile), "r")) == NULL ) fprintf(stderr, "\nError opening file %s ", argv[i]); else{ filename[temp] = '\0'; firstStep(fp); secondStep(); printMemory(strcat(filename,obEndOfFile)); filename[temp] = '\0'; printGuideLines(strcat(filename,obEndOfFile)); filename[temp] = '\0'; printEntryTable(entryTABLE, strcat(filename,entEndOfFile)); filename[temp] = '\0'; printExternTable(strcat(filename,extEndOfFile)); } freeSymbolTable(labelTABLE); freeSymbolTable(entryTABLE); freeSymbolTable(externTABLE); freeQueue(); } return 1; }
/* Add a empty child symbol table to the linked list of symbol tables. This is done when entering a new scope level */ SymbolTable *scopeSymbolTable(SymbolTable *parent) { SymbolTable *t; t = initSymbolTable(); t->parent = parent; return t; }
int main(int argc, char **argv) { int c; bool debug_mode = false; bool verbose_mode = false; while ((c = getopt(argc, argv, "dv")) != -1) { switch (c) { case 'd': debug_mode = true; break; case 'v': verbose_mode = true; break; default: /* '?' */ fprintf(stderr, "Anvendelse: %s [-d] [-v]\n", argv[0]); exit(1); } } lineno = 1; if (verbose_mode) { fprintf(stderr, "Leksikalsk og syntaktisk analyse udføres ...\n"); } int parse = yyparse(); if (parse != 0) { fprintf(stderr, "Der opstod en fejl under den leksikalske eller syntaktiske analyse.\n"); return 1; } if (verbose_mode) { fprintf(stderr, "Leksikalsk og syntaktisk analyse blev udført.\n"); } if (debug_mode) { fprintf(stderr, "Pæn udskrift efter leksikalsk og syntaktisk analyse:\n"); prettyMAIN(theprogram); } if (verbose_mode) { fprintf(stderr, "Semantisk analyse udføres ...\n"); } SymbolTable *mscope = initSymbolTable(); int traversalerr = traversal(theprogram, mscope); if (traversalerr != 0) { fprintf(stderr, "Der opstod i alt %d fejl under den semantiske analyse.\n", traversalerr); return 1; } if (verbose_mode) { fprintf(stderr, "Semantisk analyse blev udført.\n"); } if (debug_mode) { dumpsymbol(theprogram, mscope); } if (verbose_mode) { fprintf(stderr, "Kodegenerering udføres ...\n"); } LINKED_LIST *l = generateCode(theprogram, mscope); l = registerAllocation(l); if (verbose_mode) { fprintf(stderr, "Kodegenerering blev udført.\n"); } emission(l); return 0; }
int runParser(LexemeList *LLin){ LL = LLin; ptrLL = 0; g_level = 0; g_addr = 0; if(initSymbolTable() != 0) return 1; getNextToken(); if(program() != 0) return 1; return 0; }
void doConversion(void **name) { char *newName = *name; initErrorFile(newName); initExpandToken(); initSymbolTable(); newName = initTokenizer(newName); initPrinting(newName); cparseInterface(); zapPrinting(); zapTokenizer(); zapSymbolTable(); zapExpandToken(); zapStringTable(); zapErrorFile(); }
int runParser(LexemeList *LLin){ LL = LLin; ptrLL = 0; g_level = 0; g_addr = 0; if(initSymbolTable() != 0) return 1; getNextToken(); if(program() != 0) return 1; int i; //printf("CX = %d\n",cx); for(i = 0; i < cx; i++) { printf("%d %d %d\n",code[i].op,code[i].l,code[i].m); } return 0; }
//------------------------------------------------------------- // ARBProgram::getParameter() set symbol //------------------------------------------------------------- int ARBProgram::getParameter(char *s){ int i=0; if(!symbols) initSymbolTable(); if(!symbols) return -1; for(i=0;i<sid;i++){ if(strcmp(s,symbols[i])==0) return i; } MALLOC(strlen(s),char,symbols[sid]); if(symbols[sid]){ strcpy(symbols[sid],s); sid++; return sid; } return -1; }
void codeGen(Node *root, FILE *ucoFile) { Node *p; // pointer for Node int globalSize; // the size of global variables file = ucoFile; // rootTable = initSymbolTable(); // step 1: process the declaration part for (p = root->son; p; p = p->next) { if (p->token.tokenNumber == DCL) { processDeclaration(rootTable, p->son); } else if (p->token.tokenNumber == FUNC_DEF) { processFuncHeader(rootTable, p->son); } else { icg_error(3); } } globalSize = rootTable->offset - 1; // step 2: process the function part for (p = root->son; p; p = p->next) { if (p->token.tokenNumber == FUNC_DEF) { processFunction(rootTable, p); } } display(rootTable, 0); // step 3: generate codes for starting routine // bgn globalSize // ldp // call main // end emit1("bgn", globalSize); emit0("ldp"); emitJump("call", "main"); emit0("end"); }
int main(int argc, char **argv){ int lArg=0, aArg=0, vArg=0; if ((argc-1) == 0) return 0; //check for //-l : print the list of lexemes/tokens (scanner output) to the screen //-a : print the generated assembly code (parser/codegen output) to the screen //-v : print virtual machine execution trace (virtual machine output) to the screen //filename (no code) int i=0; for(i=0; i<argc-1; i++){ if(inputDBG) printf("%s\n",argv[i]); if(strcmp(argv[i], "-l") == 0){ lArg = 1; continue; } if(strcmp(argv[i], "-a") == 0){ aArg = 1; continue; } if(strcmp(argv[i], "-v") == 0){ vArg = 1; continue; } } //lArg = 0; aArg = 1; vArg = 1; // ****param override remove later**** if(inputDBG) printf("%d %d %d\n",lArg, aArg, vArg); initSymbolTable(); char* filename = malloc(sizeof(char)*20); strcpy(filename,argv[argc-1]); if(inputDBG) printf("%s\n",filename); lexNode* list = lexAnInit(filename, lArg); parseLexemeList(list, aArg); VMinit(assemblyCode,vArg); return 0; }
void sym1PassSCRIPTCOLLECTION(SCRIPTCOLLECTION *s) { TExternalSymbol* symbol; s->sym = initSymbolTable(); // add external symbols symbol = ExternalVars; while(symbol!=NULL){ putSymbol2(s->sym, symbol->name, symbol->kind); symbol = (TExternalSymbol*)symbol->next; } symbol = ExternalFuncs; while(symbol!=NULL){ putSymbol2(s->sym, symbol->name, symbol->kind); symbol = (TExternalSymbol*)symbol->next; } if (s->toplevels != NULL) sym1PassTOPLEVEL(s->toplevels, s->sym); }
VOIDPTRFUNC CP_jREPL2(){ //fprintf(stdout, "\nStack in CP_jREPL2:\n"); //printJStack(__FILE__,__LINE__,__FUNCTION__); DEBUGCODE(PRINT_STACK->state, printJStack(__FILE__,__LINE__,__FUNCTION__)); OBJ result = RETVAL; #ifdef DEBUG if( (SP <= 5) || PRINT_INCLUDE->state){ printIndent(indentLevelForInclude); #else if( (SP <= 5)) { #endif js_print(stdout, result, 1); // P rint printf("\n"); } // L oop OBJ inputStream = ARG(0); TAILCALL1((VOIDPTRFUNC)CP_jREPL, inputStream); } int main() { initSymbolTable(); initializeWellKnownObjects(); initJStack(); #ifdef DEBUG initDebugOptions(); initGlobalEnvironment(); setupInitialEnvironment(); setupBuiltinSyntax(); selftest(); #endif printf("hello friend...\n"); initGlobalEnvironment(); setupInitialEnvironment(); printf("Welcome to (JS)cheme\n"); if( setjmp(whereEverythingWasFine) ){ #ifdef DEBUG indentLevel = 0; indentLevelForInclude = 0; #endif // reset Stack index SP = 0; AP = 0; BP = 0; prompt_on(); printf("back in wonderland\n"); } printf("...starting a REPL for you.\n"); OBJ inputStream = newFileStream(stdin); #ifdef DEBUG if(CONTINUATION_PASSING->state){ CP_setupBuiltinSyntax(); enterTrampoline1(inputStream); }else{ setupBuiltinSyntax(); jREPL(inputStream); } #else //jREPL(inputStream); CP_setupBuiltinSyntax(); enterTrampoline1(inputStream); #endif return 0; }
void semanticCheck(){ semanticErrorCount = 0; inStruct = false; initSymbolTable(); program__extdeflist(root); }