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

Compiladores

  • 1.
    Carlos Wagner 1 Técnicoem 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 Linguagesde 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 Linguagesde 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 Paradigmasde 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 Paradigmasde 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 Paradigmasde 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 Paradigmasde 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 Linguagensinterpretadas ● 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 Linguagensinterpretadas ● 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 Linguagensinterpretadas ● Exemplos de linguagens interpretadas: Basic, Logo, R, S, Python, Lisp, JavaScript, Lua, Ruby, VBScript, ActionScript...
  • 13.
    Carlos Wagner 13 Linguagensque 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...
  • 14.
  • 15.
    Carlos Wagner 15 Compiladoresde 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 Compiladoresde 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écnicoem Informática ● Carlos Wagner – Fone: 8413-6949 – cwagnersc@gmail.com – http://cwagnersc.blogspot.com – http://www.facebook.com/CWagnersc