CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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

Transcript of CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

Page 1: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

CES-41 CES-41 COMPILADORESCOMPILADORES

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

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

Page 2: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

CES-41 CES-41 COMPILADORESCOMPILADORES

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

Page 3: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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

0.1 – Professor e alunos0.1 – Professor e alunos

0.2 – Objetivos da disciplina0.2 – Objetivos da disciplina

0.3 – Comentários sobre a disciplina 0.3 – Comentários sobre a disciplina

0.4 – Programa da disciplina0.4 – Programa da disciplina

0.5 – Metodologia e carga horária0.5 – Metodologia e carga horária

0.6 – Critérios de avaliação0.6 – Critérios de avaliação

0.7 – Bibliografia0.7 – Bibliografia

Page 4: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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(12) 9-9714-7538

Page 6: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 dessas linguagens são importantes ferramentas para torná-linguagens são importantes ferramentas para torná-las las disponíveisdisponíveis

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

Page 9: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Editores de texto, sistemas de recuperação de informações e reconhecimento de padrõesde informaçõ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 computação gráfica, linguagens para banco de dados, linguagens para simulação, etc.de dados, linguagens para simulação, etc.

Page 12: CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 sem- 0.5 semCap. 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 - 1

semsemCap. 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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

■ 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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

■ 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 exigidoesforço exigido e da e da importância do importância do assuntoassunto abordado abordado

■ 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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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 Prof. Fábio Carneiro Mokarzel 2014mokarzel.

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.