• Nenhum resultado encontrado

Linguagens Formais e Compilação (cod. 5387)

N/A
N/A
Protected

Academic year: 2021

Share "Linguagens Formais e Compilação (cod. 5387)"

Copied!
12
0
0

Texto

(1)

Linguagens Formais e Compila¸c˜

ao

(cod. 5387)

Departamento de Inform´

atica

Universidade da Beira Interior

Ano lectivo 2012/2013

Figura 1: Don’t make your compiler complain

(2)

1

Novidades

• Defesa (e entrega) dos trabalhos: a partir das 9h00 na sala 6.14. • Segunda Frequˆencia. Local: 6.2 e 6.26.

• Entrega da primeira parte do trabalho adiada para a quinta-feira 9 de Maio as 9h00.

• Cada grupo ´e convidado a mostrar o estado actual do trabalho ao do-cente, marca¸c˜ao da data e hora por email.

• Por forma a repor a aula te´orica de segunda-feira 1 de Abril, haver´a aula te´orica quinta feira 4 de abril, das 14h00 `as 16h00 na sala 6.03. • Altera¸c˜oes no hor´ario das aulas. Consulte 10.

• As constitui¸c˜oes de grupo devem ser comunicadas por email ao regente da UC.

• Enunciado do trabalho dispon´ıvel.

• Relembra-se a sec¸c˜ao Fraude (ver 7.1.1) a todos os alunos... • Inscri¸c˜ao em turmas pr´aticas: via site dos servi¸cos acad´emicos. • Como colocar uma d´uvida ao regente da Unidade Curricular?

1. Comparecer nas aulas e coloc´a-la directamente ao regente

2. Comparecer no hor´ario de atendimento do regente e coloc´a-la di-rectamente

3. enviar um email ao regente (desousaUUU@UUUdi.ubi.pt, (retire os UUU) ) com o assunto ”LFC: XXXX”em que XXX ´e o t´ıtulo da d´uvida em quest˜ao. Qualquer outro formato no assunto arrisca condenar o email ao esquecimento.

Conte´

udo

(3)

2 Equipa Docente 3

3 Objectivos 3

4 Competˆencias por Adquirir 5

5 Programa 6

6 Metodologia de Ensino 6

7 Crit´erios de Avalia¸c˜ao 7

7.1 Avalia¸c˜ao da Componente Pr´atica . . . 7

7.1.1 Fraudes . . . 7

7.2 Avalia¸c˜ao da Componente Te´orica . . . 7

7.2.1 Exame . . . 7

7.2.2 Datas importantes . . . 8

7.3 Notas M´ınimas . . . 8

7.4 Nota Final . . . 9

8 Material Pedag´ogico 9 8.1 Te´oricas . . . 9

8.2 Pr´aticas . . . 10

8.2.1 Algumas solu¸c˜oes . . . 10

8.3 Material Suplementar . . . 10 9 Referˆencias Bibliogr´aficas 10

10 Hor´ario 11

11 Atendimento 11

2

Equipa Docente

Sim˜ao Melo de Sousa (regente) - Gabinete 3.17 - Laborat´orio 6.10 - Bloco VI.

(4)

3

Objectivos

Esta disciplina apresenta as principais fases da constru¸c˜ao dum compilador, isto ´e, um programa que transforma uma sequˆencia de caracteres, represen-tando um programa, numa sequˆencia de instru¸c˜oes m´aquina que poder˜ao ser executadas com a finalidade de produzir o resultado do programa original.

A constru¸c˜ao dum compilador envolve a utiliza¸c˜ao de v´arios m´etodos e ferramentas de an´alise l´exica e sint´actica. A aprendizagem do funcionamento de tais an´alises constitui uma parte importante desta disciplina. As lingua-gens de programa¸c˜ao modernas de alto n´ıvel prop˜oem uma detec¸c˜ao precoce dos erros gra¸cas a uma an´alise semˆantica, cada vez mais complexa e poderosa, muitas vezes sob a forma dum controlo de tipos. A ´ultima fase da compila¸c˜ao ´

e a gera¸c˜ao de c´odigo que ´e realizada em v´arias etapas que correspondem a tradu¸c˜ao para v´arias linguagens interm´edias antes de se concluir pela produ-¸c˜ao de c´odigo execut´avel. Estudaremos mais particularmente a organiza¸c˜ao da mem´oria para a gest˜ao das chamadas de procedimentos. Esta apresen-ta¸c˜ao assenta sobre resultados da teoria das linguagens formais(aut´omatos finitos, express˜oes regulares, gram´aticas, em particular gram´aticas livres de contexto, aut´omatos de pilha, etc . . .), `a qual daremos uma curta introdu¸c˜ao. Assim os objectivos gen´ericos desta disciplina s˜ao a apresenta¸c˜ao e estudo de metodologias, t´ecnicas e ferramentas para o desenvolvimento processado-res de linguagens e de compiladoprocessado-res. Em particular pretende-se:

• Introduzir a no¸c˜ao de linguagem e caracterizar o conceito de proces-samento de linguagens formais, estabelecendo os objectivos, as tarefas dum processador, as exigˆencias que lhe s˜ao impostas e as t´ecnicas de desenvolvimento (face `as restri¸c˜oes e `a complexidade do problema). • Introduzir os conceitos de gram´atica e de aut´omato, a sua teoria e a

sua aplica¸c˜ao ao desenvolvimento de Processadores de Linguagens. • Introduzir formalismos para especifica¸c˜ao da sintaxe e da semˆantica das

linguagens e estudar a implementa¸c˜ao dos analisadores que se podem derivar desses formalismos.

• Desenvolver capacidades de tradu¸c˜ao de textos escritos em linguagens distintas, utilizando m´etodos de an´alise e de s´ıntese mais usados pelos compiladores.

(5)

• Introduzir os processos, ferramentas, algoritmos e estruturas de dados mais utilizados na tradu¸c˜ao, na an´alise e na compila¸c˜ao.

Para quˆe estudar os Processos de Compila¸c˜ao? • Em primeiro porque ´e interessante e formador!

• Porque as t´ecnicas de processamento de linguagens e de constru¸c˜ao de compiladores tˆem aplica¸c˜oes fortes em muitas ´areas da inform´atica, e n˜ao s´o em constru¸c˜ao de compiladores.

• Atrav´es do estudo da compila¸c˜ao, tentaremos mostrar o qu˜ao ´uteis para a inform´atica em geral s˜ao as t´ecnicas e as ferramentas oriundas deste estudo assim como procuraremos perceber as caracter´ısticas das linguagens de programa¸c˜ao. De facto um compilador ´e um programa de tamanho importante que ´e necess´ario bem estruturar. Este deve ser tamb´em eficiente e ´e importante que esteja isento de erro. Ser capaz de escrever um compilador ´e assim uma competˆencia desafio para qualquer programador que se quer ex´ımio.

Agradecimentos

O regente da disciplina gostaria de agradecer `a Professora Doutora Christine Paulin-Mohring (LRI - Paris Sud, Fran¸ca) por lhe ter facultado a sebenta intitulada “Cours de Compilation” de que ´e autora e por lhe permitido um uso livre e intensivo desta ´ultima.

O regente gostaria de agradecer igualmente o Professor Doutor Jean-Christophe Filliˆatre (LRI - Paris Sud / CNRS, Fran¸ca) pelo apoio prestado na componente pr´atica desta UC.

4

Competˆ

encias por Adquirir

Os estudantes dever˜ao adquirir as seguintes competˆencias:

• Conceber, planear, desenhar e implementar em software processado-res de linguagens artificiais e de informa¸c˜ao especificada textualmente segundo determinadas regras lexicais e sint´acticas;

• Conceber e implementar em software as v´arias etapas relacionadas com compiladores, nomeadamente:

(6)

– express˜oes regulares e aut´omatos finitos; – analisadores sint´acticos e semˆanticos; – analisadores semˆanticos;

– optimiza¸c˜oes de c´odigo;

– geradores de c´odigo para processadores ou para m´aquinas virtuais;

5

Programa

1. Introdu¸c˜ao: o problema, o contexto, o processamento de linguagens na inform´atica, a arquitectura dum compilador.

2. Processamento de Linguagens

• an´alise l´exica, aut´omatos finitos, gram´aticas e express˜oes regula-res. Processamento de linguagens regularegula-res.

• an´alise sint´actica: Aut´omatos de pilha, gram´aticas alg´ebricas, an´alise descendente e an´alise ascendente.

• analise semˆantica: gram´aticas de atributo, tabelas dos s´ımbolos, inferˆencia e verifica¸c˜ao de tipos.

3. Gera¸c˜ao de C´odigo

• gera¸c˜ao de c´odigo interm´edio • analise e optimiza¸c˜ao de c´odigo • gera¸c˜ao de c´odigo m´aquina

6

Metodologia de Ensino

As aulas presenciais s˜ao divididas em duas categorias

• Aulas Te´oricas onde s˜ao expostos os conceitos te´oricos, os algoritmos mas tamb´em as tecnologias capacitativas, pr´oprios `a constru¸c˜ao de um compilador.

• Aulas Pr´aticas com aplica¸c˜ao das t´ecnicas de compila¸c˜ao na constru-¸c˜ao de compiladores para linguagens de programa¸c˜ao simples e para arquitecturas simples.

(7)

7

Crit´

erios de Avalia¸

ao

A avalia¸c˜ao tenta qualificar e quantificar a aprendizagem e a aquisi¸c˜ao de competˆencia e de conhecimentos do aluno inscrito. Nesta unidade curricular esta avalia¸c˜ao ´e dividida em duas partes: a avalia¸c˜ao pr´atica e a avalia¸c˜ao te´orica.

Listamos a seguir as diferentes componentes da avalia¸c˜ao.

7.1

Avalia¸

ao da Componente Pr´

atica

Esta avalia¸c˜ao mede em termos pr´aticos a aquisi¸c˜ao dos conceitos expostos. Como tal ´e baseada na realiza¸c˜ao, durante o semestre lectivo, de um tra-balho realizado em grupo e entregue `a equipa docente. Este trabalho ser´a dividido em duas partes, dando ambas origem a uma defesa. Ambas as partes carecem da entrega dum relat´orio em LATEX e dum arquivos

compri-mido com os ficheiros fontes que constitu´ı a implementa¸c˜ao realizada assim como de um makefile permitindo a compila¸c˜ao completa.

Esta avalia¸c˜ao resultar´a na atribui¸c˜ao da Nota da Componente Pr´ a-tica (NCP).

Esta nota ´e calculada como a m´edia das notas atribu´ıdas `as duas partes do trabalho.

7.1.1 Fraudes

A equipa docente gostaria de real¸car que qualquer tipo de fraude em qualquer dos itens desta disciplina implica a reprova¸c˜ao autom´atica do aluno faltoso, podendo ainda vir a ser alvo de processo disciplinar.

7.2

Avalia¸

ao da Componente Te´

orica

A avalia¸c˜ao da aquisi¸c˜ao de conceitos te´oricos ´e baseado em provas escritas, nomeadamente aqui duas frequˆencias. Esta avalia¸c˜ao resultar´a na atribui¸c˜ao da Nota da Componente Te´orica (NCT) e ser´a calculada como a m´edia das notas atribu´ıdas `as duas frequˆencias.

7.2.1 Exame

(8)

• O aluno admitido a exame mas reprovado na avalia¸c˜ao cont´ınua poder´a tentar uma nova atribui¸c˜ao da NCT.

• O aluno aprovado na avalia¸c˜ao cont´ınua poder´a melhorar a sua NCT. 7.2.2 Datas importantes

• Primeira frequˆencia: 18 de Abril • Segunda frequˆencia: 6 de Junho

• Entrega da primeira parte do trabalho: 26 Abril • Defesa da primeira parte do trabalho: Por definir • Entrega da segunda parte do trabalho: 7 de Junho • Defesa da segunda parte do trabalho: Por definir • exame primeira chamada: (conferir nos acad´emicos) • exame segunda chamada: (conferir nos acad´emicos) • exame ´epoca especial: (conferir nos acad´emicos)

7.3

Notas M´ınimas

Ser´a igualmente instaurado um regime de notas m´ınimas como crit´erio de valida¸c˜ao da nota final. Esses m´ınimos s˜ao:

• 6 valores (em 20) para a NCP • 6 valores (em 20) para a NCT

Uma nota abaixo desses valores implica reprova¸c˜ao `a disciplina (N˜ao Ad-mitido a Exame).

(9)

7.4

Nota Final

Os m´ınimos s˜ao os m´ınimos afixados por regulamento e s˜ao v´alidas individu-almente para cada parte (NCT e NCP).

Assim a nota final da disciplina ´e determinada de acordo coma seguinte f´ormula: N F = se (N CT ≥ 6) e (N CP ≥ 6) ent˜ao N CP +N CT 2 sen˜ao Reprovado onde

NF = Nota Final (20 valores)

NCT = Nota da Componente Te´orica (20 valores) NCP = Nota da Componente Pr´atica (20 valores)

8

Material Pedag´

ogico

Acetatos e sebenta distribu´ıdos nas aulas.

8.1

Te´

oricas

Cap´ıtulo: Introdu¸c˜ao

Cap´ıtulo: Analises sint´acticas descendentes Cap´ıtulo: Analises sint´acticas ascendentes Cap´ıtulo: ´Arvores de sintaxe abstracta Cap´ıtulo: Analise semˆantica

Cap´ıtulo: Analise semˆantica - Complementar Cap´ıtulo: Sistemas de tipos - Complementar Cap´ıtulo: Gera¸c˜ao de c´odigo

Cap´ıtulo: Tutorial MIPS

Cap´ıtulo: Gera¸c˜ao de c´odigo (vers˜ao antiga - compila¸c˜ao para uma stack based virtual machine) - Complementar

Cap´ıtulo: Gera¸c˜ao de c´odigo - um exemple de uma stack based virtual machine - Complementar

(10)

8.2

Pr´

aticas

Para quem necessitar uma actualiza¸c˜ao em programa¸c˜ao OCaml, encontrar´a aqui uma introdu¸c˜ao `a programa¸c˜ao funcional em OCaml.

Ficha : Introdu¸c˜ao `a analise sint´actica com yacc/menhir

Ficha te´orico-pr´atica - Aplica¸c˜ao das linguagens formais `a constru¸c˜ao de analisadores, an´alises descendentes, ascendentes, an´alises semˆanticas, siste-mas de tipo.

Ficha pr´atica - Introdu¸c˜ao `a analise l´exica , constru¸c˜ao de lexer, parser com lex/yacc/menhir, analisadores de tipos, analisadores semˆanticos.

Ficha: Introdu¸c˜ao `a constru¸c˜ao de compiladores - a linguagem artih 8.2.1 Algumas solu¸c˜oes

solu¸c˜ao de alguns exerc´ıcios de analise l´exica em ocaml (parte 1) solu¸c˜ao de alguns exerc´ıcios de analise l´exica em ocaml (parte 2)

Exemplo de uma pequena calculadora feita de ra´ız com base em proces-samento de listas.

um “htmlizer” para Caml feito em ocamllex Resolu¸c˜ao completa: sistema de gest˜ao de notas

compilador e interpretador completo da linguagem arith com target a m´aquina virtual “VM”

Uma frequˆencia resolvida

Resolu¸c˜ao de exerc´ıcio sobre analises LL(1)

Arquivo com provas de anos anteriores (cont´em algumas resolu¸c˜oes). ZIP com exemplos de programas MIPS

ZIP com o c´odigo do compilador arith para MIPS *por completar* ZIP com o c´odigo do compilador arith para MIPS *completo*

ZIP com o c´odigo do compilador arith para MIPS *completo* alternativo (com typechecking)

8.3

Material Suplementar

Enunciado do trabalho.

9

Referˆ

encias Bibliogr´

aficas

(11)

As restantes referˆencias listadas em fim de documento s˜ao de consulta alternativa ou ocasional.

10

Hor´

ario

Tipo de aula Hor´ario Sala

Te´orica Segunda-Feira das 9h00 `as 11h00 6.02 Pr´aticas Laboratoriais 1 Quinta-Feira das 11h00 `as 13h00 6.13 Pr´aticas Laboratoriais 2 Quint-Feira das 9h00 `as 11h00 6.13

11

Atendimento

Hor´ario

Sexta-Feira das 9h00 `as 11h00

Referˆ

encias

[1] A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techni-ques, and Tools. Addison-Wesley, 1985.

[2] A. W. Appel. Modern Compiler Implementation in C. Cambridge Uni-versity Press, 1998.

[3] A. W. Appel. Modern Compiler Implementation in Java. Cambridge University Press, Cambridge, 1998.

[4] A. W. Appel. Modern Compiler Implementation in ML. Cambridge University Press, 1998.

[5] D. Bagley. The great computer language shootout. http://www.bagley.org/~doug/shootout

[6] E. Chailloux, P. Manoury, and B. Pagano. Developing applications with objective caml. http://caml.inria.fr/oreilly-book, 2003.

[7] G. Cousineau and M. Mauny. The functional approach to programming. Cambridge University Press, 1998.

(12)

[8] C. J.H. Jacobs, K. G. Langendoen, D. Grune, and H. E. Bal. Modern Compiler Design. Wiley, 2000.

[9] X. Leroy and P. Weis. Le Language Caml. iia, Inter Edition, 1993. [10] X. Leroy and P. Weis. Manuel de R´ef´erence du Language Caml. iia,

Inter Edition, 1993.

[11] J. R. Levine, T. Masson, and D. Brown. Lex & Yacc. Unix Programming Tool. O’Reilly, 1995.

[12] J. Mitchell. Foundation for Programming Languages. Foundations of Computing, MIT Press, 1996.

[13] S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kauffman, 1997.

[14] F. Nielson, H. R. Nielson, and C. L. Hankin. Principles of Program Analysis. Springer-Verlag, 1999.

[15] H. R. Nielson and F. Nielson. Semantics with Ap-plications. John Wiley & Sons, Chichester, 1993. http://www.daimi.au.dk/~bra8130/Wiley_book/wiley.html

[16] OCaml Development Team. The Objective Caml system:Documentation and user’s manual, 2002. http://caml.inria.fr/ocaml/htmlman/index.html

[17] R. Wilhelm and D. Maurer. Compiler Design. Addison Wesley, 1995. [18] G. Winskel. The Formal Semantics of Programming Languages: An

Introduction. Foundations of Computing series. MIT Press, Cambridge, Massachusetts, February 1993.

Referências

Documentos relacionados

b) o fornecedor não formalizar contrato decorrente do Registro de Preços ou não retirar o instrumento equivalente no prazo estabelecido. c) ocorrer qualquer das

c) O ácido fraco (base fraca) pode ser gerado(a) se for adicionado(a) uma quantidade adequada de ácido forte (base forte) sobre a base (ácido) conjugada(o).. Para 1L tampão é

Isso pode ser exemplificado na mineração do con- junto de dados ENEM, onde a informação encon- trada na etapa de mineração de texto foi agregada à informação gerada nas demais

fornecido ao AF uma sequência de símbolos como entrada, ele responderá se esta sequência pertence a linguagem ou não;..  O AF pode assumir um número finito

opera apenas com a’s e b’s na pilha. Para garantir que  só vai ser usado uma vez, convém reservar ao estado inicial apenas a ação de marcar o fundo da pilha. Entretanto, pela

 Desmembrar as formas sentenciais de comprimento 3 ou mais em uma cascata de produções, cada uma com uma forma sentencial consistindo em 2

Nossa responsabilidade é a de expressar uma opinião sobre essas demonstrações contábeis com base em nossa auditoria, conduzida de acordo com as normas brasileiras e

7.2 Os candidatos aprovados que tenham efetivamente concluído o Ensino Médio ou equivalente podem matricular-se, tornando-se nula, de pleno direito, a classificação dos que