Disciplina de Compiladores 1 do curso de Engenharia de Software da Universidade de Brasília (UnB).
Este repositório contém exemplos de código usando Flex e Bison (exclusivamente), guias de estudo, tutoriais sobre compiladores e interpretadores, além de materiais de referência (glossários, instruções de configuração e roteiros de projeto). O conteúdo está organizado em pastas por semana, cada uma contendo (quando aplicável):
- Uma pasta docs, com guias e materiais de leitura.
- Uma pasta src, com exemplos de código
.l(Flex),.y(Bison) e demais arquivos necessários para as práticas.
.
├── LICENSE
├── README.md
├── listadir.txt
├── semana 01
│ ├── docs
│ │ ├── Glossário de termos.md
│ │ ├── Guia - Configuração do ambiente de desenvolvimento.md
│ │ ├── Guia - Projeto de um compilador.md
│ │ ├── Guia - Projeto de um interpretador.md
│ │ └── Trabalho de Compiladores.md
│ └── src
│ ├── hello.README.md
│ ├── hello.l
│ └── hello.y
├── semana 02
│ ├── docs
│ │ └── Guia - Expressões regulares no flex.md
│ └── src
│ ├── Makefile
│ ├── entrada.txt
│ ├── exemplo.README.md
│ ├── exemplo.l
│ └── exemplo.y
├── semana 03
│ └── src
│ └── scanner.l
├── semana 04
│ └── src
│ ├── Makefile
│ ├── README.md
│ ├── parser.y
│ └── scanner.l
├── semana 05
│ └── src
│ ├── Makefile
│ ├── README.md
│ ├── parser.y
│ └── scanner.l
└── semana 06
└── src
├── Makefile
├── README.md
├── ast.c
├── ast.h
├── lexer.l
├── parser.y
├── tabela.c
├── tabela.h
└── tipos.h
-
semana 01
- docs:
- Glossário de termos.md: definições importantes de compiladores e ferramentas.
- Guia - Configuração do ambiente de desenvolvimento.md: instruções para instalar Flex, Bison e compiladores C/C++.
- Guia - Projeto de um compilador.md e Guia - Projeto de um interpretador.md: conceitos sobre fases de análise léxica, análise sintática, geração de código etc.
- Trabalho de Compiladores.md: detalha a proposta geral (uso de PBL, equipes, entregas P1 e P2, entrevista final).
- src:
- hello.l / hello.y: exemplo mínimo que reconhece e imprime “Hello, World!” (Flex e Bison).
- hello.README.md: explica como compilar e executar o exemplo “hello”.
- docs:
-
semana 02
- docs:
- Guia - Expressões regulares no flex.md: apresenta as ERs mais usadas para tokens no Flex.
- src:
- exemplo.l / exemplo.y: analisador que reconhece números e operadores simples, demonstrando boas práticas em Flex/Bison.
- entrada.txt: arquivo de teste.
- Makefile: automação de compilação (gera o binário
parser). - exemplo.README.md: instruções para compilar e executar o “exemplo”.
- docs:
-
semana 03
- src:
- scanner.l: projeto inicial do compilador focado em fase léxica (tokens principais), conforme aula prática.
- src:
-
semana 04
- src:
- Makefile, parser.y, scanner.l: implementação inicial do parser, integrando com o scanner para reconhecer construções básicas.
- README.md: instruções desta semana, explicando compilação e testes.
- src:
-
semana 05
- src:
- Makefile, parser.y, scanner.l: continuação do parser com tratamento de erros sintáticos (descartar tokens até certo símbolo, ex.
;). - README.md: descreve tarefas práticas e possíveis adaptações ao projeto.
- Makefile, parser.y, scanner.l: continuação do parser com tratamento de erros sintáticos (descartar tokens até certo símbolo, ex.
- src:
-
semana 06
- src:
- lexer.l, parser.y: versão mais avançada, incluindo análise semântica, manipulação de AST, tabelas de símbolos, tipos, etc.
- ast.c, ast.h: estruturas e funções para a árvore sintática abstrata.
- tabela.c, tabela.h, tipos.h: gerenciamento de símbolos e tipagem.
- Makefile, README.md: automação e documentação final do compilador.
- src:
-
Clonar o repositório
git clone https://github.com/sergioaafreitas/COMP1.git cd COMP1 -
Instalar dependências
- É necessário ter Flex e Bison instalados no sistema.
- Em distribuições Linux baseadas em Debian/Ubuntu:
sudo apt-get update sudo apt-get install flex bison
- Em outras plataformas, consulte a documentação.
-
Explorar os exemplos
- Semana 01:
- Entre em
semana 01/src. - Revise o material em
semana 01/docs. - Para compilar “hello” manualmente:
bison -d hello.y flex hello.l gcc -o hello hello.tab.c lex.yy.c -lfl ./hello
- Entre em
- Semana 02:
- Em
semana 02/src, rode:oumake ./parser entrada.txt
./parsere digite valores manualmente. - Consulte o arquivo
semana 02/docs/Guia - Expressões regulares no flex.md.
- Em
- Semana 01:
-
Consultar guias e glossários
- Cada pasta docs possui materiais de referência para instalação, expressões regulares, e roteiros de construção do compilador/interpretador.
- Novos conteúdos surgirão em semanas posteriores (análise semântica, geração de código etc.).
- Faça um fork do repositório.
- Crie uma branch para suas alterações:
git checkout -b minha-feature
- Faça commit e envie um pull request.
Este projeto está licenciado sob os termos da Licença MIT.
Se usar ou distribuir o código, cite o repositório original e mantenha os avisos de copyright.
- Professor: Sergio A. A. Freitas
- E-mail: sergiofreitas@unb.br
- Universidade de Brasília (UnB) – FCTE – CEDIS
Em caso de dúvidas, sugestões ou problemas, abra uma issue ou envie um e-mail diretamente.
Bom estudo e boas práticas no desenvolvimento de compiladores!