Skip to content

Problemas Encontrados e Soluções Adotadas

Este documento descreve os principais problemas enfrentados durante o desenvolvimento do compilador de Python para C e as soluções adotadas para resolvê-los.


Problemas e Soluções

1. Dificuldade na Integração entre Flex e Bison

  • Problema: Inicialmente, houve dificuldades para integrar o analisador léxico (Flex) com o analisador sintático (Bison), especialmente na definição e uso dos tokens.
  • Solução: Foi realizada uma revisão detalhada da documentação de Flex e Bison. Além disso, utilizamos o arquivo de cabeçalho gerado pelo Bison (parser.tab.h) para garantir que os tokens definidos no Flex fossem reconhecidos corretamente pelo Bison.

2. Dificuldade na Integração entre Flex e Bison no MAC

  • Problema: Inicialmente, houve dificuldades para integrar o analisador léxico (Flex) com o analisador sintático (Bison), especialmente no sistema operacional macOS.
  • Solução: Foi realizada uma revisão detalhada da documentação de Flex e Bison. Além disso, utilizamos o arquivo de cabeçalho gerado pelo Bison para garantir o funcionamento.

3. Erro ao Gerar o Código com GCC

  • Problema: Durante a compilação do projeto com GCC, surgiram erros relacionados a funções não definidas ou conflitos de tipos.
  • Solução: Verificamos as dependências e incluímos a biblioteca -lfl no comando de compilação para resolver os erros relacionados ao Flex. O comando final ficou assim: ```bash gcc -o compilador parser.tab.c lex.yy.c -lfl

4. Organização do Repositório

  • Problema: A estrutura inicial do repositório estava desorganizada, dificultando a localização de arquivos e o controle de versões.
  • Solução: Reestruturamos o repositório, separando os arquivos em diretórios específicos, como Compilador/, docs/, e Estudo/. Também adotamos o uso de branches no Git para organizar o fluxo de trabalho.

5. Configurar os Condicionais no Léxico e Bison

  • Problema: Houve dificuldades para implementar condicionais no analisador léxico e no analisador sintático, especialmente na definição de regras que dependem de estados específicos.
  • Solução: Foram utilizados ferramentas para auxílio.