CES-41 COMPILADORES

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

description

CES-41 COMPILADORES. Prof. Fábio Carneiro Mokarzel 2014 http://www.comp.ita.br/~mokarzel. CES-41 COMPILADORES. Capítulo Zero Apresentação. Capítulo Zero - Apresentação. 0.1 – Professor e alunos 0.2 – Objetivos da disciplina 0.3 – Comentários sobre a disciplina - PowerPoint PPT Presentation

Transcript of CES-41 COMPILADORES

Page 1: CES-41 COMPILADORES

CES-41 CES-41 COMPILADORESCOMPILADORES

Prof. Fábio Carneiro Prof. Fábio Carneiro MokarzelMokarzel

20172017http://www.comp.ita.br/~mokarzelhttp://www.comp.ita.br/~mokarzel

Page 2: CES-41 COMPILADORES

CES-41 CES-41 COMPILADORESCOMPILADORES

Capítulo Zero Capítulo Zero ApresentaçãoApresentação

Page 3: CES-41 COMPILADORES

Capítulo Zero - Capítulo Zero - ApresentaçãoApresentação

0.1 – Professor e alunos0.1 – Professor e alunos0.2 – Objetivos da disciplina0.2 – Objetivos da disciplina0.3 – Comentários sobre a disciplina 0.3 – Comentários sobre a disciplina 0.4 – Programa da disciplina0.4 – Programa da disciplina0.5 – Metodologia e carga horária0.5 – Metodologia e carga horária0.6 – Critérios de avaliação0.6 – Critérios de avaliação0.7 – Bibliografia0.7 – Bibliografia

Page 4: CES-41 COMPILADORES

Nome do Professor:Nome do Professor: Fábio Carneiro Mokarzel Fábio Carneiro Mokarzel

Graduação:Graduação: Engenharia Elétrica – UNIFEI – Engenharia Elétrica – UNIFEI – Itajubá, MG – 1973Itajubá, MG – 1973

Mestrado:Mestrado: Ciência da Computação – ITA – São Ciência da Computação – ITA – São José dos Campos, SP – 1984José dos Campos, SP – 1984

Doutorado:Doutorado: Ciência da Computação – ITA – Ciência da Computação – ITA – São José dos Campos, SP – 1995São José dos Campos, SP – 1995

0.1 - Professor e Alunos0.1 - Professor e Alunos

Page 5: CES-41 COMPILADORES

0.1 - Professor e Alunos0.1 - Professor e Alunos Professor no ITA: Professor no ITA: desde 1979 – IECdesde 1979 – IEC

Área de Pesquisa: Área de Pesquisa: Compiladores para Compiladores para Processamento ParaleloProcessamento Paralelo

Sala: NSala: Noo 109 – 109 – Prédio da Computação do ITAPrédio da Computação do ITA

E-mail: E-mail: [email protected], [email protected], [email protected]@gmail.com

Telefone no ITA: Telefone no ITA: (12) 3947-5982 ou 3947-5899 (12) 3947-5982 ou 3947-5899

Celular: Celular: (12) 9-9714-7538 - WhatsApp(12) 9-9714-7538 - WhatsApp

Page 6: CES-41 COMPILADORES

0.2 – Objetivos da 0.2 – Objetivos da Disciplina Disciplina

0.2.1 – Objetivo Geral0.2.1 – Objetivo Geral

Estudo teórico e prático de Estudo teórico e prático de técnicastécnicas para a para a construção de compiladoresconstrução de compiladores de linguagens de linguagens de programaçãode programação

Page 7: CES-41 COMPILADORES

0.2.2 – Objetivos específicos0.2.2 – Objetivos específicos

Conhecimento do Conhecimento do contextocontexto onde se insere um onde se insere um compiladorcompilador

Estudo da Estudo da organizaçãoorganização de compiladoresde compiladores

Estudo de Estudo de princípiosprincípios, , técnicastécnicas e e ferramentasferramentas para a implementação de para a implementação de cada cada componentecomponente de um compilador de um compilador

ConstruçãoConstrução de um de um compiladorcompilador para uma para uma linguagem de programação simplificada linguagem de programação simplificada

Page 8: CES-41 COMPILADORES

0.3 – Comentários sobre a 0.3 – Comentários sobre a DisciplinaDisciplina

O Engenheiro de Computação deve estar preparado O Engenheiro de Computação deve estar preparado para para projetar novas linguagensprojetar novas linguagens de programação, de programação, bem como para bem como para disponibilizar linguagensdisponibilizar linguagens conhecidas para novas máquinasconhecidas para novas máquinas

CompiladoresCompiladores e e interpretadoresinterpretadores dessas linguagens dessas linguagens são importantes ferramentas para torná-las são importantes ferramentas para torná-las disponíveisdisponíveis

Na realidade,Na realidade, poucos especialistas poucos especialistas em Computação em Computação executam tarefas de executam tarefas de construir construir ouou manter manter um um compilador ou um interpretador de uma linguagem de compilador ou um interpretador de uma linguagem de programaçãoprogramação

Page 9: CES-41 COMPILADORES

No entanto o estudo do No entanto o estudo do processo de processo de compilação compilação é valioso:é valioso:

AprimoraAprimora muito os conhecimentos sobre muito os conhecimentos sobre linguagens de programaçãolinguagens de programação

Ajuda o programador alcançar Ajuda o programador alcançar eficiênciaeficiência em em seus seus programasprogramas

Forma uma boa Forma uma boa ponteponte entre os conhecimentos entre os conhecimentos de de hardwarehardware e de e de softwaresoftware

Page 10: CES-41 COMPILADORES

E ainda:E ainda:

Dá boas diretrizes para o projeto de Dá boas diretrizes para o projeto de novas novas linguagenslinguagens, evitando , evitando construções difíceisconstruções difíceis de de serem compiladas e geradoras de serem compiladas e geradoras de código código ineficienteineficiente

Apresenta ao engenheiro de computação as Apresenta ao engenheiro de computação as ferramentas ferramentas LexLex e e YaccYacc, importantes para o , importantes para o desenvolvimento de sistemas de softwaredesenvolvimento de sistemas de software

Princípios sobre Princípios sobre construção de construção de compiladorescompiladores são usados também em são usados também em outras outras áreasáreas da Computação da Computação

Page 11: CES-41 COMPILADORES

Exemplos de utilidade em outras áreas:Exemplos de utilidade em outras áreas:

Análise léxicaAnálise léxica faz faz reconhecimento de reconhecimento de cadeiascadeias, também usado em: , também usado em:

Editores de texto, sistemas de recuperação de Editores de texto, sistemas de recuperação de informações e reconhecimento de padrõesinformações e reconhecimento de padrões

■ Gramáticas livres de contexto e definições Gramáticas livres de contexto e definições orientadas pela sintaxeorientadas pela sintaxe são usadas na são usadas na implementação de implementação de pequenas linguagenspequenas linguagens tais tais como:como:

Formatadores de texto, sistemas de Formatadores de texto, sistemas de computação gráfica, linguagens para banco de computação gráfica, linguagens para banco de dados, linguagens para simulação, etc.dados, linguagens para simulação, etc.

Page 12: CES-41 COMPILADORES

Exemplos de utilidade em outras áreas:Exemplos de utilidade em outras áreas:

Otimização de códigoOtimização de código é usada em validação é usada em validação de programas, transformação de programas de programas, transformação de programas desestruturados e paralelização de programas desestruturados e paralelização de programas sequenciaissequenciais

Análise sintáticaAnálise sintática orienta a construção da orienta a construção da árvore de controleárvore de controle de um programa, que é de um programa, que é base para a otimização e paralelização de base para a otimização e paralelização de programasprogramas

Page 13: CES-41 COMPILADORES

Nos Nos anos 50anos 50, a construção de um compilador , a construção de um compilador era uma era uma tarefa extremamente difíciltarefa extremamente difícil

Ao Ao longo do tempolongo do tempo, foram desenvolvidas:, foram desenvolvidas:

- Técnicas bem engenhosasTécnicas bem engenhosas- Linguagens bem organizadasLinguagens bem organizadas- Ambientes de programaçãoAmbientes de programação- Ferramentas automáticasFerramentas automáticas

Hoje, um Hoje, um pequeno compiladorpequeno compilador é projetado é projetado em disciplinas de em disciplinas de um anoum ano

Page 14: CES-41 COMPILADORES

Um conjunto de Um conjunto de técnicas básicastécnicas básicas pode ser pode ser usado na construção de compiladores para usado na construção de compiladores para várias linguagensvárias linguagens e e várias máquinasvárias máquinas

Construção de compiladores abrange e integra Construção de compiladores abrange e integra conhecimentosconhecimentos de: de:

- Linguagens de programaçãoLinguagens de programação- Arquitetura de computadoresArquitetura de computadores- Teoria de autômatosTeoria de autômatos- Estruturas de dadosEstruturas de dados- Engenharia de softwareEngenharia de software

Page 15: CES-41 COMPILADORES

0.4 – Programa da 0.4 – Programa da Disciplina Disciplina

Cap. ICap. I - Introdução - Introdução - 1 sem- 1 semCap. IICap. II - Gramáticas e linguagens- Gramáticas e linguagens - 0.5 sem- 0.5 semCap. IIICap. III - Diagramas de transições- Diagramas de transições - 2 sem- 2 semCap. IV Cap. IV - Complementos de análise léxica- Complementos de análise léxica - 0.5 - 0.5

semsemCap. V Cap. V - Análise sintática- Análise sintática - 4 sem- 4 semCap. VI Cap. VI - Análise semântica- Análise semântica - 3 sem- 3 semCap. VII Cap. VII - Código intermediário- Código intermediário - 2 sem- 2 semCap. VIII Cap. VIII - Organização em tempo de execução - Organização em tempo de execução - -

1 sem1 semCap. IXCap. IX - Geração de código- Geração de código - 1 sem- 1 semCap. XCap. X - Otimização de código- Otimização de código - 1 sem- 1 sem

Page 16: CES-41 COMPILADORES

0.5 – Metodologia e Carga 0.5 – Metodologia e Carga HoráriaHorária

Pré-requisitos de CES-41:Pré-requisitos de CES-41:

CTC-34 Autômata e Linguagens FormaisCTC-34 Autômata e Linguagens Formais CES-11 Algoritmos e Estruturas de DadosCES-11 Algoritmos e Estruturas de Dados

Carga horária semanal: 3-0-2-5Carga horária semanal: 3-0-2-5

Aulas teóricas:Aulas teóricas: expositivas e em sala comum expositivas e em sala comum

Aulas de laboratório:Aulas de laboratório: em sala com em sala com microcomputadores; ferramentas microcomputadores; ferramentas LexLex e e YaccYacc

Page 17: CES-41 COMPILADORES

0.6 – Critérios de 0.6 – Critérios de Avaliação Avaliação

Os tipos de Os tipos de trabalhostrabalhos a serem a serem propostospropostos são: são:

Séries de exercíciosSéries de exercícios sobre a sobre a teoriateoria da da disciplina, disciplina, semsem necessidade de necessidade de programaçãoprogramação As questões podem ser As questões podem ser práticaspráticas ou até ou até

teóricasteóricas

Séries de exercícios Séries de exercícios envolvendo envolvendo programaçãoprogramação de algoritmos ou técnicas apresentadasde algoritmos ou técnicas apresentadas

LaboratóriosLaboratórios visando a visando a implementaçãoimplementação de um de um compiladorcompilador, usando , usando ferramentas automáticasferramentas automáticas

Não haverá Não haverá provas bimestraisprovas bimestrais nem de nem de ExameExame

Page 18: CES-41 COMPILADORES

■ Os objetivos dos Os objetivos dos laboratórioslaboratórios poderão ser a poderão ser a implementaçãoimplementação de: de:

Analisador léxico Analisador léxico

Analisador sintáticoAnalisador sintático

Analisador semânticoAnalisador semântico

Gerador de código intermediárioGerador de código intermediário

Gerador de código objeto Gerador de código objeto

Interpretador do código intermediário Interpretador do código intermediário

Page 19: CES-41 COMPILADORES

■ A A nota finalnota final da disciplina será uma da disciplina será uma média média ponderada ponderada das notas dos trabalhosdas notas dos trabalhos

Os pesos dos trabalhos dependem do Os pesos dos trabalhos dependem do esforço esforço exigidoexigido e da e da importância do assuntoimportância do assunto abordadoabordado

■ Trabalhos Trabalhos individuaisindividuais e em e em gruposgrupos::

As análises léxica e sintática são de caráter As análises léxica e sintática são de caráter individualindividual

Os Os outrosoutros laboratórios poderão ser feitos em laboratórios poderão ser feitos em gruposgrupos de no máximo de no máximo dois alunosdois alunos

As As sériesséries poderão ou não ser de caráter poderão ou não ser de caráter individualindividual

Page 20: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.1 – Bibliografia básica0.7.1 – Bibliografia básica

A.V.Aho, M.S.Lam, A.V.Aho, M.S.Lam, R.Sethi e J.D.Ullman – R.Sethi e J.D.Ullman – Compiladores: Compiladores: Princípios, Técnicas Princípios, Técnicas e Ferramentase Ferramentas – 2– 2aa Edição – São Paulo – Edição – São Paulo – Pearson/Addison Pearson/Addison Wesley – 2008.Wesley – 2008.

É a 2ª edição, É a 2ª edição, traduzida para traduzida para Português, do Português, do conhecido conhecido livro do livro do dragãodragão

Page 21: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.1 – Bibliografia básica0.7.1 – Bibliografia básica

A.V.Aho, R.Sethi e A.V.Aho, R.Sethi e J.D.Ullman – J.D.Ullman – Compilers: Compilers: Principles, Principles, Techniques and Techniques and ToolsTools – Reading – – Reading – Addison Wesley – Addison Wesley – 1986.1986.

É a 1ª edição do É a 1ª edição do livro livro do dragãodo dragão

Page 22: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.1 – Bibliografia básica0.7.1 – Bibliografia básica

K.C.Louden – Compiladores: Princípios e Práticas –São Paulo – Thomson – 2004.

Page 23: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.1 – Bibliografia básica0.7.1 – Bibliografia básica

J.P.Tremblay e P.G.Sorenson – The Theory and Practice of Compiler Writing – Singapore – McGraw Hill – 1989.

Page 24: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.1 – Bibliografia básica0.7.1 – Bibliografia básica

Slides de CES-41 – Prof. Mokarzel, 2014

Page 25: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar0.7.2 – Bibliografia suplementar

A.I.Holub – Compiler Design in C – Englewood Cliffs – Prentice Hall – 1990.

Page 26: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar0.7.2 – Bibliografia suplementar

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

Page 27: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar0.7.2 – Bibliografia suplementar

I.Ricarte – Introdução à Compilação – Rio de Janeiro – Campus/Elsevier – 2008.

Page 28: CES-41 COMPILADORES

0.7 – Bibliografia 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar0.7.2 – Bibliografia suplementar

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