int parser() { printf("sega"); initAlloc(); BSTInit(&TempTree); Tape = allocate(sizeof(tTape)); paramlist = allocate(sizeof(tParamList)); initFunList(); IniTape(); if(insertFunListItemEmbed("length") != E_OK) return E_INTERN; if(insertFunListItemEmbed("find") != E_OK) return E_INTERN; if(insertFunListItemEmbed("copy") != E_OK) return E_INTERN; if(insertFunListItemEmbed("sort") != E_OK) return E_INTERN; error = program(); printf("eror je %d \n",error); if (error != E_OK) return error; //free(TempVar); error = printTape(Tape); // BSTDispose(&TempTreeL); // BSTDispose(&TempTree); // printf("eror je %d \n",error); // printf("eror je %d \n",error); //freeAlloc(); return error; }
int test_BSTInit(tBSTNodePtr *TempTree) { solved=TRUE; BSTInit(TempTree); if (!solved) { printf("Operace InitList() nebyla implementovana \n"); return(FALSE); } else { Print_tree(*TempTree); return(TRUE); } }
int program() { gettoken(); switch(T.type){ case T_KEYWORD:{ if (var == 0){ if (!(strCmpConstStr (&(T.s), "var"))){ //var var = 1; gettoken(); TempVar = allocate(sizeof(tVariable)); if ((error = globalDecl()) != E_OK) return error; // deklarace promennych //free(TempVar); } } if (!strCmpConstStr (&(T.s), "begin")) {// BEGIN //if(searchFunListFW() != NULL) return E_SEMA; if((error = searchFunListCH()) != E_OK) return E_SEMA; gettoken(); //printf("main \n"); if (!strCmpConstStr (&(T.s), "end")){ //BEGIN END. - prazdne gettoken(); if ((error = testToken(T_DOT)) != E_OK) return error; gettoken(); if ((error = testToken(T_EOF)) != E_OK) return error; error = InsertEmptyItemTape(); //vkladam novy prazdny prvek na pasku if (error == E_INTERN) return error; Tape->last->instruction = NOP; return E_OK; } if ((error = blockList()) != E_OK) return error; } else if (!strCmpConstStr (&(T.s), "function")) { // funkce BSTInit(&TempTreeL); TempVar = allocate(sizeof(tVariable)); afun = 1; // ADDED if ((error = function()) != E_OK){ return error; } //printf("za funkcwma \n"); afun = 0; //ADDED //strFree(&ActFun); //ADDED if ((error = program()) != E_OK) return error; return E_OK; } else { return E_SYN;} break; } default: { return E_SYN; } } gettoken(); if ((error = testToken(T_DOT)) != E_OK) return error; gettoken(); if ((error = testToken(T_EOF)) != E_OK) return error; return E_OK; }