Apresenta os princípios e conceitos de análise léxica, sintática e semântica, bem como geração e otimização de código, proporcionando entendimento sobre o funcionamento dos componentes de um compilador com enfoque prático; desenvolve experimentos sobre diferentes componentes de um compilador.
Embora os pré-requisitos não sejam obrigatórios, o seu domínio auxiliará muito na evolução do aprendizado:
As competências trabalhadas na disciplina são:
Implementação dos componentes de um compilador para uma máquina virtual de pilha simplificada.
Grau | Descrição | Peso na nota final |
---|---|---|
G1 | Implementação de um analisador recursivo descendente para uma gramática de expressões aritméticas. | 2,0 |
G1 | Implementação de um avaliador de expressões aritméticas com atribuição e acesso a variáveis. | 2,0 |
G1 | Definição de uma gramática livre de contexto para uma linguagem procedural Turing-complete. | 1,0 |
G2 | Implementação de um parser para uma gramática livre de contexto. | 1,5 |
G2 | Geração de uma árvore de derivação com uso tabela de símbolos, para uma gramática livre de contexto. | 1,5 |
G2 | Geração de código alvo para uma máquina virtual de pilha simplificada. | 2,0 |
A nota final será composta por trabalhos práticos de implementação, e será calculada com a média (M) dada pela regra M = (G1 + G2) / 2
, sendo G1 e G2 graus parciais formados totalmente por trabalhos práticos.
Para obter a aprovação, o aluno deve obter uma média (M) igual ou superior a 6, com frequência mínima de 8 encontros presenciais.