Processamento de Linguagens

Ano Lectivo: 07/08 (2º semestre)

Sumário das Aulas Teóricas e das Teórico-Práticas (LEI)

Docentes: Pedro Rangel Henriques (406012) + Daniela da Cruz


Teórica
(5ªfeira, 14h00-16h00)
Teórico-Práticas
(TP2: 3ªfeira, 09h00-11h00)
(TP3: 3ªfeira, 11h00-13h00)
(TP1: 5ªfeira, 09h00-11h00)
(TP4: 6ªfeira, 14h00-16h00)
2008/mar/06
2008/mar/03-07
2008/mar/13
2008/mar/10-14
2008/mar/20 (Páscoa)
2008/mar/17-21 (Páscoa)
2008/mar/27
2008/mar/26-28
2008/abr/03
2008/mar/31-abr/04
2008/abr/10
2008/abr/07-11
2008/abr/17
2008/abr/14-18
2008/abr/24
2008/abr/21-25
2008/mai/01(feriado nacional)
2008/abr/28-mai/02
2008/mai/08
2008/mai/05-09
2008/mai/15 (tolerância de ponto: "Enterro da Gata")
2008/mai/12-16 (tolerância de ponto: "Enterro da Gata")
2008/mai/22 (feriado nacional)
2008/mai/19-23
2008/mai/29
2008/mai/26-30
2008/jun/05
2008/jun/02-06
2008/jun/12
2008/jun/09-13
2008/jun/19
2008/jun/16-20
2008/jun/26
2008/jun/23-27


Semana 1 (T)

Tópicos:
Resumo:
Na 1ª parte da aula foi apresentada a motivação e grande objectivo da disciplina, a equipe docente e definido o método de avaliação, com sua componente teórica e prática.
No resto da aula, foi definido o conceito de Processador de Linguagens, dados exemplos (Compiladores, Interpretadores e Tradutores/Transformadores específicos), e caracterizadas as 2 grandes fases do Processamento de Linguagens: o Reconhecimento (ou Análise), e a Geração (ou Síntese). Foi apresentada a noção de Representação Intermédia, a separar o FrontEnd do BackEnd, e discutiu-se com detalhe as componentes de optimização e geração de código máquina próprias de um compilador (tendo-se analisado a relação intrínseca entre o Compilador a Arquitectura do Processador e o Sistema Operativo). Por fim, introduziu-se o conceito de Geração Automática de Programas.

Semana 1 (TP)

Tópicos:
Resumo:
Na aula foi apenas resolvido o 1º item acima: motivação para o uso de expressões regulares como forma de definir padrões de frases a pesquisar em texto, tendo sido usados os utilitários vi, grep, sed, com os quais se fizeram várias experiências de definição de expressões regulares.
Foi resolvida parcialmente a Questão 2 da primeira Ficha Prática. As alienas não resolvidas deverão ser completadas pelos alunos em casa, disponibilizado-se para isso três ficheiros de teste: teste1; teste2; teste3.

Semana 2 (T)

Tópicos:
Resumo:
Definição rigorosa de Alfabeto ou Vocabulário (conjunto de Símbolos Terminais), de Frase e de Linguagem; Regras Sintácticas e Semânticas; Exemplos de linguagens e as questões de derivar frases, ou reconhecer frases.
Definição formal de Expressão Regular e seus axiomas.

Semana 2 (TP)

Tópicos:
Resumo:
Introdução ao Flex com um exemplo de filtragem (da palavra "este") muito simples, o qual foi sendo sucessivamente melhorado e sofisticado.
Resolução do primeiro exercício de Flex da Ficha Prática 1 (exercício 3.1 da 1ªFolha de Problemas).

Semana 3 (T)

Tópicos:
Resumo:
Nesta aula reviu-se a definição de ER e com base na mesma noção de Alfabeto (ou conjunto de Símbolos Terminais) foi feita a definição formal de Gramática Independente de Contexto (GIC), sendo estabelecida a diferença relativamente a uma Gramática Dependente de Contexto (GDC).
Depois, na 2ª parte, pegou-se em caso concretos de ERs dos vários tipos e introduziu-se que questão de fazer o seu reconhecimento baseado em funções recursivas (método descendente, preditivo) tendo-se introduzido o padrão da função de reconhecimento para cada tipo de ER.

Semana 3 (TP)

Tópicos:
Resumo:
Conclusão do primeiro exercício de Flex da Ficha Prática 1 (exercício 3.1 da 1ªFolha de Problemas) e Resolução do Somador de Números (exercício 3.3 da 1ªFolha de Problemas).

Semana 4 (T)

Tópicos:
Resumo:
Revisão geral da definição de GIC e de GR, bem como das ideias da última aula sobre reconhecedores funcionais recursivos descendentes para Linguagens Regulares definidas por Expressões Regulares.
Introdução aos Autómatos Determinista e revisão da teoria de Grafos.

Semana 4 (TP)

Tópicos:
Resumo:
Discussão sobre makefiles, o programa make e sobre grafos.
Conclusão do exercício de Flex da Ficha Prática 1 Somador de Números (exercício 3.3 da 1ªFolha de Problemas); discussão sobre Contextos ou Estados e start conditons.

Semana 5 (T)

Tópicos:
Resumo:
Definição de Autómato Determinista Reactivo, exemplos e implementação de um Reconhecedor genérico para a Linguagem Regular definida pelo AD.

Semana 5 (TP)

Tópicos:
Resumo:
Resolução do exercício de Flex da Ficha Prática 1 Expansor de Abreviaturas (exercício 3.2 da 1ªFolha de Problemas).
Introdução ao conceito de Analisador Léxico -- exemplo da linguagem SQL.

Semana 6 (T)

Tópicos:
Resumo:
Revisão do Algoritmo standard para implementar um Reconhecedor genérico para a Linguagem Regular definida pelo AD, com inclusão de Acções Semânticas para processamento da frase durante o reconhecimento.
Exemplos de Autómatos para Definir Linguagens Regulares (construídos intuitivamente).
Transformação sistemática de ERs em Autómatos Não-Deterministas.
Conversão de Autómatos Não-Deterministas em Autómatos Deterministas através da função Epsilon-Fecho aplicada a conjuntos de estados e a transições espontâneas etiquetadas pela string nula.

Semana 6 (TP)

Tópicos:
Resumo:
O conceito de Analisador Léxico -- exemplo da linguagem SQL (exercício 2.1 da 2ªFolha de Problemas).
Processamento de Textos anotados em XML: Introdução à meta-linguagem XML e à definição de dialectos (as famílias ou Tipos de documentos); Limpeza de Marcas XML e Testes de Boa-Formação de Documentos XML (por contagem de Marcas de Abertura e de Fecho; por armazenamento das Marcas num stack) --exercício 3.4 da 1ªFolha de Problemas.

Semana 7 (T)

Tópicos:
Resumo:
Revisão do Algoritmo standard para implementar um Reconhecedor genérico para a Linguagem Regular definida pelo AD, com inclusão de Acções Semânticas para processamento da frase durante o reconhecimento.
Exemplos de Autómatos para Definir Linguagens Regulares (construídos intuitivamente).
Transformação sistemática de ERs em Autómatos Não-Deterministas.
Conversão de Autómatos Não-Deterministas em Autómatos Deterministas através da função Epsilon-Fecho aplicada a conjuntos de estados e a transições espontâneas etiquetadas pela string nula.

Semana 7 (TP)

Tópicos:
Resumo:
O conceito de Analisador Léxico -- exemplo da linguagem SQL (exercício 2.1 da 2ªFolha de Problemas).
Desenvolvimento de um Analisador Léxico para XML --exercício 2.4 da 2ªFolha de Problemas.

Semana 8 (T)

Não houve aula: Feriado Nacional, Dia do Trabalhador.

Semana 8 (TP)

Tópicos:
Resumo:
Construção de uma Gramática para a Linguagem XML.
Construção de uma Gramática para a Linguagem SQL (subconjunto muito restrito).

Semana 9 (T)

Tópicos:
Resumo:
A aula foi totalmente ocupada com a resolução do 1ºTeste de Avaliação intercalar realizado na 4ªfeira, dia 7 de Maio.

Semana 9 (TP)

Tópicos:
Resumo:
Foi apresentada a ideia de Gerador Automático de Compiladores e foi introduzida a arquitectura dum sistema de desenvolvimento de compiladores baseado no par Lex/Yacc, bem como foi definida a sintaxe do Yacc, usando-se para isso a Linguagem XML (iniciada na aula anterior).
Depois foi gerado um parser concreto para reconhecer uma Lista de Notas.

Semana 10 (T)

Não houve aula: Feriado Nacional, Dia do Corpo de Deus.

Semana 10 (TP)

Tópicos:
Resumo:
Foi relembrada a arquitectura para o desenvolvimento de tradutores baseado no par Lex/Yacc (abordagem TDS), tendo sido concretizada na escrita da respectiva Makefile.
Depois foi construída uma Gramática Tradutora para a Linguagem LISTA de NOTAS, sofrendo várias metamorfoses.

Semana 11 (T)

  • Análise Sintáctica suportada em Gramáticas Independentes de Contexto:

    Semana 11 (TP)

    Tópicos:
    Resumo:
    A aula foi toda dedicada à construção de uma Gramática Tradutora para reconhecer documentos XML e criar a sua Representação Interna na forma de uma lista generalizada de Atributos e Conteúdo de cada Elemento.

    Semana 12 (T)

  • Análise Sintáctica suportada em Gramáticas Independentes de Contexto:

    Semana 12 (TP)

    Tópicos:
    Resumo:
    A aula foi toda dedicada à análise da Linguagem de Programação Imperativa LogoLISS; sua filosofia e estrutura global. Foi ainda estudado com detalhe o tratamento que o Compilador terá de dar à Declaração de Variáveis: Alocação de Memória; Criação e Manutenção da Tabela de Definições (Tabela de Identificadores); geração de código para Inicialização de Variáveis.

    author: prh@di.uminho.pt; 
    Last modified: domingo, Junho 8, 2008 at 15:45