Compiladores

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

Transcript of Compiladores

Page 1: Compiladores

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

Page 2: Compiladores

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.

Page 3: Compiladores

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.

Page 4: Compiladores

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.

Page 5: Compiladores

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...

Page 6: Compiladores

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

Page 7: Compiladores

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

Page 8: Compiladores

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.

Page 9: Compiladores

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.

Page 10: Compiladores

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.

Page 11: Compiladores

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.

Page 12: Compiladores

Carlos Wagner 12

Linguagens interpretadas

● Exemplos de linguagens interpretadas: Basic, Logo, R, S, Python, Lisp, JavaScript, Lua, Ruby, VBScript, ActionScript...

Page 13: Compiladores

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...

Page 14: Compiladores

Carlos Wagner 14

Bytecode java

Page 15: Compiladores

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.

Page 16: Compiladores

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

Page 17: Compiladores

Carlos Wagner 17

Técnico em Informática

● Carlos Wagner– Fone: 8413-6949

[email protected]

– http://cwagnersc.blogspot.com

– http://www.facebook.com/CWagnersc