- Repositório do Grupo 15 da matéria de Compiladores 1 com o Sergio do semestre 2025.2 da FCTE
| Alexandre Beck | Arthur Matos | Diogo (Líder) | Pedro Miguel | Pedro Torreão |
|---|---|---|---|---|
| @zzzBECK | @Arthur-Matos | @SDC-Diih | @pedroMADBR | @PedroTorreao21 |
Nosso interpretador oferece suporte para um subconjunto essencial da linguagem C, incluindo:
-
Análise Léxica e Sintática:
- Tokenização do código-fonte.
- Análise sintática com tratamento e exibição de erros.
-
Tipos de Dados e Variáveis:
- Declaração de variáveis dos tipos
int,floatechar. - Suporte a strings através de
char*.
- Declaração de variáveis dos tipos
-
Controle de Fluxo:
- Estruturas condicionais:
ifeelse. - Laços de repetição:
forewhile.
- Estruturas condicionais:
-
Expressões:
- Operadores aritméticos:
+,-,*,/.
- Operadores aritméticos:
-
Funções:
- Execução de funções e execução a partir de uma função principal
main().
- Execução de funções e execução a partir de uma função principal
- Necessário utilizar Linux, WSL ou macOS
- Necessário instalar as seguintes ferramentas do C: Bison e flex
Este projeto pode ser compilado usando o Makefile. O Makefile foi configurado para permitir a compilação com ou sem a impressão da Árvore Sintática Abstrata (AST) para fins de depuração.
Para compilar o interpretador sem a impressão da AST (modo de execução normal), execute:
makeIsso irá gerar o executável em src/interp.
Para compilar o interpretador habilitando a visualização da AST antes da execução do código, passe a variável PRINT_AST=1 para o make:
make PRINT_AST=1Isso define a flag PRINT_AST que é usada pelo src/main.c para imprimir a árvore.
Após a compilação, você pode executar o interpretador de duas formas:
Execute o programa e digite o código C diretamente no terminal:
./src/interpO programa irá aguardar a entrada do código. Após digitar as linhas de código, pressione Ctrl+D (em Linux/macOS) ou Ctrl+Z + Enter (em Windows) para finalizar a entrada.
O interpretador irá executar o código. Se compilado com PRINT_AST=1, ele exibirá a AST antes de imprimir o resultado da execução.
Você pode executar um arquivo .c diretamente passando-o como entrada (stdin):
./src/interp < testeCases/teste1.cO Makefile inclui outros alvos úteis:
Compila e executa o interpretador em modo interativo. Por padrão, compila sem AST.
make runPara compilar com AST e executar:
make run PRINT_AST=1Este comando compila o interpretador e executa automaticamente todos os arquivos teste*.c localizados no diretório testeCases. Os resultados de todos os testes (incluindo a saída da AST, se habilitada) são concatenados e salvos em testeCases/results.txt.
make testPara rodar os testes e incluir a impressão da AST nos resultados:
make test PRINT_AST=1Remove todos os arquivos compilados e gerados pelo Bison/Flex (incluindo o executável src/interp e o arquivo testeCases/results.txt).
make cleanDocumentação oficial e guias de referência para as principais tecnologias utilizadas no projeto:
- Linguagem C: Referência completa da linguagem C e sua biblioteca padrão.
- Flex: Manual oficial do Flex (Fast Lexical Analyzer Generator), a ferramenta utilizada para a análise léxica.
- Bison: Manual oficial do Bison, o gerador de analisadores sintáticos da GNU utilizado para a análise sintática.