Processamento de Linguagens

Ano Lectivo: 04/05 (2º semestre)

Escola Superior de Tecnologia e Gestão

Instituto Politécnico de Bragança


1.     Programa (Formato word, Formato html)

2.     Horário de atendimento    4ª-Feira    14h – 18h    (gab. 96)

3.     Apontamentos

1.     Sebenta Teórica

2.     Sebenta Prática

1.     Sem resolução dos exercícios

2.     Com resolução de exercícios (disponível durante o semestre)

3.      Acetatos das aulas teóricas

4.     Enunciados dos trabalhos práticos de 2003 (formato ps ou formato pdf)

1.     Template LATEX para quem quiser entregar o relatório em Latex.

2.     Template JAVA usado nos trabalhos nº1 e nº2.

3.     Informações sobre GraphVis usado no trabalho nº5

5.     Enunciados dos trabalhos práticos de 2004 (formato pdf)

1.     Template LATEX para quem quiser entregar o relatório em Latex.

2.     Informações sobre GraphVis usado no trabalho nº4

6.     Enunciados dos trabalhos práticos de 2005 (formato pdf)

1.     Template LATEX para quem quiser entregar o relatório em Latex.

2.     Informações sobre GraphVis usado no trabalho nº4

3.     Template LATEX usado no trabalho nº3

 


Programa da disciplina

Apresentação

Critério de Avaliação

Conteúdo Programático

Bibliografia

Sumários (tópicos e resumo)


Apresentação

Cursos a que é leccionada:

Engenharia Informática -- 2º ano

Escolaridade:

2 + 0 + 2

Responsável:

Maria João Varanda

Estrutura de Funcionamento:

Aulas Teóricas - Exposição da matéria fundamental ---motivação, conceitos, definições, métodos e justificações.
Aulas Práticas - Resolução dos exercícios de consolidação, no quadro e no computador.
Trabalhos extra aulas - Realização, no computador, de trabalhos concretos de aplicação, em ambiente Linux, recorrendo a ferramentas do tipo
lex/yacc e à linguagem C;

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);

·         Apresentar os conceitos de gramática e de autómato e a sua aplicação ao desenvolvimento de Processadores de Linguagens (PL's).

·         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

Avaliação na época normal

A Avaliação, na época normal, tem uma componente teórica e uma componente prática.

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:

          Exame, realizado na 1ª chamada da época normal, no fim do semestre

          Exame, realizado na 2ª chamada da época normal, no fim do semestre

A nota prática será obtida através da realização (em grupo e extra aulas) de 1 trabalho prático que envolverá o desenvolvimento completo (por fases) de um processador de uma linguagem específica a enunciar. Assim, os grupos terão de mostrar e discutir o funcionamento do programa que deve ser acompanhado pelo respectivo relatório de desenvolvimento e resultados obtidos, o qual será classificado nos seguintes escalões:

                                 

                       

Escalão

Nota

Não entregue

0

Não Satisfaz

1 – 7

Satisfaz no Mínimo

8 – 10

Satisfaz

11 – 13

Bom

14 – 16

Muito Bom

17 – 20

 

A nota final será determinada de acordo com a seguinte fórmula:

                NotaFinal = NotaTeorica * 0.70 + NotaPratica * 0.30

Exige-se 7,5 valores como nota mínima na parte teórica.

 

Avaliação na época de recurso e nas épocas especiais

A nota final será obtida apenas, através da realização de 1 prova individual escrita que será realizada na época respectiva.

 


Conteúdo Programático

 

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:

·         II.1 Uso do Gerador lex

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:

·         IV.1 Uso do Gerador yacc

V. Análise Semântica e Transformação (reacção) especificada via Gramáticas de Atributos (GAs) ---Tradução Dirigida pela Semântica:

·         V.1 Uso do Gerador Lisa


Bibliografia

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 & Pedro Henriques, "LEX", Notas Pedagógicas, Univ. do Minho, 1991

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.              B. Teufel & S. Schmidt & T. Teufel, "C2 Compiler Concepts", Springer-Verlag, 1993

11.              R. Hunter, "Compiladores: sua concepção e programação em Pascal", Editorial Presença, Colecção Sistemas, 1986

12.              J.R. Levine & T. Mason & D. Brown, "Lex & Yacc", Ed. Dale Dougherty, O'Reilly & Associates Inc., 1992

13.              Manuais das ferramentas flex e yacc

14.              Manuais da ferramenta Lisa

 



author: mjoao@di.uminho.pt;
Last modified: 10 de Março de 2002