CCT-UFCA/Ciência da Computação/Compiladores
Programa do Componente Curricular
[editar | editar código]| Código: | CC0032 | ||||||||
| Componente Curricular: | Compiladores | ||||||||
| Semestre de Oferta: | 6º Semestre | Tipo: | Disciplina | Caráter: | Obrigatória | ||||
| Unidade Acadêmica Responsável: | Centro de Ciências e Tecnologia - CCT | ||||||||
| Área: | Programação | ||||||||
| Créditos: | 4 | Carga horária: | 64 | Teórica: | 48 | Prática: | 16 | Extensão: | - |
| Pré-requisito: | CC0020 - Arquitetura e Organização de Computadores, CC0022 - Fundamentos de Linguagens de Programação e CC0066 - Autômatos e Linguagens Formais | ||||||||
| Co-requisito: | |||||||||
| Equivalência: | |||||||||
Objetivos
[editar | editar código]A implementação de uma linguagem de programação exige conhecimento teórico abstrato de Linguagens Formais, habilidade de programação muito desenvolvida, conhecimento detalhado da linguagem a ser implementada, domínio de diversas estruturas de dados e compreensão da arquitetura das máquinas nas quais a linguagem será implementada, incluindo a sua linguagem de montagem (incluem-se nestas as chamadas máquinas virtuais). Sendo assim, a disciplina de Compiladores é uma oportunidade importante de consolidação de conhecimentos desenvolvidos em outras disciplinas. Este curso, além da consolidação dos conceitos já mencionados, tem também o objetivo de preparar o aluno a compreender e especificar uma linguagem de programação definindo e implementando cada estrutura de seu compilador (Analisadores Léxico, Sintático, Semântico e Geração de Código).
Ementa
[editar | editar código]Análise Léxica. Análise Sintática. Análise Semântica. Ambientes de Execução. Geração de Código. Projeto e Implementação de um Compilador.
Conteúdo
[editar | editar código]- Analise semântica
- Representação intermediária
- Construção da Linguagem
- LLVM
- Automatos finitos
- Tradução dirigida por sintaxe
- Construção do tradutor
- Análise léxica
- Expansão do tradutor
- Tabela de símbolos
- Expressões regulares
- Reconhecimento de tokens
- Ferramentas de análise léxica
- Geradores de analisadores lexicos
- Gramáticas
- Transformação de gramáticas
- FIRST E FOLLOW
- Análise descendente
- Ferramentas de análise sintática
- Utilização do Bison
Metodologia
[editar | editar código]A disciplina combina aulas expositivas e práticas, promovendo a integração entre teoria e aplicação prática. As atividades propostas buscam desenvolver tanto o domínio conceitual quanto habilidades de colaboração e resolução de problemas.
- Aulas de conteúdo: exposição teórica dos conceitos, métodos e técnicas relacionadas ao tema da disciplina;
- Aulas de exercícios: resolução de listas de exercícios, discussão em grupo e apresentação de soluções passo a passo, visando consolidar o aprendizado e aplicar os conceitos na prática;
- Acompanhamento de projeto: encontros destinados à orientação e acompanhamento do desenvolvimento dos projetos dos alunos, com feedback contínuo sobre o progresso e aplicação dos conceitos estudados.
Avaliação
[editar | editar código]A avaliação da disciplina é composta por momentos teóricos e práticos, voltados para verificar tanto o domínio conceitual quanto a aplicação dos conteúdos.
- Duas Provas: avaliações escritas que abordam os principais tópicos estudados, permitindo verificar a compreensão teórica e a capacidade de resolução de problemas;
- Trabalho: desenvolvimento de uma atividade prática ou projeto aplicado, individual ou em grupo, relacionado aos temas da disciplina.
A nota final é calculada com base no desempenho nas duas provas e no trabalho, conforme os critérios definidos pelo professor responsável.
Bibliografia Básica
[editar | editar código]- LOUDEN, K. C. Compiladores: princípios e práticas. São Paulo: Thomson, 2004. 569 p.
- SETZER, V. W.; MELO, I. S. H. A Construção de um Compilador. 3a ed. Editora Campus, 1986.
- PRICE, A. M. A.; TOSCANI, S. S. Implementação de Linguagens de Programação: Compiladores. Editora Sagra Luzzatto, 2000.
Bibliografia Complementar
[editar | editar código]- SEBESTA, R. W. Conceitos De Linguagem De Programação. Editora Bookman, 2018.
- KOWALTOWSKY, T. Implementação de Linguagens de Programação. São Paulo, Guanabara Dois, 1983.
- NETO, J. J. Introdução à Compilação. Rio de Janeiro, Livros Técnicos Científicos, 1987.
- WIRTH, N. Algorithms and Data Structures. Englewood Cliffs: Prentice-Hall, 1986
- MENEZES, P. F. B. Linguagens Formais e Autômatos. 3a Edição. Série Livros Didáticos. Instituto de Informática da UFRGS.