Skip to content

brutexx/Compilador

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

220 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Compilador C para LLVM

Este projeto implementa um compilador que transforma uma versão simplificada da linguagem C (C11) em LLVM IR (Intermediate Representation). Ele oferece suporte a expressões aritméticas, comparações, operações lógicas, estruturas de controle, tipos de dados básicos e compostos, além de operações de entrada e saída.

Contribuidores:

  • Bruno Lopes Altoe
  • Daniel Siqueira de Oliveira
  • Lucas Gabriel de Oliveira Costa

Linguagem Fonte

  • C Simplificado (C11)

Linguagem Alvo

  • LLVM IR (Intermediate Representation)

Funcionalidades Implementadas

Aritmética:

  • Operações suportadas: +, -, *, /, %, (, )

Comparações:

  • Operadores: ==, !=, <, >, >=, <=

Operadores Lógicos:

  • Operadores: &&, ||, !

Atribuição:

  • Operador: =

Blocos de Código:

  • Delimitados por { }

Estruturas de Controle:

  • Condicionais: if, if-else
  • Estruturas de repetição: while

Tipos de Dados:

  • Tipos suportados: int, float, char (entre aspas simples), string (entre aspas duplas), void

Tipos Compostos:

  • Declaração de vetores: <tipo> <nome>[<int>]

Declaração de Funções:

  • Sintaxe:
    <tipo> <nome>(<tipo> <nome>, ...) {
      <bloco de código>
    }
    

Operações de Entrada/Saída:

  • Funções: printf, scanf

Palavras Reservadas:

int, float, char, void, printf, scanf, if, else, while, main, return

Estrutura do Projeto

  • src/: Contém o código-fonte do compilador.
  • tests/: Contém exemplos e testes para o compilador.

Requisitos

  • GCC: Compilador GNU para linguagens como C e C++.
  • LLVM: Conjunto de ferramentas de compilação, incluindo o compilador clang e o runtime do LLVM.

Utilização do Compilador e Testes:

  • Clone este repositório:
git clone git@github.com:brutexx/Compilador.git

Para utilizar o compilador:

  1. Entre na pasta src/:
cd src/
  1. Compile o projeto:
make
  1. Execute o compilador em um arquivo .c e redirecione a saída para um arquivo .ll:
./a.out < arquivo_de_entrada.c > arquivo_de_saida.ll
  1. Execute o arquivo LLVM IR gerado com o lli:
lli arquivo_de_saida.ll

Para rodar todos os testes:

  1. Entre na pasta tests/:
cd tests/
  1. Execute o comando para rodar todos os testes:
make
  • O terminal exibirá mensagens de processamento para cada arquivo dentro de input_compiler.
  • As saídas do compilador estarão em results_folder.
  • As saídas esperadas estarão em output_compiler.
  • Testes com diferenças entre a saída do compilador e a saída esperada aparecerão em arquivos .diff dentro de diff_compiler.
  • A execução dos arquivos .ll estará em results_llvm.
  • ⚠️ As demais pastas são referentes ao processo de desenvolvimento do compilador e são mantidas como histórico.

About

Compilador

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors