SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Carlos Wagner 1
Técnico em Informática
● Prof.: Carlos Wagner
– Linux Básico
– Programação 1
– Introdução a Sistemas Distribuídos e Segurança de
Redes
– Montagem e manutenção
Carlos Wagner 2
Linguages de Programação e
Compiladores
● Linguagens de programação são conjuntos de
padrões e comandos usados para dar ordens aos
computadores;
● Compiladores são os programas que transformam
os programas escritos em linguagens de
programação (de baixo ou alto nível) para a
linguagem de máquina, própria da plataforma do
equipamento.
Carlos Wagner 3
Linguages de Programação e
Compiladores
● Linguagens de baixo nível estão mais relacionadas
com a arquitetura dos equipamentos e portanto são
diferentes entre si;
● LPs de alto nível estão mais longe dos detalhes das
máquinas e são padronizadas.
Carlos Wagner 4
Paradigmas de programação
● Fornecem e determinam a visão que o
programador possui sobre a estruturação e
execução do programa:
– Procedural;
– Estruturada;
– Modular;
– Orientada a objetos;
– Linear.
Carlos Wagner 5
Paradigmas de programação
● Procedural ou programação imperativa:
baseado no conceito de chamadas a
procedimentos (rotinas, subrotinas, métodos
ou funções)
– Facilidade em reutilizar código;
– Facilita organizar o fluxo do programa;
● Ex.: Ada, Algol, Basic, C/C++, Cobol,
D, ECMAScript, Frtran...
Carlos Wagner 6
Paradigmas de programação
● Estruturada: preconiza, recomenda que todos
os programas possíveis podem ser reduzidos
a apenas três estruturas: sequência, decisão e
repetição.
– Ex.: C/C++, Pascal, Basic, Cobol
Carlos Wagner 7
Paradigmas de programação
● Orientado a objetos: baseado na composição
e interação de diversas unidades de software
chamadas objetos. Objetos são instâncias das
Classes que definem atributos e métodos que
devem ser usados e manipulados para
executarem os programas.
– Ex.: C++, Object Pascal, Smalltalk, C#,
Ada
Carlos Wagner 8
Compiladores
● Um compilador é um programa de sistema
que traduz um programa descrito em uma
linguagem de programação de alto nível para
um programa equivalente em código de
máquina para um determinado processador.
Carlos Wagner 9
Compiladores
● Uma LP consiste essencialmente de uma
sequência de strings ou símbolos com regras
oara definir quais dessas sequenências são
válidas na linguagem (sintaxe)
● A interpretação do significado de uma
sequência válida de símbolos corresponde à
semântica da linguagem.
● A sintaxe de uma LP é expressa na forma de
uma gramática.
Carlos Wagner 10
Linguagens interpretadas
● Nem todas as linguagens precisam ser
compiladas. Algumas podem ser interpretadas
e outras ainda devem ser executadas em
máquinas virtuais.
● As linguagens interpretadas precisam de um
programa (interpretador) que leem o código
fonte do programa e executam os comandos
contidos no arquivo.
Carlos Wagner 11
Linguagens interpretadas
● Nem todas as linguagens precisam ser
compiladas. Algumas podem ser interpretadas
e outras ainda devem ser executadas em
máquinas virtuais.
● As linguagens interpretadas precisam de um
programa (interpretador) que leem o código
fonte do programa e executam os comandos
contidos no arquivo.
Carlos Wagner 12
Linguagens interpretadas
● Exemplos de linguagens interpretadas: Basic,
Logo, R, S, Python, Lisp, JavaScript, Lua, Ruby,
VBScript, ActionScript...
Carlos Wagner 13
Linguagens que geram bytecode
● Algumas Lps podem rodar em verdadeiras
plataformas que incluem até máquinas virtuais.
Estas tecnologias normalmente passam por um
processo que gera um arquivo intermediário
chamado bytecode que é específico para a VM
daquela linguagem. Este bytecode então pode ser
interpretado e executado para aquela VM em
qualquer plataforma.
– Ex.: Java, C#, .Net, Lua, Adobe Flash...
Carlos Wagner 14
Bytecode java
Carlos Wagner 15
Compiladores de compiladores
● Ou gerador de compilador, gerador de analisador
sintático ou ainda gerador de parser – é um
algoritmo, um componente de software ou um
programa de computador que gera o código fonte de
um analisador sintático, interpretador ou compilador
de uma linguagem de programação.
● Na maioria dos casos ele é alimentado com a
descrição sintática e semântica da linguagem
independente de arquitetura, junto com uma uma
descrição do conjunto de instruções da arquitetura
independente de linguagem de programação.
Carlos Wagner 16
Compiladores de compiladores
● ANTLR
● Bison
● Coco/R
● DMS Software Reengineering Toolkit
● ELI
● Grako, a Python EBNF-to-PEG parser generator.
● Lemon
● parboiled, a Java library for building parsers.
● Packrat parser
● PQCC, a compiler-compiler that is more than a parser generator.
● SYNTAX, an integrated toolset for compiler construction
● VisualLangLab, a visual parser generator for JVM languages.
● Yacc
● XPL
Carlos Wagner 17
Técnico em Informática
● Carlos Wagner
– Fone: 8413-6949
– cwagnersc@gmail.com
– http://cwagnersc.blogspot.com
– http://www.facebook.com/CWagnersc

Weitere ähnliche Inhalte

Was ist angesagt?

Sistemas operacionais e aplicativos
Sistemas operacionais e aplicativosSistemas operacionais e aplicativos
Sistemas operacionais e aplicativos
guicabral6
 
Sistema Operativo Servidor
Sistema Operativo ServidorSistema Operativo Servidor
Sistema Operativo Servidor
Daniel Barros
 

Was ist angesagt? (20)

Aula 06 softwares
Aula 06   softwaresAula 06   softwares
Aula 06 softwares
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Uml
UmlUml
Uml
 
Sistemas operacionais e aplicativos
Sistemas operacionais e aplicativosSistemas operacionais e aplicativos
Sistemas operacionais e aplicativos
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
 
Gráfico de gantt
Gráfico de ganttGráfico de gantt
Gráfico de gantt
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - Apresentação
 
História e evolução dos computadores
História e evolução dos computadores História e evolução dos computadores
História e evolução dos computadores
 
Planilhas eletrônicas
Planilhas eletrônicasPlanilhas eletrônicas
Planilhas eletrônicas
 
Diagramas de Fluxo de Dados
Diagramas de Fluxo de DadosDiagramas de Fluxo de Dados
Diagramas de Fluxo de Dados
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Introdução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresIntrodução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de Computadores
 
Sistema Operativo Servidor
Sistema Operativo ServidorSistema Operativo Servidor
Sistema Operativo Servidor
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 

Ähnlich wie Compiladores

Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
Wagner Zaparoli
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
AlbertoVach
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
Ray Fran Pires
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
Adriano Teixeira de Souza
 

Ähnlich wie Compiladores (20)

Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Aula01 - Analise e Programação
Aula01 - Analise e ProgramaçãoAula01 - Analise e Programação
Aula01 - Analise e Programação
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptx
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Pascal 70
Pascal 70Pascal 70
Pascal 70
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Aula 03 - Interpretador [mr_@@@@@].pdf
Aula 03 - Interpretador [mr_@@@@@].pdfAula 03 - Interpretador [mr_@@@@@].pdf
Aula 03 - Interpretador [mr_@@@@@].pdf
 
Software
SoftwareSoftware
Software
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Lp m2
Lp m2Lp m2
Lp m2
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Apostila c
Apostila cApostila c
Apostila c
 
Lp m2(parte1)
Lp m2(parte1)Lp m2(parte1)
Lp m2(parte1)
 
Compilador
CompiladorCompilador
Compilador
 

Mehr von Carlos Wagner Costa (18)

Raspberry pi
Raspberry piRaspberry pi
Raspberry pi
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Palestra semana pedagógica2
Palestra semana pedagógica2Palestra semana pedagógica2
Palestra semana pedagógica2
 
Ubuntu 13.04
Ubuntu 13.04Ubuntu 13.04
Ubuntu 13.04
 
História da computação
História da computaçãoHistória da computação
História da computação
 
Vetores
VetoresVetores
Vetores
 
Funções
FunçõesFunções
Funções
 
Lógica booleana e estruturas condicionais
Lógica booleana e estruturas condicionaisLógica booleana e estruturas condicionais
Lógica booleana e estruturas condicionais
 
Estrutura i o e operações mtm
Estrutura i o e operações mtmEstrutura i o e operações mtm
Estrutura i o e operações mtm
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Programação de computadores
Programação de computadoresProgramação de computadores
Programação de computadores
 
Software
SoftwareSoftware
Software
 
Organização de computadores
Organização de computadoresOrganização de computadores
Organização de computadores
 
Famílias de computadores
Famílias de computadoresFamílias de computadores
Famílias de computadores
 
Computador
ComputadorComputador
Computador
 
Computação Básica - Aula 1
Computação Básica - Aula 1Computação Básica - Aula 1
Computação Básica - Aula 1
 

Compiladores

  • 1. Carlos Wagner 1 Técnico em Informática ● Prof.: Carlos Wagner – Linux Básico – Programação 1 – Introdução a Sistemas Distribuídos e Segurança de Redes – Montagem e manutenção
  • 2. Carlos Wagner 2 Linguages de Programação e Compiladores ● Linguagens de programação são conjuntos de padrões e comandos usados para dar ordens aos computadores; ● Compiladores são os programas que transformam os programas escritos em linguagens de programação (de baixo ou alto nível) para a linguagem de máquina, própria da plataforma do equipamento.
  • 3. Carlos Wagner 3 Linguages de Programação e Compiladores ● Linguagens de baixo nível estão mais relacionadas com a arquitetura dos equipamentos e portanto são diferentes entre si; ● LPs de alto nível estão mais longe dos detalhes das máquinas e são padronizadas.
  • 4. Carlos Wagner 4 Paradigmas de programação ● Fornecem e determinam a visão que o programador possui sobre a estruturação e execução do programa: – Procedural; – Estruturada; – Modular; – Orientada a objetos; – Linear.
  • 5. Carlos Wagner 5 Paradigmas de programação ● Procedural ou programação imperativa: baseado no conceito de chamadas a procedimentos (rotinas, subrotinas, métodos ou funções) – Facilidade em reutilizar código; – Facilita organizar o fluxo do programa; ● Ex.: Ada, Algol, Basic, C/C++, Cobol, D, ECMAScript, Frtran...
  • 6. Carlos Wagner 6 Paradigmas de programação ● Estruturada: preconiza, recomenda que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e repetição. – Ex.: C/C++, Pascal, Basic, Cobol
  • 7. Carlos Wagner 7 Paradigmas de programação ● Orientado a objetos: baseado na composição e interação de diversas unidades de software chamadas objetos. Objetos são instâncias das Classes que definem atributos e métodos que devem ser usados e manipulados para executarem os programas. – Ex.: C++, Object Pascal, Smalltalk, C#, Ada
  • 8. Carlos Wagner 8 Compiladores ● Um compilador é um programa de sistema que traduz um programa descrito em uma linguagem de programação de alto nível para um programa equivalente em código de máquina para um determinado processador.
  • 9. Carlos Wagner 9 Compiladores ● Uma LP consiste essencialmente de uma sequência de strings ou símbolos com regras oara definir quais dessas sequenências são válidas na linguagem (sintaxe) ● A interpretação do significado de uma sequência válida de símbolos corresponde à semântica da linguagem. ● A sintaxe de uma LP é expressa na forma de uma gramática.
  • 10. Carlos Wagner 10 Linguagens interpretadas ● Nem todas as linguagens precisam ser compiladas. Algumas podem ser interpretadas e outras ainda devem ser executadas em máquinas virtuais. ● As linguagens interpretadas precisam de um programa (interpretador) que leem o código fonte do programa e executam os comandos contidos no arquivo.
  • 11. Carlos Wagner 11 Linguagens interpretadas ● Nem todas as linguagens precisam ser compiladas. Algumas podem ser interpretadas e outras ainda devem ser executadas em máquinas virtuais. ● As linguagens interpretadas precisam de um programa (interpretador) que leem o código fonte do programa e executam os comandos contidos no arquivo.
  • 12. Carlos Wagner 12 Linguagens interpretadas ● Exemplos de linguagens interpretadas: Basic, Logo, R, S, Python, Lisp, JavaScript, Lua, Ruby, VBScript, ActionScript...
  • 13. Carlos Wagner 13 Linguagens que geram bytecode ● Algumas Lps podem rodar em verdadeiras plataformas que incluem até máquinas virtuais. Estas tecnologias normalmente passam por um processo que gera um arquivo intermediário chamado bytecode que é específico para a VM daquela linguagem. Este bytecode então pode ser interpretado e executado para aquela VM em qualquer plataforma. – Ex.: Java, C#, .Net, Lua, Adobe Flash...
  • 15. Carlos Wagner 15 Compiladores de compiladores ● Ou gerador de compilador, gerador de analisador sintático ou ainda gerador de parser – é um algoritmo, um componente de software ou um programa de computador que gera o código fonte de um analisador sintático, interpretador ou compilador de uma linguagem de programação. ● Na maioria dos casos ele é alimentado com a descrição sintática e semântica da linguagem independente de arquitetura, junto com uma uma descrição do conjunto de instruções da arquitetura independente de linguagem de programação.
  • 16. Carlos Wagner 16 Compiladores de compiladores ● ANTLR ● Bison ● Coco/R ● DMS Software Reengineering Toolkit ● ELI ● Grako, a Python EBNF-to-PEG parser generator. ● Lemon ● parboiled, a Java library for building parsers. ● Packrat parser ● PQCC, a compiler-compiler that is more than a parser generator. ● SYNTAX, an integrated toolset for compiler construction ● VisualLangLab, a visual parser generator for JVM languages. ● Yacc ● XPL
  • 17. Carlos Wagner 17 Técnico em Informática ● Carlos Wagner – Fone: 8413-6949 – cwagnersc@gmail.com – http://cwagnersc.blogspot.com – http://www.facebook.com/CWagnersc