Processamento de Linguagens I
Ano Lectivo: 04/05 (2º semestre)
Sumário das Aulas Teórico-Práticas (TP3-LESI)
Docente: Pedro Rangel Henriques (406012)
Aula P de 2005/03/23
Tópicos:
-
Gramáticas: escrita de uma Gramática Independente de Contexto (GIC) face à descrição da linguagem pretendida no contexto de
determinado problema.
-
Análise Léxica: Desenvolvimento de um Analisador Léxico (AL) para reconhecimento de todos os símbolos terminais de uma Linguagem,
dada a respectiva GIC, fazendo a Geração Automática de um Reconhecedor de Expressões Regulares baseado num
Autómato Determinista Reactivo, com recurso à Ferramenta Flex.
-
Continuação da Resolução dos exercícios da Ficha TP n.º 2 para consolidação dos conhecimentos básicos sobre o Flex, agora
com vista à geração de programas autónomos para Filtragem de Textos:
- Exercício 2.3.1, Filtro de Texto para Entrevistas.
- Exercício 2.3.2, Filtro de Texto para Expansão de Abreviaturas.
-
Continuação da Resolução dos exercícios da Ficha TP n.º 2 para consolidação dos conhecimentos básicos sobre o Flex,
com vista à geração de Analisadores Léxicos (AL) que funcionam ligados a um Parser externo:
- Introdução ao Exercício 2.2.2, AL para a Linguagem de Medicamentos Brancos.
Resumo:
No final desta aula prática, os alunos devem ter ficado a saber:
- O conceito típico de Filtro de Texto e as 2 modalidades habituais em que esta família de programas costuma ser usada para:
reproduzir à saída o texto da entrada, retirando-lhe (ou modificando) determinada família de palavras;
extrair do texto de entrada determinada família de palavras de modo a processá-las e a produzir o resultado final.
- Especificar um Filtro de Texto através um sistema de regras "Condição-Acção", usando Expressões Regulares para definir as condições.
- Gerar um Filtro de Texto a partir da especificação, recorrendo ao gerador Flex.
Aula P de 2005/03/30
Tópicos:
-
Gramáticas: escrita de uma Gramática Independente de Contexto (GIC) face à descrição da linguagem pretendida no contexto de
determinado problema.
-
Análise Léxica: Desenvolvimento de um Analisador Léxico (AL) para reconhecimento de todos os símbolos terminais de uma Linguagem,
dada a respectiva GIC, fazendo a Geração Automática de um Reconhecedor de Expressões Regulares baseado num
Autómato Determinista Reactivo, com recurso à Ferramenta Flex.
-
Continuação da Resolução dos exercícios da Ficha TP n.º 2 para consolidação dos conhecimentos básicos sobre o Flex,
com vista à geração de Analisadores Léxicos que funcionam ligados a um Parser externo:
- Conclusão ao Exercício 2.2.2, AL para a Linguagem de Medicamentos Brancos: escrita da Gramática;
identificação de todas as palavras-reservadas, sinais e classes terminais; codificação dos símbolos terminais;
definição de cada símbolo através de uma ER e retorno do respectivo código; desenvolvimento de um programa principal
para ler todo o ficheiro de entrada e escrever o código de todos os símbolos.
Resumo:
No final desta aula prática, os alunos devem ter ficado a saber:
- Escrever a GIC para uma dada linguagem, descrita informalmente, identificado o conjunto dos seus Símbolos Terminais.
- Especificar um Analisador Léxico para a linguagem gerada por uma dada Gramática através dum sistema de regras "Condição-Acção", usando Expressões Regulares para definir as condições.
- Gerar um Analisador Léxico a partir da especificação, recorrendo ao gerador Flex.
- Testar um Analisador Léxico à custa de uma função main() apropriada.
Aula P de 2005/04/06
Tópicos:
-
Gramáticas: consolidação/aperfeiçoamento da escrita de uma Gramática Independente de Contexto (GIC) face à descrição da linguagem pretendida no contexto de determinado problema.
-
Análise Léxica: uso de um Analisador Léxico (AL) previamente desenvolvido com recurso à Ferramenta Flex.
-
Análise Sintáctica: geração de um Parser, usando a ferramenta Yacc, a partir da GIC construída acima.
-
Análise Semântica: geração do Analisador Semântico (ASem), através da ferramenta Yacc, por acréscimo acções semânticas às
produções da GIC anterior, o que implica definir o estado global do processador e associar valores concretos aos símbolos
da gramática.
-
Resolução dos exercícios da Ficha TP n.º 3 para consolidação dos conhecimentos básicos sobre o Yacc,
com vista à geração de Processadores de Linguagens (PLs) seguindo a abordagem da Tradução Dirigida pela Sintaxe:
- Exercício 2.2, processador para a linguagem de descrição do Anuário de Medicamentos Brancos: escrita da GIC
na notação do Yacc e integração do AL da aula anterior, para produção e teste do Parser;
escolha das variáveis de estado necessárias para validar as Classes e Fabricantes dos medicamentos e para guardar as
listas de informação que permitam gerar as páginas pedidas; associação de valores semânticos aos símbolos e
identificação das produções às quais será preciso adicionar acções semânticas para cálculo de valores, validação de
condições contextuais e produção dos resultados finais.
Resumo:
No final desta aula prática, os alunos devem ter ficado a saber:
- Escrever a GIC para uma dada linguagem, descrita informalmente.
- Integrar um Analisador Léxico gerado pelo Flex com o Processador gerado com o Yacc
(passando valores semânticos além do código retornado).
- Especificar e Gerar um Analisador Sintáctico com base no Yacc.
- Testar um Parser.
- Evoluir de um Parser par um PL, transformando a GIC em GT.
Aula P de 2005/04/13
Tópicos:
-
Gramáticas: consolidação/aperfeiçoamento da escrita de uma Gramática Independente de Contexto (GIC) face à descrição da linguagem pretendida no contexto de determinado problema.
-
Análise Léxica: uso de um Analisador Léxico (AL) previamente desenvolvido com recurso à Ferramenta Flex.
-
Análise Sintáctica: geração de um Parser (AS), usando a ferramenta Yacc, a partir da GIC construída acima.
-
Análise Semântica: geração do Analisador Semântico (ASem), através da ferramenta Yacc, por acréscimo acções semânticas às
produções da GIC anterior, o que implica definir o estado global do processador e associar valores concretos aos símbolos
da gramática.
-
Continuação da resolução dos exercícios da Ficha TP n.º 3 para consolidação dos conhecimentos básicos sobre o Yacc,
com vista à geração de Processadores de Linguagens (PLs) seguindo a abordagem da Tradução Dirigida pela Sintaxe:
- Conclusão do Exercício 2.2, processador para a linguagem de descrição do Anuário de Medicamentos Brancos:
teste do Parser;
escolha das variáveis de estado necessárias para validar as Classes e Fabricantes dos medicamentos e para guardar as
listas de informação que permitam gerar as páginas pedidas; associação de valores semânticos aos símbolos e
adição de acções semânticas às produções para cálculo de valores, validação de
condições contextuais e geração das páginas HTML pedidas.
- Exercício 2.3, processador para a linguagem de anotação de documentos XML:
início da análise do problema.
Resumo:
No final desta aula prática, os alunos devem ter ficado a saber:
- Escrever a GIC para uma dada linguagem, descrita informalmente.
- Integrar um Analisador Léxico gerado pelo Flex com o Processador gerado com o Yacc
(passando valores semânticos além do código retornado).
- Especificar e Gerar um Analisador Sintáctico com base no Yacc.
- Testar um Parser.
- Transformar uma GIC em GT, gerando o Analisador Semântico e o Tradutor com base no Yacc.
Aula P de 2005/04/20
Tópicos:
-
Gramáticas: consolidação/aperfeiçoamento da escrita de uma Gramática Independente de Contexto (GIC) face à descrição da linguagem pretendida no contexto de determinado problema.
-
Análise Léxica: uso de um Analisador Léxico (AL) previamente desenvolvido com recurso à Ferramenta Flex.
-
Análise Sintáctica: geração de um Parser, usando a ferramenta Yacc, a partir da GIC construída acima.
-
Análise Semântica: geração do Analisador Semântico (ASem), através da ferramenta Yacc, por acréscimo acções semânticas às
produções da GIC anterior, o que implica definir o estado global do processador e associar valores concretos aos símbolos
da gramática.
-
Conclusão da Ficha TP n.º 3 para consolidação dos conhecimentos básicos sobre o Yacc,
com vista à geração de Processadores de Linguagens (PLs) seguindo a abordagem da Tradução Dirigida pela Sintaxe:
- Exercício 2.3, processador para a linguagem de anotação de documentos XML:
discussão da sintaxe e semântica desta linguagem, neste caso específico;
identificação da necessidade de fazer a análise léxica a dois níveis para distinguir o reconhecimento de símbolos
dentro das "marcas" ("tags") e fora delas.
-
Resolução do exercício da Ficha TP n.º 4 para revisão das matérias anteriores e consolidação dos conhecimentos sobre o Yacc,
com vista à geração de Processadores de Linguagens (PLs) seguindo a abordagem da Tradução Dirigida pela Sintaxe:
- Exercício 2.1, Construção de um Gerador de Indices Remissivos a partir da descrição, em linguagem própria,
das palavras a destacar em cada página de um documento:
implementação de todas as fases, do AL ao Tradutor.
Resumo:
No final desta aula prática, os alunos devem ter ficado com sólidos conhecimentos práticos sobre como:
- Escrever a GIC para uma dada linguagem, descrita informalmente através de exemplos de frases válidas.
- Integrar um Analisador Léxico gerado pelo Flex com o Processador gerado com o Yacc
(passando valores semânticos além do código retornado).
- Especificar e Gerar um Analisador Sintáctico com base no Yacc.
- Testar um Parser.
- Transformar uma GIC em GT, gerando o Analisador Semântico e o Tradutor com base no Yacc.
Aula P de 2005/04/27
Tópicos:
-
Gramáticas: consolidação/aperfeiçoamento da escrita de uma Gramática Independente de Contexto (GIC) face à descrição da linguagem pretendida no contexto de determinado problema.
-
Análise Léxica: uso de um Analisador Léxico (AL) previamente desenvolvido com recurso à Ferramenta Flex.
-
Análise Sintáctica: geração de um Parser, usando a ferramenta Yacc, a partir da GIC construída acima.
-
Análise Semântica: geração do Analisador Semântico (ASem), através da ferramenta Yacc, por acréscimo acções semânticas às
produções da GIC anterior, o que implica definir o estado global do processador e associar valores concretos aos símbolos
da gramática.
-
Conclusão da Ficha TP n.º 4 para revisão das matérias anteriores e consolidação dos conhecimentos sobre o Yacc,
com vista à geração de Processadores de Linguagens (PLs) seguindo a abordagem da Tradução Dirigida pela Sintaxe:
- Exercício 2.1, Construção de um Gerador de Indices Remissivos a partir da descrição, em linguagem própria,
das palavras a destacar em cada página de um documento:
implementação de todas as fases, do AL ao Tradutor.
Resumo:
No final desta aula prática, os alunos devem ter ficado com sólidos conhecimentos práticos sobre como:
- Escrever a GIC para uma dada linguagem, descrita informalmente através de exemplos de frases válidas.
- Integrar um Analisador Léxico gerado pelo Flex com o Processador gerado com o Yacc
(passando valores semânticos além do código retornado).
- Especificar e Gerar um Analisador Sintáctico com base no Yacc.
- Testar um Parser.
- Transformar uma GIC em GT, gerando o Analisador Semântico e o Tradutor com base no Yacc.
Aula P de 2005/05/04
Tópicos:
-
Discussão final sobre a resolução da Ficha TP n.º 4 para revisão das matérias anteriores e consolidação dos conhecimentos
sobre o Yacc, com vista à geração de Processadores de Linguagens (PLs)
seguindo a abordagem da Tradução Dirigida pela Sintaxe:
- Exercício 2.1, Construção de um Gerador de Indices Remissivos a partir da descrição, em linguagem própria,
das palavras a destacar em cada página de um documento:
implementação de todas as fases, do AL ao Tradutor.
-
Resolução da Ficha TP n.º 5: construção do Autómato LR com memória para reconhecimento BU e verificação da Condição LR(0);
comparação com a validação da Condição LL(1); construção das respectivas Tabelas de Parsing:
- Exercícios 2.1, 2.2 e 2.3.
Resumo:
No final desta aula prática, os alunos devem ter ficado com sólidos conhecimentos práticos sobre como:
- Escrever a GIC para uma dada linguagem, descrita informalmente através de exemplos de frases válidas.
- Integrar um Analisador Léxico gerado pelo Flex com o Processador gerado com o Yacc
(passando valores semânticos além do código retornado).
- Especificar e Gerar um Analisador Sintáctico com base no Yacc.
- Testar um Parser.
- Transformar uma GIC em GT, gerando o Analisador Semântico e o Tradutor com base no Yacc.
- Construir manualmente as Tabelas de Decisão para implementação do algoritmo de parsing, seja segundo a
estratégia Top-Down (LL), seja segundo a estratégia Bottom-Up (LR).
- Avaliar o tipo de uma GIC dada, isto é, testar se satisfaz a condição LL(1), ou a condição LR(0) e SLR(1).
Aulas P de 2005/05/18
Tópicos:
-
Discussão e Avaliação do 1º Trabalho Prático.
Aulas P de 2005/05/25
Tópicos:
-
Conclusão da Avaliação do 1º Trabalho Prático.
Discussão de dúvidas sobre o 2º Trabalho Prático.
Aula P de 2005/06/01
(Aula dada a toda a turma para compensação da teórica de 5ªfeira (feriado nacional).
Tópicos:
-
Gramáticas de Atributos -- resolução de pequenos exercícios diversos para consolidação dos conceitos básicos:
- Cálculo do comprimento e da soma de uma Lista de Números.
- Cálculo parcial da soma de uma Lista de Número, considerando apenas os elementos entre o I.ésimo e o F.ésimo.
- Geração de instruções Sql para inserção de indivíduos numa base de dados, juntando o Nome Próprio
ao Apelido, a partir de uma Lista Nomes seguida do Apelido comum.
Resumo:
No final desta aula prática, os alunos devem ter ficado com sólidos conhecimentos práticos sobre como:
- Escrever a GA para uma dada linguagem, descrita informalmente, incluindo:
- A escolha dos Atributos Sintetizados e Herdados de cada símbolo;
- A escrita das Regras para o Cálculo de todos os atributos;
- A escrita de Condições de Contexto para validar a semântica estática da linguagem;
- A escrita de Regras de Tradução para implementar a semântica dinâmica da linguagem.
- Especificar a GA, quer na forma textual tradicional, quer na forma diagramática (gráfica) com base na árvore sintáctica
author: prh@di.uminho.pt;
Last modified: 04 de Junho de 2005