Processamento de Linguagens I
Ano Lectivo: 04/05 (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 + 2 + 0)
- José Carlos Ramalho [jcr@di.uminho.pt] (0 + 2 + 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:
-
Rever a noção de linguagem formal e caracterizar o conceito
de processamento de linguagens, 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:
Para aceder (e eventualmente fazer o download) ao enunciado dos Trabalhos Práticos propostos no ano anterior, clique abaixo:
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 Conceitos básicos: 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çã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:
Fichas de Exercícios para as Aulas Teórico-Práticas
Para fazer o download do enunciado das Fichas propostas para cada aula, clique abaixo:
Avisos Importantes
- (2005.07.19)
- As notas práticas e os resultados dos exames da 1ª época estão disponíveis em:
notas
- (2005.05.02)
- A apresentação presencial e defesa oral do 1º Trabalho Prático será feita nas Aulas TP da semana a seguir ao Enterro da Gata (16 a 21 de Maio).
O grupo deve comparecer completo no turno que reúna mais elementos.
Os grupos que não cheguem a ser avaliados 2ªf (por falta de tempo) entregarão no TP3, na 4ªf à tarde.
- (2005.05.02)
- Já está disponível o enunciado do 2º Trabalho Prático, que terá de estar pronto e ser submetido até ao dia 1 de Junho.
- (2005.04.02)
- AVISO para os alunos da LESI, TP3 (4ªf): para o exercício da próxima 4ªf é suposto que todos os alunos tenham resolvido os 3 problemas de Geração de Analisadores Léxicos (exercícios 2.1 a 2.3). Quem não resolveu ainda o 2.3 deve fazê-lo até à próxima aula.
- (2005.04.02)
- Informa-se que após vários pedidos e alguma reflexão foi decidido congelar as notas dos Trabalhos Práticos do ano passado.
Os alunos interessados nesta facilidade (não recomendada) devem avisar os docentes nas aulas e na data do exame!
- (2005.04.02)
- Recorda-se que na próxima 2ªf de manhã (dia 4 de Abril) os turnos TP do Prof. João Saraiva não funcionam, visto o docente estar a participar num Congresso;
as respectivas aulas de substituição foram devidamente anunciadas e dadas na tarde da passada 4ªfeira.
Qualquer aluno que não tenha podido comparecer, pode assistir a um dos turnos de 2ªf, ou 4ªf, à tarde.
- (2005.03.23)
- Por causa da revisão do enunciado do 1ºTP, foram acrescentados links, quer na rubrica "Trabalhos Práticos", quer na rubrica "Notas Pedagógicas e Material de Apoio".
- (2005.03.23)
- O enunciado do 1º Trabalho Prático foi revistos (consulte de novo, ou faça o download da versão final), para corrigir e acrescentar alguns detalhes nas Questões 2.3 e 2.4.
- (2005.03.19)
- Já está disponível o enunciado do 1º Trabalho Prático, que terá de estar pronto e ser submetido até ao dia 18 de Abril.
NOTA:Os grupos e respectivos membros (alunos) devem registar-se no Sistema de Submissão de Fichas e Trabalhos Práticos no decorrer da próxima semana.
- (2005.03.17)
- Foi decidido criar um 3º Turno Teórico-Prático à 4ªfeira das 14h-16h, alocado no laboratório 0.11, com vista a
dividir o 2º Turno (de 2ªfeira às 17h).
NOTA:O turno só será mantido se na prática se confirmar que há realmente um número de alunos a frequentar as aulas que justifique a existência de 3 turnos TP (que serão sempre em Laboratório).
- (2005.03.16)
- Já está activo o link para o Sistema de Submissão de Fichas e Trabalhos Práticos; encontra-se acessível no item do menu principal relativo aos Trabalhos Práticos.
- (2005.03.14)
- Foi criado um novo item no indíce deste sítio para acesso às Folhas de Problemas (Fichas práticas) propostas para resolver nas aulas TP e em casa.
- (2005.02.28)
- Os sumários das Teóricas já estão acessiveis e serão actualizados semanalmente.
author: prh@di.uminho.pt;
Last modified: 2 de Maio de 2005