COMPILADORES E INTERPRETADORES



Documentos relacionados
Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

1.1. Organização de um Sistema Computacional

UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Geração de código intermediário. Novembro 2006

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Introdução a Informática. Prof.: Roberto Franciscatto

ALP Algoritmos e Programação. . Linguagens para Computadores

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Introdução à Lógica de Programação

Curso Técnico em Redes

ICC Introdução para JavaScript

Geração e Otimização de Código

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Introdução às Linguagens de Programação

Organização de Computadores Software

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

FundamentosemInformática

Dadas a base e a altura de um triangulo, determinar sua área.

PHP Material de aula prof. Toninho (8º Ano)

AMBIENTE DE PROGRAMAÇÃO PYTHON

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Arquitetura de Computadores. Tipos de Instruções

Organização de programas em Python. Vanessa Braganholo

1. NÍVEL CONVENCIONAL DE MÁQUINA

Princípios de funcionamento dos computadores

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

Lição 1 Introdução à programação de computadores

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Informática I. Aula 5. Aula 5-13/05/2006 1

Figura 1 - O computador

Introdução aos Sistemas da InformaçãoAula 4 p. 1

Computação L2. Arquivos. Observação: Material da Disciplina Computação Eletrônica CIN/UFPE.

O Processo de Programação

Orientação a Objetos

Programação Web Prof. Wladimir

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Desenvolvendo Websites com PHP

Compiladores INTRODUÇÃO.

LÓGICA DE PROGRAMAÇÃO

INTRODUÇÃO À LINGUAGEM C/C++

AULA 01 CONCEITOS BÁSICOS DE PROGRAMAÇÃO. Eduardo Camargo de Siqueira INFORMÁTICA APLICADA TÉCNICO EM ELETRÔNICA

Resolução de problemas e desenvolvimento de algoritmos

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Componentes do Computador e. aula 3. Profa. Débora Matos

Programação de Computadores III

INE5317 Linguagens Formais e Compiladores. AULA 2: Es trutura geral dos Compiladores

Organização e Arquitetura de Computadores I. de Computadores

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Informática II Cap. 3

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Sistemas Operacionais

Introdução à Linguagem

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Resumo da Matéria de Linguagem de Programação. Linguagem C

Análises Geração RI (representação intermediária) Código Intermediário

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

OBI2009 Caderno de Tarefas

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol

Curso de Programação Computadores

Aprendendo a ESTUDAR. Ensino Fundamental II

A Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Algoritmos e Programação I

4 Estrutura do Sistema Operacional Kernel

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Software Básico (INF1018)

2 Um Primeiro Programa em C

Objetivos: Entender o funcionamento dos programas Java via linha de comando

2 echo "PHP e outros.";

PROGRAMAÇÃO JAVA. Parte 1

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

Algoritmos e Programação Estruturada

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal

Algoritmos. Cláudio Barbosa

Conceitos básicos da linguagem C

Autómatos Finitos Determinísticos

1. CAPÍTULO COMPUTADORES

Disciplina: Organização de computadores


Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

LINGUAGEM C UMA INTRODUÇÃO

Transcrição:

Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte (da linguagem que você está programando) em um código em que o computador entenda. Já um interpretador, transforma um código fonte em código que só ele (o programa que você está utilizando para escrever o código) entende. Assim, quando um programa interpretado for iniciado, ele necessita de uma DLL para poder rodar, que irá traduzir esse código para uma linguagem que o computador entenda. Para melhor compreensão, vejamos um exemplo bem simples. Imagine que você trabalha dentro do computador. O computador só entende instruções em Inglês, mas o código fonte, que o programador digitou, está totalmente em Português. Suponhamos que o código digitado é: "Ele é o meu chefe". Um compilador traduziria esse código em Português para Inglês, e o programa ficaria assim: "He is my boss". Já um Interpretador faria o inverso. Ele traduziria esse código para um jeito que só uma DLL conseguiria entender. O Programa iria sair assim: "Ri is mai bós". Assim, quando o computador precisar usar este programa, ele precisaria chamar um Intérprete (no caso a DLL) para ditar para ele o que está escrito na linguagem interpretada. É isso que ocorre no Visual Basic por exemplo. EXECUÇÃO DE PROGRAMAS Uma linguagem de programação é um conjunto de ferramentas, regras de sintaxe e símbolos ou códigos que nos permitem escrever programas de computador. A primeira e mais primitiva linguagem de computador é a própria linguagem máquina (0 s e 1 s).

Um programa era difícil, longo e principalmente caro de o construir e. era também difícil de ser entendido por outros programadores. Essa complexidade levou è necessidade de desenvolver novas técnicas e ferramentas. COMPILADOR Um compilador tem a finalidade de converter uma linguagem Linguagem Fonte de fácil escrita e leitura para os programadores, numa linguagem Linguagem alvo ou objeto que possa ser executada pelas máquinas. O código executável gerado pelo compilador é dependente do sistema operacional e da linguagem de máquina para o qual o código fonte foi traduzido. A enorme variedade de compiladores existentes é bem vinda, visto que existem milhares de linguagens fonte, e as linguagens alvo são também muito variadas. Programa Fonte for (i=0;i<=10, i++) printf(%d, i); em linguagem de alto nível Compilador Programa Objeto 01000001 10110010 11110010 01001110 (em linguagem de máquina)

Podemos dividir o processo de compilação em duas fases: Análise: Parte o programa fonte em peças constituintes e cria uma representação intermediaria do programa fonte. Est a dividida em: 1. Análise Léxica; 2. Análise Sintática; 3. Análise Semântica. Síntese: Constrói o desejado programa alvo (código de máquina) a partir da representação intermediaria. Se divide em: Geração do Código Otimização do Código 1. Análise Léxica: é o processo de analisar a entrada de linhas de caracteres (tal como o código-fonte de um programa de computador) e produzir uma seqüência de símbolos chamados símbolos léxicos (lexical tokens), ou somente "símbolos" (tokens), que podem ser manipulados mais facilmente pelo compilador. A Análise Léxica é a forma de verificar determinado alfabeto. Quando analisamos uma palavra, podemos definir através da análise léxica se existe ou não algum caracter que não faz parte do nosso alfabeto, ou um alfabeto inventado por nós. O analisador léxico é a primeira etapa de um compilador, logo após virá a análise sintática. 2. Análise Sintática: é o processo de analisar uma seqüência de entrada (lida de um arquivo de computador ou do teclado) para determinar sua estrutura gramatical segundo uma determinada gramática formal. Essa análise faz parte de um compilador. A análise sintática transforma um texto na entrada em uma estrutura de dados, em geral uma árvore, o que é conveniente para processamento posterior e captura a hierarquia implícita desta entrada. Através da análise léxica é obtido um grupo de tokens, para que o analisador sintático use um conjunto de regras para construir uma árvore sintática da estrutura.

Em termos práticos, pode também ser usada para decompor um texto em unidades estruturais para serem organizadas dentro de um bloco, por exemplo. 3. Análise semântica: é a terceira fase da compilação onde se verifica os erros semânticos, (por exemplo, uma multiplicação entre tipos de dados diferentes) no programa-fonte (código-fonte) e coleta as informações necessárias para a próxima fase da compilação que é a geração de programa-objeto (código objeto). FASES DE UM COMPILADOR

INTERPRETADOR Interpretadores são programas de computador que lêem um código fonte de uma linguagem de programação e os convertem em código executável. Seu funcionamento pode variar de acordo com a implementação. Em muitos casos o interpretador lê linha-a-linha e converte em código objeto à medida que vai executando o programa. Linguagens interpretadas são mais dinâmicas por não precisarem escrever-compilar-testar-corrigir-compilartestar-distribuir, e sim escrever-testar-corrigir-escrever-testar-distribuir. Mas existem também linguagens que funcionam como interpretadores e compiladores, como: C, Python, BASIC, entre outros. Exemplo de linguagens interpretadas: BASIC Bash C# Perl PHP Python Euphoria Forth JavaScript Logo MUMPS Ruby O interpretador traduz o código linha a linha. O código fonte não é totalmente traduzido antes de ser executado. Não existem fases distintas nem se produz código intermediário. Passa o tempo todo a ler e a traduzir código. Vantagens Execução mais rápida Desvantagens Várias etapas de tradução Compiladores Permite estruturas de Programação final é maior, programação mais completas necessitando mais memória para a sua execução

Permite a optimização do Processo de correcção de código fonte. erros e depuração é mais demorado Depuração do programa é Execução do programa é mais simples mais lenta Consome menos memória Estruturas de dados Interpretadores demasiado simples Resultado imediato do Necessário fornecer o programa ou rotina programa fonte ao utilizador desenvolvida