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
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
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
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
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
1 - INTRODUÇÃO
1 - INTRODUÇÃO
Olá! Como vai você?Fine!
II.1 Conceitos FundamentaisII – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO
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
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
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
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).
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
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
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
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
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
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
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
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
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
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
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO
II.5 Tradutores II.5.1 – Estrutura de um Tradutor
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
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
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.
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][;, ]
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
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.
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>
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.
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
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
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
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.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
C o n c l u s õ e s.
Perguntas?
II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II – FUNDAMENTOS DE COMPILAÇÃO E INTERPRETAÇÃO