1 - introduÇÃo ii.1 conceitos fundamentais ii.2 gerações das linguagens de programação ii.3...

35
1 - INTRODUÇÃO 1 - INTRODUÇÃO Projeto de Linguagens de Programação II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores II.5.1 Estrutura de um tradutor

Upload: internet

Post on 22-Apr-2015

113 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Projeto de Linguagens de Programação

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

II.1 Conceitos FundamentaisII.2 Gerações das Linguagens de ProgramaçãoII.3 Linguagem de ProgramaçãoII.4 Sistema OperacionalII.5 Tradutores II.5.1 Estrutura de um tradutor

Page 2: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Atualmente uma série de tarefas das nas mais diversas áreas são realizadas através de um computador ou algum sistema controlado por um computador.

Exemplifique algumas tarefas realizadas por este sujeito

Exemplifique algumas tarefas realizadas por este sujeito.

Uma delas é programar o =>

II.1 Conceitos Fundamentais

Page 3: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

O que é um programa?É um conjunto de instruções organizadas logicamente.

Como se estabelece uma comunicação?

Oi! Como vai você?

Vou bem! E você?

É necessário a utilização de uma Linguagem para que haja entendimento entre os interlocutores.

II.1 Conceitos FundamentaisII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 4: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Poxa! Ninguém se entende! Por que?

Hi! How are you? O que?

II.1 Conceitos FundamentaisII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 5: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Hi! How are you?

Olá! Como vai você?

E aí Meu! Como vai?

Vou bem! E você?

II.1 Conceitos FundamentaisII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 6: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Olá! Como vai você?Fine!

II.1 Conceitos FundamentaisII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 7: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Linguagem deNatural Máquina

Oi máquina 1101 0110 1111=D6F

Linguagem de programação:

Alto Nível

Tradução:CompiladoresInterpretadores

Baixo Nível

II.1 Conceitos FundamentaisII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 8: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

1ª Geração Linguagem de máquina;

2ª Geração Assembler, linguagem montadora;

3ª Geração Linguagem de alto nível orientada para os procedimentos, linguagem simbólica de composição do raciocínio;

4ª Geração diversificação das linguagens de programação. Linguagens de altíssimo nível, orientadas para problemas.

II.2 Gerações das Linguagens de ProgramaçãoII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 9: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Definição: é um conjunto de termos (vocábulos) e regras (sintaxe) que permitem a formulação de instruções (programas para serem executadas pelo computador)

Tipos de linguagens:• Linguagem de Máquina: é única entendida pelo

computador, sendo formada por instruções em código binário.

II.3 Linguagem de ProgramaçãoII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 10: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

• Linguagem de baixo nível: são aquelas cujo os códigos são muito próximos aos usados pela máquina. São utilizadas no desenvolvimento de

II.3 Linguagem de ProgramaçãoII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

aplicações que interagem diretamente com o hard-ware necessitando alta ve-locidade de execução. A estas linguagens dá-se o

nome de Linguagem Mon-tadora (Assembler – As-sembly Language).

Page 11: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

• Linguagem de alto nível: são aquelas cujo os códigos são muito próximos aos utilizados pela linguagem humana.

II.3 Linguagem de ProgramaçãoII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 12: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Proximidade entre a linguagem e a máquina.II.3 Linguagem de Programação

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 13: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Relação entre o usuário e o computador através da linguagem.

II.3 Linguagem de ProgramaçãoII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 14: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.4 Sistema Operacional

Definição: Conjunto de programas integrados, cuja tarefa é colocar a máquina em operação e proporcionar um ambiente para que o usuário possa se comunicar com ela.

Histórico dos S.O´s1° Nível (anos 50): Auxiliar programas nas operações

de entrada e saída de dados e na tradução de programas-fontes.

2° Nível (anos 60): auxiliar na tradução de programas mais evoluídos, programas de serviço para transferência de informação entre periféricos.

3°Nível (anos 60): base para os tradutores de altíssimo rendimento.

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 15: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Estrutura básica de um sistema operacional.

Os programas de um S.O. podem ser divididos em grupos:

Programas de controle: Coordenam o funcionamento de todos os elementos físicos (hardware) do computador (CPU, processamento de I/O e periféricos).

Gerenciamento de dados: Controlar e coordenar todas as operações relativas à movimentação de dados.

II.4 Sistema OperacionalII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 16: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Gerenciamento de serviços/trabalhos: Controlar os programas de usuários para execução e reexecução e atribuição a periféricos.

Gerenciamento de sistemas: Coordenar e supervisionar o funcionamento dos demais programas tais como: proteção de memória, identificação de erros na memória e de erros de programa (quando a U.C (Unidade de Controle) não reconhecer o comando).

Programas de processo: Usados para dar apoio e fornecer programas para execução: tradutores, utilitários.

II.4 Sistema OperacionalII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 17: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Fonte Objeto ExecutávelTradução Linkedição

ExecutávelEntrada Saída

Compilador

FonteExecutável

Interpretação

Entrada Saída

Interpretador

Page 18: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Fonte Byte CodeCódigo

Intermediário

Tradutor

EntradaSaída

Java

Máquina Virtual

Page 19: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Finalizando: A tradução dos programas pode se feitas de três formas:

Montadores (Assembler): Transformam os programas escritos em linguagem de baixo nível (Assembly) em programas-objetos.

Compiladores: Transforma programas escritos em linguagem de alto nível (programa-fonte) em programas-objetos, que após transformado pelo Linker, poderá ser executado pelo computador (arquivo tipo EXE).

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

II.5 Tradutores

Page 20: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

Interpretadores: Tem as mesmas características dos compiladores, só que não geram programas-objetos. A tradução é feita diretamente do programa fonte. É mais demorado que o compilador, uma vez que interpreta cada comando ao executá-lo.

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

II.5 Tradutores

Page 21: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

II.5 Tradutores II.5.1 – Estrutura de um Tradutor

Page 22: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

II.5.1 – Estrutura de um TradutorII.5 Tradutores

Tabela de Símbolos

Fluxo de Caracteres

Analisador Léxico

Fluxo de tokens

Analisador Sintático

Árvore Sintática

Analisador Semântico

Processo de Análise = front-end compiler

Árvore Sintática

Page 23: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

II.5.1 – Estrutura de um TradutorII.5 Tradutores

Tabela de SímbolosProcesso de

Sítese = back-end compiler

Árvore Sintática

Código da Máquina Alvo

Gerador de Código Intermediário

Representação Intermediária

Gerador de Código

Otimização de Código Depende da Máquina

Representação Intermediária

Código da Máquina Alvo

Otimização de Código independe da Máquina

Page 24: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO II.5 TradutoresII.5.1 – Estrutura de um Tradutor

Tabela de Símbolos: É responsável pelo armazenamento das informações de todo o programa fonte e é utilizada por todas as fases do compilador.

Page 25: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO II.5 TradutoresII.5.1.1 – Análise Léxica

Identifica uma sequência de caracteres: “token”.• Palavra reservada;• Delimitadores;• IdentificadoresInicia a construção da tabela de símbolos e envia mensagem de erros.Exemplo:While i<100 do i:=j+1;

[while,][id,7][<,][cte,13][do,][id,7][:=,][id,12][id,7][;, ]

Page 26: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

[while,][id,7][<,][cte,13][do,][id,7][:=,][id,12][id,7][;, ]

• palavras reservadas, operadores e delimitadores são representados pelos próprios símbolos;

• Identificadores de variáveis e constantes numéricas são representados pelo parn [classe do símbolo, índice de tabela].

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO II.5 TradutoresII.5.1.2 – Análise Léxica

Page 27: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO II.5 Tradutores

II.5.1.3 – Análise Sintática

Verifica se a estrutura gramatical (frase) (expressões, comandos) estão de acordo com as regras da linguagem.

• Processo de varredura (parsing) • Produz a árvore de derivação resultante da

aplicação das regras gramaticais.

Page 28: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5.1.4 – Análise SemânticaII.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Verifica se as estruturas do programa irão fazer sentido durante a execução.

Exemplo:While <expressão> do <comando>

Page 29: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5.1.4 – Geração de Código IntermediárioII.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Utiliza a representação interna produzida pelo analisador sintático e gera como saída uma sequência de código. Esta sequência pode ser o código final ou um código intermediário.

A geração do código intermediário possui algumas vantagens:

• Otimização do código intermediário, obtendo-se um código final mais eficiente;

• Resolve, gradualmente, as dificuldades da passagem do código fonte para o objeto.

Page 30: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5.1.5 – Geração de Código IntermediárioII.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Exemplo:While i<100 do i:=j+1

Page 31: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5.1.6 – Otimização de CódigoII.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Exemplo:While i<100 do i:=j+1

Anterior

Otimizado

Page 32: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5.1.7 – Geração de Código ObjetoII.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Exemplo:while i<100 do i:=j+1

Otimizado

Objeto

Código baseado na linguagem simbólica de um PC 8086

Page 33: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II.5.1.8 – Gerencia de TabelasII.5 TradutoresII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Algumas tabelas são fixas como de paAlavras reservadas, delimitadores, etc..

É de grande importância a tabela montada durante a análise do programa fonte:

• Declaração de variáveis;• Declaração dos procedimentos ou sub-rotinas;• Parâmetros de sub-rotinas; etc.Dados coletados e armazenados na tabela dependem da linguagem.

Page 34: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

C o n c l u s õ e s.

Perguntas?

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO

Page 35: 1 - INTRODUÇÃO II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores

1 - INTRODUÇÃO

1 - INTRODUÇÃO

II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO