0) { $copiaarq = fread($fp, $tarq); } else { echo "x"; } fclose($fp); $achou=true; } } // Se o arquivo .c não está vazio, insere tokens confirmando compilação e execucao; normaliza retirando comentarios e strings e substituindo palavras ambiguas if (($achou==true) && (!($copiaarq==""))) { // Abrir arquivo normalizado $f= fopen($arqnormalizado,'w'); // Verificar se roda. ==> Se sim, inserir token @compila, @funciona // Se não, verifica apenas se compila ==> Se sim, Inserir token @compila if (file_exists($diretorioorigem.$arqsaida) && file_exists($diretorioorigem."executavel") ) { $textofunciona = file($diretorioorigem.$arqsaida); $ntf=count($textofunciona); if ($ntf>0) // Se arquivosaida nao está vazio { $pos = strpos($textofunciona[0], $erros); $estaloop = strpos($textofunciona[0], $ploop); } else { $pos=false; // Arquivo saida foi gerado sem erros $estaloop=false; } //if (file_exists($diretorioorigem.$arqconfirmafunciona) ) if ($pos === false && $estaloop===false) // Não contém erros { fwrite($f,"@compila @funciona \n"); } else { if ($estaloop>=0) // Está em loop { fwrite($f,"@compila \n"); } } unset($textofunciona); } // Retira comentários e textos entre aspas $textonormalizado = preg_replace('/\".*\\n*.*\"/', ' @textostr ', $copiaarq); // Substitui os tokens e símbolos que geram redundâncias conforme lista de normalizações $arqnormaliza = file($listanormalizacoes); foreach($arqnormaliza as $linhaarquivo) { $str = explode(';', $linhaarquivo); $original = $str[0]; $novo = trim($str[1]); $textonormalizado= str_replace($original,$novo, $textonormalizado); } $textonormalizado = preg_replace('/@icoment.*@fcoment/s', ' @comentario ', $textonormalizado); $textonormalizado = preg_replace('/@comentlinha.*\\n/', ' @comentario ', $textonormalizado); // Gravar arquivo normalizado fwrite($f, $textonormalizado); unset($textonormalizado); // Fechar arquivo normalizado fclose($f); } } // Fim da função // Inicio do programa // Endereço de entrada $diretorioentrada = "questoesseparadas/"; // Endereço do diretorio de saida ==> o que conterá os códigos normalizados $diretoriosaida = "normalizados/"; // Entrar em diretorio de entrada $ponteiro1 = opendir($diretorioentrada); if (!(file_exists($diretoriosaida))) { mkdir($diretoriosaida); } // Para cada subdiretorio de submissoes (isto é, as tarefas), verifique se diretorio da questao já foi normalizado. Se não, envia // endereço do diretorio para ser normalizado while (($nometarefa = readdir($ponteiro1))) { if ( ($nometarefa<>".") && ($nometarefa<>"..")) { $ponteiro2 = opendir($diretorioentrada.$nometarefa); while ($submissao = readdir($ponteiro2)) { if ( ($submissao<>".") && ($submissao<>"..")) { $diretoriosubm= $diretorioentrada.$nometarefa."/".$submissao."/"; $diretoriosaida= "normalizados/".$nometarefa."/"; if (!(file_exists($diretoriosaida))) { mkdir($diretoriosaida); } if (is_dir($diretoriosubm)) { normalizaarquivo($diretoriosubm, $diretoriosaida); } } } } } ?>