Processamento de Linguagens I
Matemática e Ciências da Computação

Engenharia de Sistemas e Informática

Ano Lectivo 2000/2001
Informações Gerais
Estrutura e Funcionamento
Objectivos
Avaliação
Programa
Sumários
Trabalhos Práticos
Bibliografia

Novidades e Avisos

(04-10-01) Notas dos Exames de Setembro: Exame de Setembro
(11-07-01) Notas dos Exames e Trabalhos Práticos": Exames e Trabalhos Práticos
(28-06-01) Notas dos Trabalhos Práticos": Trabalhos Práticos
  • Quem não entregou os trabalhos práticos deve marcar uma hora para a apresentação do trabalho na próxima semana. A marcação deve ser feita o mais tardar no dia do exame da segunda chamada.
  • Existem cópias da primeira chamada do exame na recepção do DI (D. Rosa e Sr. Peixoto).

(05-06-01) Dois Exames "Exemplo": Estes exames não abordam toda a matéria de Processamento de Linguagens I. Algumas perguntas (teóricas) abordam matéria que foi leccionada em Métodos de programação III.

(31-05-01) Entrega do Trabalho (Fora do Prazo)
  • Os trabalhos práticos (1º e 2º) podem ser apresentados/entregues até dia 6 de Julho
  • Compete aos grupos verem a disponibilidade dos docentes e marcarem pessoalmente a (nova) data da apresentação
  • De modo a valorizar os grupos que entregaram o 2º trabalho no prazo, o 2º trabalho prático dos grupos atrasados será avaliado de 0 a 18 valores
  • Quem não tiver nota miníma na parte prática fica automaticamente reprovado à cadeira
(29-05-01) Resolução do Trabalho Prático: tp2PLI.html

No último extra do trabalho prático pede-se para o relatório ser produzido por um processador de documentos (gerado pelo LRC). Esse protótipo está disponível nesta pagina .

BTW: Esta página foi gerada por essa ferramenta. O documento XML que lhe deu origem tem uma referência no roda pé desta página.
(22-05-01) Lrc: Ficha Teórico-Prática nº7: ficha7.nw
(22-05-01) Trabalhos Práticos: Entrega
  • Data: 31 de Maio e 1 de Junho
  • No dia 24 de Maio, às 14:00, será disponibilizada uma folha no Sr. Peixoto para os grupos reservarem hora para a apresentação
  • A entrega dos dois trabalhos é feita em frente ao computador.
  • Todos os membros do grupo têm de estar presentes
  • Grupos que pretendam entregar mais tarde o trabalho (porque não tiveram tempo para acabar o 2º trabalho ou porque pretendem melhorar o que está feito) devem contactar pessoalmente o docente das aulas teóricas.
  • Uma resolução do 2º trabalho prático estará disponível brevemente
(22-05-01) Lrc: Ficha Teórico-Prática nº6: ficha6.nw

A Ficha nº6 necessita das resoluções das fichas Ficha2.nw , Ficha3.nw e Ficha4.nw e do módulo VisualLrc.ssl

O enúnciado da ficha nº6 já incluí uma Makefile . Extrair com: notangle -t8 -RMakefile ficha6.nw > Makefile

A Ficha nº6 re-utiliza as seguintes componentes genéricas definidas em Lrc:
(14-05-01) Lrc: Ficha Teórico-Prática nº5: ficha5.tgz
  • A ficha nº5 tem algumas figuras, daí o ficheiro . tgz
  • O ficheiro ps gerado pelo noweave/latex é: ficha5.ps

Resolução da Ficha-Prática nº4: Ficha4.nw , Ficha4.ps

Para processar a ficha nº4 fazer:
  • Extrair a Makefile: notangle -t8 -RMakefile Ficha4.nw > Makefile
  • Para gerar o programa executável fazer make
  • Para produzir o documento ps fazer make Ficha4.ps
  • Para produzir o documento pdf fazer make Ficha4.pdf
  • Necessita da resolução da ficha nº2 e 3: Ficha2.nw , Ficha3.nw e do módulo VisualLrc.ssl
(07-05-01) Lrc: Ficha Teórico-Prática nº4: ficha4.tgz
  • A ficha nº4 tem algumas figuras, daí o ficheiro . tgz
  • O ficheiro ps gerado pelo noweave/latex é: ficha4.ps
  • Para resolver a ficha nº4 é necessário a resolução da ficha nº3.

Resolução da Ficha-Prática nº3: Ficha3.nw

Para processar a ficha nº3 fazer:
  • Extrair a Makefile: notangle -t8 -RMakefile Ficha3.nw > Makefile
  • e gerar o programa executável fazer make
  • Para produzir o documento ps fazer make Ficha3.ps
  • Para produzir o documento pdf fazer make Ficha3.pdf
(02-05-01) O rpm do Lrc está disponível em:

O Lrc corre também em Windows95/98/NT precisando da instalação prévia de: Borland C + + , Pearl, Cygwin, Tcl/Tk, gcc (quem estiver interessado contacte-me).

Em breve estará no "ar" uma página do Lrc (com exemplos, faqs, bugs, etc)
(01-05-01) Lrc: Ficha Teórico-Prática nº3: ficha3.nw

Ficheiro SSL com uma função necessária para a Ficha nº3: VisualLrc.ssl

Resolução (parcial) da Ficha-Prático nº2: Ficha2.nw
(23-04-01) Trabalho-Prático nº2: tp2.nw

Listagem dos Serviços Académicos com os Alunos Inscritos em PL1: alunosPLI.txt

Lrc: Ficha Teórico-Prática nº2: ficha2.nw

Para obter os documentos LateX e Postscript fazer:
  • Download do estilo noweb para latex: noweb.sty
  • Extrair o latex com noweave: noweave -delay tp2.nw > tp2.tex
  • Produzir o documento com o latex: latex tp2.tex
(17-04-01) Lrc: Ficha Teórico-Prática nº1

[ ficha1.ps ] [ ficha1.nw ]
(16-03-01) Resolução Completa dos Processadores List e Block

[ CFGinC.ps ] [ CFGinC.nw ]
(16-03-01) Entrega do 1º Trabalho Prático:
  • Dia: 6 de Abril
  • A entrega é feita enviando email para jcr@di.uminho.pt . Este email deve conter:
    • A Identificação dos elementos do grupo (nº,nome)
    • Um anexo com um ficheiro único tp1.tgz que inclui todos os módulos necessário para compilar e executar o processador
  • Posteriormente será marcada uma apresentação do trabalho
(07-03-01) Aula Teórica: Linguagem List e Block

[ BNFinC_INC.ps ] [ BNFinC_INC.nw ]
(07-03-01) Aula Teórica: BNF em C [ BNFinC.ps ]
(07-03-01) Aulas Teórico-Práticas: página
(01-03-01) Trabalho Prático nº1: [ tp1.ps ] [ tp1.nw ]
(01-03-01) A página da disciplina está no "ar".

Capitulo 1 Informações Gerais

A cadeira de Processamento de Linguagens I é leccionada aos curso de Lincenciatura em Matemática e Ciências da Computação e Licenciatura em Engenharia de Sistemas e Informática, especialização em Tecnologias do Software.
  • Engenharia de Sistemas e Informática
    • Código: RT
    • Ano/Semestre: 3º Ano / 2º Semestre
    • Escolaridade: 2 Teóricas + 2 Teórico-Práticas
  • Matemática e Ciências da Computação
    • Código: RT
    • Ano/Semestre: 3º Ano / 2º Semestre
    • Escolaridade: 2 Teóricas + 2 Teórico-Práticas


Seccao 1.1 Equipa Docente




Seccao 1.2 Horario

Aulas previstas:

Capitulo 2 Estrutura e 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 de exercícios de consolidação, a nível das aulas teórico-práticas, no quadro e no computador. Realização, no computador, extra aulas de trabalhos concretos de aplicação, recorrendo a ferramentas como Lex/Yacc e o sistema LRC .
Capitulo 3 Objectivos

É objectivo deste curso levar os alunos a:
  • Compreender os conceitos de análise e geração automática de programas.
  • Aprofundar os conceitos de Gramática Independentes do Contexto e a sua utilização na especificação e no desenvolvimento de processadores de linguagens formais.
  • Analisar e compreender as diferentes técnicas de parsing: "Top-Down" e "Bottom-Up"
  • Aprender uma nova metodologia de programação: Programação baseada em Gramática de Atributos e a sua utilização na especificação e desenvolvimento de processadores de linguagens formais.
  • Aprender o conceito de ambiente de programação e a sua especificação via gramáticas de atributos
  • Relacionar gramáticas de atributos com programação funcional "lazy".
  • Reforçar a aptidão dos alunos para desenvolver programas correctos e eficientes.

Capitulo 4 Avaliação

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ª chamada da época normal, no fim do 2º semestre
  • Exame, realizado na 2ª chamada da época normal, no fim do 2º semestre
  • Exame, realizado na época de recurso
A componente prática seré formada por 2 trabalhos para realização em grupo, sendo entregues acompanhados de um relatório sucinto e discutidos em frente ao computador: A nota prática será a média aritmética das classificações obtidas nos 2 trabalhos avaliados. A nota final será determinada de acordo com a seguinte fórmula:

NotaFinal = NotaTeorica * 0.50 + (NotaPratica - Delta / 2) * 0.50

sendo Delta = | NT - NP |

Exige-se 8 valores como nota mínima em cada parte.

Capitulo 5 Programa

  • Processamento de Linguagens Formais
    • Conceitos e exemplos
    • Arquitectura dos Processadores de Linguagens
  • Análise Léxica de Linguagens Formais
    • Conceitos e suas tarefas
    • Especificação via Expressões Regulares
    • Construção de Analisadores Léxicos basedos em Autómatos Finitos
    • Geração Automática de Analisadores Léxicos
      • Breve Introdução ao sistema Lex
  • Análise Sintática de Linguagens Formais
    • Conceitos e suas tarefas
    • Especificação da Estrutura de Linguagens via Gramáticas Independentes do Contexto
      • Gramáticas/Estruturas Concretas versus Gramáticas/Estruturas Abstractas
    • Representação de Gramáticas no Paradígma Imperativo
      • De Gramáticas Concrectas para Especificações em Yacc
        • Breve Introdução ao sistema Yacc
      • De Gramáticas Abstractas para Tipos de Dados Estruturados em C
    • Técnicas de Parsing
      • Parsers Top-Down
      • Parsers Bottom-Up
  • Análise Semântica de Linguagens Formais
    • Conceitos e Tarefas
    • Implementação de Analisadores Semânticos: Problemas e Soluções
      • Analisadores Semânticos baseados em Multiplas Travessias na Estrutura Abstracta da Linguagem
      • "Colagem" de Travessias: A solução Imperativa versus Funcional
    • Especificação da Semântica de Linguagens via Atributos
      • Programação com Atributos
      • Gramáticas de Atributos
      • Geração Automática de Analisadores Semânticos a partir de Gramáticas de Atributos
        • O Sistema de Gramáticas de Atributos LRC

          Geração de analisadores semânticos na linguagem C e Haskell
      • De Gramáticas de Atributos para Programas Circulares "Lazy"
  • Ambientes de Programação
    • Introdução e Exemplos
    • Especificação de Ambientes de Programação via Gramáticas de Atributos
    • Especificação do Interface via Gramáticas de Atributos
    • Geração de Ambientes de Programação no Sistem LRC

Capitulo 6 Sumários


Capitulo 7 Trabalhos Práticos

  • Trabalho Prático nº1: [ tp1.ps ] [ tp1.nw ]
  • Trabalho Prático nº2: A anúnciar

Bibliografia

  • Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman Compilers: Principles, Techniques and Tools Addison-Wesley 1986
  • João Saraiva Especificação e Processamento de Linguagens DI/UM 1ª Edicao [PS] [HTML] 1995
  • João Saraiva Language Processing (with a Functional Flavour) (em preparação) Edicao DI/UM
  • William M. Waite and Lynn R. Carter An Introduction to Compiler Construction Harper Collins 1993
  • John Levine, Tony Mason and Doug Brown lex & yacc O'Reilly & Associates, Inc 1992
  • João Saraiva, Matthijs Kuiper and Pedro Henriques Tutorial on Language-based Environments [PS] 2000
  • Thomas Reps and Tim Teitelbaum The Synthesizer Generator Reference Manual third edition Edicao Springer Verlag 1989
  • S.P.Jones, et al Report on the Programming Language Haskell 98 [HTML] [PS] [PDF] 1999
  • R. Bird Introduction to Functional Programming using Haskell Prentice Hall 1998


Pagina mantida por:

João Saraiva

jas@di.uminho.pt
Page produced by a Tool generated by LRC from the XML document pagina_pli.xml

Last Change on Wed Oct 3 15:13:29 2001