/***************************************************************************************************** * syntacticList -> faz analise de uma lista * TIL => token com o '~' * Retorna => tipo especializado * ****************************************************************************************************/ TList* Syntactic::syntacticList(TokenType *til){ TokenType *buffer, *token; TList *list = new TList(); list->setList(til); //seta token lista ~ buffer = lex->getToken(); //pega o '(' if(buffer->getToken() == "("){ buffer = lex->getToken(); //pega o primeiro elemento da lista if(buffer->getToken() == ",") //se for ',' erro erro->showError(" digito, string, variavel esperado mas: ", buffer->getLine(), buffer->getColumn(), buffer->getToken()); while(buffer->getToken() != ")"){ //enquanto nao for ')' list->insere(buffer); //coloca o valor na lista token = lex->getToken(); //pega as virgulas if(token->getToken() != "," && token->getToken() != ")") erro->showError(" , esperado mas: ", token->getLine(), token->getColumn(), token->getToken()); else if(token->getToken() != "," && token->getToken() == ")") break; else buffer = lex->getToken(); //pega os valores } buffer = lex->getToken(); //proximo token tem que ser '!' if(buffer->getClasse() != END_CMD) erro->showError(" ! esperado mas: ", buffer->getLine(), buffer->getColumn(), buffer->getToken()); } else erro->showError(" ( esperado mas: ", buffer->getLine(), buffer->getColumn(), buffer->getToken()); return list; }