int main (int argc, char **argv)
{
    char *dados, *pos, *nome_arq;
    int erro, arq;

    arq = le_param (argc, argv);
    nome_arq = argv[arq];
    dados = le_arquivo (nome_arq);

    if (dados == NULL)
        sair (FIM_ERRO_ARQUIVO);

    ajusta_nomes_arquivos (nome_arq, muda_extensao (nome_arq, "s"));

    pos = dados;
    erro = analisadorSintatico (&pos);
    
    if (erro == FIM_OK && monta_exe)
    {
        char *comando;
        
        comando = calloc (15 + 2*strlen (nome_arq), sizeof (char));
        
        sprintf (comando, "gcc -o %s %s", muda_extensao (nome_arq, "exe"),  muda_extensao (nome_arq, "s"));
        system (comando);
        
        free (comando);
    }
	
    sair (erro);
    return erro;
}
Esempio n. 2
0
void main (){
    FILE *arquivo1, *arquivo2, *arquivo3;
    int num;

    abre_modifica(arquivo1,"arq1.txt");
    abre_modifica(arquivo2,"arq2.txt");
    cria_abre(arquivo3,"arq3.txt");
    mescla(arquivo1,"arq1.txt", arquivo2,"arq2.txt", arquivo3,"arq3.txt");
    le_arquivo(arquivo3,"arq3.txt");

}
Esempio n. 3
0
int main()
{
    T_Pessoa pessoa = {0};

    le_arquivo(&pessoa);
    printf("Nome lido: %s\n", pessoa.nome);
    printf("Idade lida: %d\n", pessoa.idade);

    free(pessoa.nome);

    return 0;
}
int main (int argc, char **argv)
{
    um_atomo at;
    uma_pilha pilha;
    char *pos, *dados;
    int i, ids, fim;

    if (argc == 1)
        sair (1, "Uso: teste <arquivo>\n");

    dados = le_arquivo (argv[1]);

    if (dados == NULL)
    {
        char msg[100]="";
        strcat (msg, argv[1]);
        strcat (msg, " nao encontrado!\n");
        sair (2, msg);
    }

    printf ("Atomos:\n");
    printf ("%20s %5s\n", "Classe", "Valor");
    printf ("%20s %5s\n", "------", "-----");

    pos = dados;                   // Posição inicial de leitura
    pilha_inicia (&pilha);
    fim = 0;
    i = 0;
    do
    {
        // Lê novo Átomo
        at = analisadorLexico (&pos, &pilha);

        if (i==3)
        {
            pilha_adiciona (&pilha, at);
            printf ("O atomo %s (%d) foi pra pilha!\n", nomeClasse (at->classe),  at->valor);
        }
        else
        {
            printf ("%20s ", nomeClasse (at->classe));
            if (at->classe == C_REAL)
                printf ("%5.10g", at->real);
            else
                printf ("%5d", at->valor);

            if (at->classe == C_IDENTIFICADOR)
                printf (" (%s)", busca_nome_ID (at->valor));

            printf ("\n");

            if (at->classe == C_FIM)
                fim = 1;
            if (at->classe == C_INVALIDA)
                fim = 2;

            // Limpa átomo
            free (at);
        }
        i++;
    }
    while (! fim);

    // Mostra linha do erro, quando ocorrer
    if (fim == 2)
    {
        printf ("\nToken desconhecido na seguinte linha:\n");

        mostra_linha_atual (pos);
        mostra_posicao_erro (pos);
    }

    // Mostra tabela de identificadores
    ids = tam_tabelaID();
    printf ("\nIdentificadores (%d):\n", ids);
    for (i = 0; i < ids; i++)
    {
        printf ("%3d: %s\n", i,  busca_nome_ID (i));
    }



    sair (0, "\nFim.");
    return 0;
}