Departamento de Informática (UM)

Página de Unidade Curricular

DesignaçãoCódigoCursoRegimeRegente

Processamento de Linguagens e Compiladores

9870 [8505O7]

Licenciatura em Ciências da Computação [CCOM]

S5

Pedro Manuel Rangel Santos Henriques

Objetivos

Esta UC insere-se no 3º ano de um 1º ciclo, onde se pretende alcançar uma formação base na área do curso, situando-se na subárea das Ciências da Computação.
A UC de Processamento de Linguagens usa os conhecimentos adquiridos nas UCs antecedentes de Programação, nomeadamente de algoritmos imperativos e de estruturas de dados (tabelas, árvores e grafos).
O objetivo geral é ensinar formalismos para especificar as linguagens e técnicas para derivar desses formalismos programas para reconhecer e transformar frases dessas linguagens.

Programa

1. Introdução ao Processamento de Linguagens: a noção de Linguagem e de Gramática, Interpretador versus Compilador; Arquitetura de um processador de linguagens: análise léxica, análise sintática e análise semântica.
2. Linguagens Regulares e Análise Léxica; Especificação de linguagens regulares com expressões regulares; Reconhecimento de linguagens especificadas com expressões regulares: o conceito de autómato; Conversão de Expressões Regulares em Autómatos Finitos Determinísticos; A ferramenta flex como gerador de autómatos.
3. Análise Sintática: Linguagens e Gramáticas Independentes de Contexto; Estrutura e funcionamento de um parser; Parsing Top-Down: o Recursivo-descendente e LL(1); Parsing Bottom-UP: LR(0), LR(1) e SLR(1); Utilização da ferramenta yacc como gerador de parsers Bottom-UP.
4. Análise Semântica.
5. Transformação especificada via Gramáticas Tradutoras (GT) - Tradução Dirigida pela Sintaxe.

Bibliografia

Pedro Reis Santos & Thibault Langlois, "Compiladores – Da Teoria à Prática", FCA, 2014.

R. G. Crespo, "Processadores de Linguagens: da concepção à implementação", IST-Press, 1998.

Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

William Waite & Carter, "An Introduction to Compiler Construction", HarperCollin College Publishers, 1993.

Dick Grune & Kees van Reeuwijk & Henri E. Bal & Ceriel J.H. Jacobs & Koen Langendoen, "Modern Compiler Design", 2nd. edition, Springer, 2012.

Resultados da aprendizagem

Competências específicas a adquirir na área de Processamento de Linguagens:
- Capacidade de especificar linguagens de domínio específico através de gramáticas;
- Capacidade de desenvolver processadores para essas linguagens com base na respetiva gramática;
- Capacidade de extrair dados de um texto com base em regras de produção (padrão-ação) baseadas em expressões regulares;
- Capacidade de transformar qualquer texto num outro formato com base em regras de produção (padrão-ação) baseadas em expressões regulares;
- Capacidade para usar programas que produzem programas com base em especificações formais (geradores de analisadores léxicos e de compiladores);
- Conhecimentos sobre autómatos como modelos formais de máquinas de estado e base de reconhecedores de frases guiados por tabela;
- Capacidade de utilização de ferramentas genéricas de informática em ambiente Linux baseadas em expressões regulares, em grafos ou outras.

Método de avaliação

A avaliação da aprendizagem envolve: um trabalho de desenvolvimento experimental e escrito, a realizar em grupo, consubstanciando uma componente de carácter individual.
Tanto a componente individual (teste ou exame) como a componente de grupo (trabalhos práticos) têm limite de execução temporal bem definido, nunca excedendo o período letivo.
A classificação final é dada na forma:
- 40% Da classificação provém da componente prática de grupo;
- 60% Da classificação provém da componente individual.
É considerado aprovado o aluno cuja nota final seja superior ou igual a 10 (dez) valores, sendo obrigatório ter classificação positiva em todos os instrumentos de avaliação.

Funcionamento

Turno: T 1; Docente: Pedro Manuel Rangel Santos Henriques; Dep.: DI; Horas: 30.
Turno: TP 1; Docente: Pedro Manuel Rangel Santos Henriques; Dep.: DI; Horas: 30.

[ Outras UCs do Departamento ]