Processamento de Linguagens I
Ano Lectivo: 06/07 (2º semestre)
Departamento de Informática / Escola de Engenharia
Universidade do Minho
AVISOS (**Ver novidades**)
Apresentação
-
Cursos a que é leccionada:
- Engenharia de Sistemas e Informática -- 3º ano ()
-
Escolaridade:
- 2 + 2 + 0
-
Responsável:
- Pedro Rangel Henriques
-
Equipe Docente:
- Pedro Rangel Henriques [prh@di.uminho.pt] (1 + 0 + 0)
- Daniela Carneiro da Cruz [danieladacruz@di.uminho.pt] (0 + 3 + 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 LISA e à linguagem Java; 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:
Pautas com as Notas das várias provas de avaliação da disciplina
Para consultar as Notas dos Trabalhos Práticos e Exames, 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:
- R. G. Crespo, "Processadores de Linguagens: da concepção à implementação", IST-Press, 1998
- Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986
- Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992
- Waite & Carter, "An Introduction to Compiler Construction", HarperCollin College Publishers, 1993
- Andrew W. Appel, "Modern Compiler Implementation in Java", Cambridge University Press, 1997
- Andrew W. Appel, "Modern Compiler Implementation in C", Cambridge University Press, 1997
- Andrew W. Appel, "Modern Compiler Implementation in ML", Cambridge University Press, 1997
- M353 Programming and Programming Languages, "Unit 13: Compiling -- volume I", The Open University, 1994
- M353 Programming and Programming Languages, "Unit 14: Compiling -- volume II", The Open University, 1994
- M353 Programming and Programming Languages, "Unit 15: Compiling -- volume III", The Open University, 1994
- B. Teufel & S. Schmidt & T. Teufel, "C2 Compiler Concepts", Springer-Verlag, 1993
- R. Hunter, "Compiladores: sua concepção e programação em Pascal", Editorial Presença, Colecção Sistemas, 1986
- J.R. Levine & T. Mason & D. Brown, "Lex & Yacc", Ed. Dale Dougherty, O'Reilly & Associates Inc., 1992
-
M. E. Lesk and E. Schmidt, "Lex - A Lexical Analyzer Generator", Computing Science Technical Report No. 39, Bell Laboratories, Murray hill, New Jersey 1975.
-
Stephen C. Johnson, "Yacc: Yet Another Compiler Compiler", Computing Science Technical Report No. 32, Bell Laboratories, Murray hill, New Jersey 1975.
-
Thomas Niemman, "A Compact Guide to Lex & Yacc"
(versão PDF)
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:
- Sítio do gEPL com Conceitos básicos sobre Compiladores, Ferramentas (Geradores, etc.), Sistemas e Máquinas-Virtuais
-
- J. A. Saraiva, "Especificação e Processamento de Linguagens", versão 1.0, Textos Pedagógicos, Univ. do Minho, 1995
- 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
-
- Documentação LaTeX preparada por Alberto Simões
(Livro á venda no GEMCC/NECC)
- Wiki em português com alguma informação útil sobre LaTeX
- Comprehensive TeX Archive Network directory tree (para fazer o download de informações relativas ao LaTeX)
- Manual de Referência sobre GraphViz
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
- (2007.09.22)
As notas práticas e os resultados dos exames da 1ª e 2ª Época e da Época de Recurso estão disponíveis em:
NOTAS FINAIS
- (2007.08.08) As notas práticas e os resultados dos exames da 1ª e 2ª Época estão disponíveis em:
notas exames 2
- (2007.07.20)
- As notas práticas e os resultados dos exames da 1ª e 2ª chamada estão disponíveis em: notas exames 1
- (2007.06.23)
- Nota Importante: Aqui se afixa a ordem de entrega dos TP's, fase 2:
2ºf. 14h30-18h30: 2, 3, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16
3ªf. 9h-13h: 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30
3ªf. 14h30-18h30 - 9, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45.
- (2007.06.09)
- Uma vez que o prazo de entrega dos relatório e código do Trabalho Prático foi adiado para as 24h00 do dia
24Jun, a avaliação do 2ºTP será feita na tarde de 2ªf dia 25Junho (após o exame), a partir das 14h e até às 17h30,
e ao longo do dia 26, a partir das 9h e até as 17h30 (com intervalo das 12h30 às 14h).
Os grupos devem aparecer de 20 em 20 minutos, pela ordem numérica crescente de número de grupo.
- (2007.05.15)
- Concluído o processo de avaliação do 1ºTP e lançada a respectiva pauta nesta página,
Já foi lançado o enunciado do 2º TP.
- (2007.04.05)
- Devido ao facto de não ter havido aula TP na semana da ETAPS e considerando que os alunos
ainda não terão tido oportunidade de praticar convenientemente o desenvolvimento de
Tradutores Dirigidos pela Sintaxe com recurso ao FLex/Yacc,
decidimos adiar a entrega do 1ºTrabalho Prático 8 dias, devendo o mesmo ser submetido electronicamente
até às 12h do dia 26 de Abril.
- (2007.03.30)
- Já está disponível a resolução integral da 1º Ficha (ver nesta página a rubrica
Fichas de Exercícios para as Aulas Teórico-Práticas) e o código dos exercícios sobre Yacc/Lex
da última aula TP (ver anexos ao sumário da aula respectiva).
- (2007.03.19)
- Já está acessível o sistema para submissão dos Trabalhos Práticos.
Os grupos devem registar-se no sistema o mais rápido possível.
author: prh@di.uminho.pt;
Last modified: sábado, Setembro 22, 2007 at 20:06