Processamento de Linguagens

(Opção do MI / CEI)

Ano Lectivo: 06/07 (2º semestre)

Departamento de Informática / Escola de Engenharia

Universidade do Minho


AVISOS


Apresentação

Cursos a que é leccionada:

Mestrado e Curso de Especialização em Informática -- 1º ano
Escolaridade:

2 + 0 + 0
Responsável:

Pedro Rangel Henriques
Equipe Docente:
Pedro Rangel Henriques [prh@di.uminho.pt] (1ºMódulo)
José João Dias de Almeida [jj@di.uminho.pt] (3ºMódulo)
Motivação:

O uso de linguagens de programação ou de comandos é a base em que assenta toda a Comunicação Humano/Computador, ou seja, é o suporte de toda a actividade do Programador. Mas usar linguagens variadas e de diferentes níveis de abstracção na interacção com uma máquina que só entende uma linguagem primitiva (o código-máquina), requer que se desenvolvam tradutores entre essas linguagens. Tais programas, ditos compiladores ou processadores de linguagens (para se ser mais genérico), são complexos e sujeitos a apertados requisitos de alta performance.
Esta disciplina opcional visa precisamente clarificar todos estes conceitos(sobre linguagens, gramáticas e seus reconhecedores/tradutores) de modo a habilitar os alunos a serem capazes de produzir (automaticamente) processadores para as novas linguagens de que tenham necessidade.
Ao fazê-lo, pretende-se, ensinar técnicas de programação e ferramentas que possam ser úteis em outras áreas, nomeadamente no processamento de língua natural (PLN), na manipulação (extracção de conhecimento) de textos e no tratamento de documentos.
Em particular, falar-se-á ainda do contributo que esta técnicas podem aportar ao PLN, dando-se especial ênfase ao papel das Expressões Regulares e à programação baseada em Sistema Reescrita ou de Produção (condição-acção) e referindo linguagens de scripting relevantes como o Perl.
Estrutura de Funcionamento:

Curso teórico-prático.
Exposição da matéria fundamental ---motivação, conceitos, definições, métodos e justificações--- completada com a resolução de exercícios de consolidação (especificação e implementação), no quadro e no computador.
Objectivos:

Os objectivos fundamentais deste curso são:
A tónica fundamental deste curso será posta na ampla e detalhada caracterização desta área de trabalho, procurando evidenciar problemas e soluções, indicando o que está bem estabelecido e quais são as principais linhas de investigação ainda em aberto.


Avaliação

Critério:

A Avaliação tem apenas uma componente teórico-prática ---dissertação sobre alguns tópicos desenvolvidos ao longo do semestre--- de acordo com o carácter do curso.
A nota final, na escala de 0 a 20 cf. a regulamentação em vigor, será obtida através da realização de 3 provas escritas parciais, propostas ao longo do semestre (avaliação contínua) e nesse caso será a soma das 3 notas, ou então através da realização dum exame escrito final.


Projecto Integrado

Para fazer o download do enunciado do Projecto (único) proposto para esta edição de 2006/2007 e respectivos anexos, clique abaixo:


Conteúdo Programático

Programa detalhado:

Módulo I: Processamento de Linguagens - Ontem, Hoje e Amanhã:
Módulo II. Gramáticas de Atributos:
Módulo III. Processamento de Linguagens & Scripting:
Módulo IV. Noção de Documento Semi-Estruturado e de Linguagens de Anotação; Processamento Estruturado de Documentos (breve introdução).


Bibliografia

Material bibliográfico proposto para apoio ao curso:

1. J. A. Saraiva, "Especificação e Processamento de Linguagens", versão 1.0, Textos Pedagógicos, Univ. do Minho, 1995
2. R. G. Crespo, "Processadores de Linguagens: da concepção à implementação", IST-Press, 1998
3. J.J. Almeida & J.B. Barros, "Linguagens", Notas Pedagógicas, Univ. do Minho, 1990
4. J.J. Almeida & F.J. Ferreira, "YACC", Notas Pedagógicas, Univ. do Minho, 1991
5. Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986
6. Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992
7. Waite & Carter, "An Introduction to Compiler Construction", HarperCollin College Publishers, 1993
8.Andrew W. Appel, "Modern Compiler Implementation in Java", Cambridge University Press, 1997
9. Andrew W. Appel, "Modern Compiler Implementation in C", Cambridge University Press, 1997
10. Andrew W. Appel, "Modern Compiler Implementation in ML", Cambridge University Press, 1997
11.M353 Programming and Programming Languages, "Unit 13: Compiling -- volume I", The Open University, 1994
12. M353 Programming and Programming Languages, "Unit 14: Compiling -- volume II", The Open University, 1994
13. M353 Programming and Programming Languages, "Unit 15: Compiling -- volume III", The Open University, 1994
14. B. Teufel & S. Schmidt & T. Teufel, "C2 Compiler Concepts"}, Springer-Verlag, 1993
15. R. Hunter, "Compiladores: sua concepção e programação em Pascal", Editorial Presença, Colecção Sistemas, 1986
16. J.R. Levine & T. Mason & D. Brown, "Lex & Yacc", Ed. Dale Dougherty, O'Reilly & Associates Inc., 1992
17. Manuais das ferramentas flex e yacc
18. Manuais da ferramenta LRC


Notas Pedagógicas e Material de Apoio Diverso

De momento e para além do material bibliográfico recomendado, encontram-se disponíveis os seguintes elementos complementares de apoio:


Avisos Importantes


author: prh@di.uminho.pt;
Last modified: 02 de Fevereiro de 2007