A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof. Fábio Carneiro Mokarzel 2014

Apresentações semelhantes


Apresentação em tema: "Prof. Fábio Carneiro Mokarzel 2014"— Transcrição da apresentação:

1 Prof. Fábio Carneiro Mokarzel 2014 http://www.comp.ita.br/~mokarzel
CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014

2 Capítulo Zero Apresentação
CES-41 COMPILADORES Capítulo Zero Apresentação

3 Capítulo Zero - Apresentação
0.1 – Professor e alunos 0.2 – Objetivos da disciplina 0.3 – Comentários sobre a disciplina 0.4 – Programa da disciplina 0.5 – Metodologia e carga horária 0.6 – Critérios de avaliação 0.7 – Bibliografia

4 0.1 - Professor e Alunos Nome do Professor: Fábio Carneiro Mokarzel
Graduação: Engenharia Elétrica – UNIFEI – Itajubá, MG – 1973 Mestrado: Ciência da Computação – ITA – São José dos Campos, SP – 1984 Doutorado: Ciência da Computação – ITA – São José dos Campos, SP – 1995

5 0.1 - Professor e Alunos Professor no ITA: desde 1979 – IEC
Área de Pesquisa: Compiladores para Processamento Paralelo Sala: No 109 – Prédio da Computação do ITA Telefone no ITA: (12) ou Celular: (12)

6 0.2 – Objetivos da Disciplina
0.2.1 – Objetivo Geral Estudo teórico e prático de técnicas para a construção de compiladores de linguagens de programação

7 0.2.2 – Objetivos específicos
Conhecimento do contexto onde se insere um compilador Estudo da organização de compiladores Estudo de princípios, técnicas e ferramentas para a implementação de cada componente de um compilador Construção de um compilador para uma linguagem de programação simplificada

8 0.3 – Comentários sobre a Disciplina
O Engenheiro de Computação deve estar preparado para projetar novas linguagens de programação, bem como para disponibilizar linguagens conhecidas para novas máquinas Compiladores e interpretadores dessas linguagens são importantes ferramentas para torná-las disponíveis Na realidade, poucos especialistas em Computação executam tarefas de construir ou manter um compilador ou um interpretador de uma linguagem de programação

9 No entanto o estudo do processo de compilação é valioso:
Aprimora muito os conhecimentos sobre linguagens de programação Ajuda o programador alcançar eficiência em seus programas Forma uma boa ponte entre os conhecimentos de hardware e de software

10 E ainda: Dá boas diretrizes para o projeto de novas linguagens, evitando construções difíceis de serem compiladas e geradoras de código ineficiente Apresenta ao engenheiro de computação as ferramentas Lex e Yacc, importantes para o desenvolvimento de sistemas de software Princípios sobre construção de compiladores são usados também em outras áreas da computação

11 Exemplos de utilidade em outras áreas:
Análise léxica faz reconhecimento de cadeias, também usado em: Editores de texto, sistemas de recuperação de informações e reconhecimento de padrões Gramáticas livres de contexto e definições orientadas pela sintaxe são usadas na implementação de pequenas linguagens tais como: Formatadores de texto, sistemas de computação gráfica, linguagens para banco de dados, linguagens para simulação, etc.

12 Exemplos de utilidade em outras áreas:
Otimização de código é usada em validação de programas, transformação de programas desestruturados e paralelização de programas sequenciais Análise sintática orienta a construção da árvore de controle de um programa, que é base para a otimização e paralelização de programas

13 Nos anos 50, a construção de um compilador era uma tarefa extremamente difícil
Ao longo do tempo, foram desenvolvidas: Técnicas bem engenhosas Linguagens bem organizadas Ambientes de programação Ferramentas automáticas Hoje, um pequeno compilador é projetado em disciplinas de um ano

14 Um conjunto de técnicas básicas pode ser usado na construção de compiladores para várias linguagens e várias máquinas Construção de compiladores abrange e integra conhecimentos de: Linguagens de programação Arquitetura de computadores Teoria de autômatos Estruturas de dados Engenharia de software

15 0.4 – Programa da Disciplina
Cap. I - Introdução sem Cap. II - Gramáticas e linguagens sem Cap. III - Diagramas de transições sem Cap. IV - Complementos de análise léxica sem Cap. V - Análise sintática sem Cap. VI - Análise semântica sem Cap. VII - Código intermediário sem Cap. VIII - Organização em tempo de execução sem Cap. IX - Geração de código sem Cap. X - Otimização de código sem

16 0.5 – Metodologia e Carga Horária
Pré-requisitos de CES-41: CTC-34 Autômata e Linguagens Formais CES-11 Algoritmos e Estruturas de Dados Carga horária semanal: Aulas teóricas: expositivas e em sala comum Aulas de laboratório: em sala com microcomputadores; ferramentas Lex e Yacc

17 0.6 – Critérios de Avaliação
Os tipos de trabalhos a serem propostos são: Séries de exercícios sobre a teoria da disciplina, sem necessidade de programação As questões podem ser práticas ou até teóricas Séries de exercícios envolvendo programação de algoritmos ou técnicas apresentadas Laboratórios visando a implementação de um compilador, usando ferramentas automáticas Não haverá provas bimestrais nem de Exame

18 Os objetivos dos laboratórios poderão ser a implementação de:
Analisador léxico Analisador sintático Analisador semântico Gerador de código intermediário Gerador de código objeto Interpretador do código intermediário

19 A nota final da disciplina será uma média ponderada das notas dos trabalhos
Os pesos dos trabalhos dependem do esforço exigido e da importância do assunto abordado Trabalhos individuais e em grupos: As análises léxica e sintática são de caráter individual Os outros laboratórios poderão ser feitos em grupos de no máximo dois alunos As séries poderão ou não ser de caráter individual

20 0.7 – Bibliografia 0.7.1 – Bibliografia básica
A.V.Aho, M.S.Lam, R.Sethi e J.D.Ullman – Compiladores: Princípios, Técnicas e Ferramentas – 2a Edição – São Paulo – Pearson/Addison Wesley – 2008. É a 2ª edição, traduzida para Português, do conhecido livro do dragão

21 0.7 – Bibliografia 0.7.1 – Bibliografia básica
A.V.Aho, R.Sethi e J.D.Ullman – Compilers: Principles, Techniques and Tools – Reading – Addison Wesley – 1986. É a 1ª edição do livro do dragão

22 0.7 – Bibliografia 0.7.1 – Bibliografia básica
K.C.Louden – Compiladores: Princípios e Práticas –São Paulo – Thomson – 2004.

23 0.7 – Bibliografia 0.7.1 – Bibliografia básica
J.P.Tremblay e P.G.Sorenson – The Theory and Practice of Compiler Writing – Singapore – McGraw Hill – 1989.

24 0.7 – Bibliografia 0.7.1 – Bibliografia básica
Slides de CES-41 – Prof. Mokarzel, 2014

25 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar
A.I.Holub – Compiler Design in C – Englewood Cliffs – Prentice Hall – 1990.

26 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar
P.Rechenberg e H.Mössenböck – A Compiler Generator for Microcomputers – Englewood Cliffs – Prentice-Hall – 1989.

27 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar
I.Ricarte – Introdução à Compilação – Rio de Janeiro – Campus/Elsevier – 2008.

28 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar
J.R. Levine, T. Mason e D. Brown – Lex & Yacc– 2nd Edition – Sebastopol – O’Reilly & Associates – 1992.


Carregar ppt "Prof. Fábio Carneiro Mokarzel 2014"

Apresentações semelhantes


Anúncios Google