Processamento de Linguagens I
Ano Lectivo: 03/04 (2º semestre)
Departamento de Informática / Escola de Engenharia
Universidade do Minho
AVISOS
Apresentação
-
Cursos a que é leccionada:
- Engenharia de Sistemas e Informática -- 3º ano ()
- Matemática e Ciências da Computação -- 3º ano ()
-
Escolaridade:
- 2 + 2 + 0
-
Responsável:
- Pedro Rangel Henriques
-
Equipe Docente:
- Pedro Rangel Henriques [prh@di.uminho.pt] (1 + 0 + 0)
- João Alexandre Saraiva [jas@di.uminho.pt] (0 + 4 + 0)
Obs: é
indicado o número de turmas de cada tipo de aula que cada docente lecciona.
-
Estrutura de Funcionamento:
-
Exposição da matéria fundamental
---motivação, conceitos, definições, métodos e justificações--- a
nível das aulas teóricas.
Resolução dos exercícios de consolidação, no quadro e no
computador, a nível das aulas teórico-práticas.
Realização, no computador, de trabalhos concretos de
aplicação, em ambiente Linux, recorrendo às ferramentas flex/yacc e à linguagem C,
e LRC e à linguagem Haskell; os trabalhos serão desenvolvidos extra aulas.
-
Objectivos:
-
Os objectivos fundamentais deste curso são:
-
Introduzir a noção de linguagem e caracterizar o conceito
de processamento de linguagens formais, estabelecendo os objectivos, as
tarefas dum processador, as exigências que lhe são impostas e as técnicas de
desenvolvimento (face às restrições e à complexidade do problema);
-
Rever os conceitos de gramática e de autómato e a sua
aplicação ao desenvolvimento de Processadores de Linguagens (PL's).
-
Revisitar/Introduzir formalismos para especificação da sintaxe e da semântica das linguagens e
estudar a implementação dos analisadores que se podem derivar desses formalismos.
-
Tornar os alunos aptos a
desenvolver Processadores de Linguagens segundo os métodos da Tradução Dirigida pela Sintaxe (TDS) e da
Tradução Dirigida pela Semântica (TDSem),
recorrendo ao uso
de ferramentas para geração automática dos ditos Processadores.
Avaliação
-
Critério:
-
A Avaliação tem uma componente teórica
e uma componente prática ambas obrigatórias.
-
De acordo com o regulamento actualmente em vigor na UM, a
nota teórica será obtida através da realização
de 1 prova individual escrita. Essa prova tem as instâncias a seguir
indicadas (um aluno só poderá fazer melhoria na época
de recurso):
-
Exame, realizado na 1ª ou 2ª chamadas da época normal,
no fim do semestre
-
Exame, realizado na época de recurso, agora também no fim do semestre
A nota prática será obtida através da
realização de 2 trabalhos práticos
que envolverão o desenvolvimento completo de um
processador para uma linguagem específica, compreendendo a análise do enunciado concreto,
o planeamento da resolução e a sua implementação em computador.
O 1º trabalho usará a técnica TDS e o 2º seguirá a abordagem TDSem.
O trabalho será realizado ao longo do semestre, extra-aulas e em grupo de 2 ou 3 alunos,
sendo apresentado ao docente, para ser discutido em frente ao computador, acompanhado dum relatório sucinto,
em datas a combinar com os alunos. Recorda-se que é obrigatória a presença de todos os elementos do grupo aquando da
apresentação ao docente.
Cada Trabalho Prático será classificado
de acordo com os seguintes escalões:
Escalão |
Nota
|
Não Entregue
|
0
|
Não Satisfaz
|
7
|
Satisfaz no Mínimo
|
10
|
Satisfaz
|
13
|
Bom
|
16
|
Muito Bom
|
19
|
A nota final será determinada de acordo
com a seguinte fórmula:
NotaFinal = NotaTeorica * 0.60 + NotaPratica * 0.40
Exige-se 8 valores como nota mínima em cada uma das partes.
Trabalhos Práticos
Para fazer o download do enunciado dos Trabalhos Práticos propostos, clique abaixo:
Para fazer o Registo das Equipes e o upload dos Trabalhos Práticos (entrega electrónica dos mesmo), use esta ligação ao Sistema de Submissão de Trabalhos Práticos do DI:
Exames
Para fazer o download (do ficheiro PDF) do enunciado dos Exames de anos anteriores, clique abaixo:
Conteúdo Programático
-
Programa detalhado:
-
I. Introdução ao Processamento de Linguagens:
- I.1 Introdução dos conceitos de Linguagem e Gramática
- I.2 Caracterização de Processador de Linguagens: objectivos; tarefas; requisitos
-
II. Análise Léxica especificada via Gramáticas Regulares (GR); Autómatos Reactivos:
-
III. Análise Sintáctica especificada via Gramáticas Independentes de Contexto (GIC):
- III.1 Parsing Top-Down: Recursivo-descendente (RD) e LL(1)
- III.2 Parsing Bottom-Up: LR(0), SLR(1), LALR(1)}
-
IV. Análise Semântica e Transformação (reacção) especificada via Gramáticas Tradutoras (GT)
---Tradução Dirigida pela Sintaxe:
-
V. Análise Semântica e Transformação (reacção) especificada via Gramáticas de Atributos (GAs)
---Tradução Dirigida pela Semântica:
Bibliografia
-
Material bibliográfico proposto para apoio ao curso:
- 1. J. A. Saraiva, "Especifica\c{c}\~{a}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:
... e a seguinte documentação diversa de apoio:
Avisos Importantes
- (2004.07.29)
- As notas FINAIS da Época de Recurso estão disponíveis em
NOTAS. Os exames podem ser consultados a partir de 2a feira.
- (2004.07.20)
- As notas FINAIS da 1a Época estão disponíveis em
NOTAS.
- (2004.07.19)
- As notas da 1a época estão disponíveis em
NOTAS. Faltam lançar as notas de alguns (poucos) alunos de LESI. As notas desses alunos serão lançadas terça feira.
- (2004.06.19)
- A pauta com as notas dos Trabalhos Práticos é afixada na próxima 2ªf. Não se esqueçam da necessidade de obter nota prática maior ou igual a 8 para ir a exame.
- (2004.06.19)
- Foram incluidos nesta página (secção EXAMES) links para descarregar o PDF de exames de anos anterioes.
- (2004.06.03)
- Entrega electrónica do 2º Trabalho Prático: a data limite é na 2ªf (7.jun)
- (2004.06.03)
- Avaliação dos 2 Trabalhos Práticos: 3ªf (8.jun) e 4ªf (9jun), todo o dia, na Sala Aberta (folha de marcação com os docentes)
- (2004.05.19)
- Aula Prática extra --Demonstração do Sistema LRC: 6ªfeira, dia 21 de Maio, as 18h no DI-A2
- (2004.03.05)
- Os sumários das Teóricas já estão acessiveis e serão actualizados semanalmente.
author: prh@di.uminho.pt;
Last modified: 19 de Junho de 2004