Introdução aos Compiladores
|
|
- Carolina Cruz Castel-Branco
- 6 Há anos
- Visualizações:
Transcrição
1 Universidade Católica de Pelotas Introdução aos Compiladores André Rauber Du Bois 1
2 MOTIVAÇÃO Entender os algor ıtmos e estruturas usados para se implementar linguagens de programação Conhecimento pode ser usado para resolver vários tipos de problemas: editores de texto, conversores de arquivos, etc. Uso do conhecimento adquirido em várias disciplinas do curso de Ciência da Computação: Algor ıtmos e Estruturas de Dados, Linguagens Formais, Arquitetura de Hardware, etc. OTIVAÇÃO 2
3 MOTIVAÇÃO Conhecimento Útil: como escolher uma linguagem adequada para resolver um problema espec ıfico, comparar eficîencia de linguagens, gerênciamento de memória Provavelmente uma das disciplinas mais interessantes do curso de Ciência da Computação OTIVAÇÃO 3
4 CURSO DE COMPILADORES 1. Compiladores 2. Fases de um Compilador Análise Léxica Análise Sintática Análise Semântica Geração de Código Intermediário Otimização de Código Intermediário Geração de Código Alvo 3. Tradução Dirigida Por Sintaxe 4. Sistemas de Tempo de Execução 5. Gerência de Memória 6. CONSICO (Congresso Simulado de Compiladores) URSO DE COMPILADORES 4
5 INTRODUÇÃO Linguagens de Programação Compiladores Fases de um Compilador Análise Léxica Análise Sintática Análise Semântica Geração de Código Intermediário Otimização de Código Intermediário Geração de Código Alvo TRODUÇÃO 5
6 LINGUAGENS Linguagem de programação: Meio de comunicação entre o programador e o computador Fornece ligação entre o pensamento humano e a precisão requerida pela máquina O desenvolvimento de um programa é mais fácil se a linguagem estiver mais prox ıma do problema a ser resolvido (Linguagem de Alto N ıvel) INGUAGENS 6
7 LINGUAGENS (CONT.) Computadores entendem apenas sua própria linguagem de máquina (Linguagem de Baixo N ıvel). Zeros e Uns. Programas hoje em dia são geralmente escritos em Linguagens de Alto N ıvel Programas escritos em linguagens de alto n ıvel devem ser traduzidos para linguagem de máquina através de compiladores/interpretadores INGUAGENS (CONT.) 7
8 EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO 1. Linguagem de Máquina Computadores eram programados em linguagem de máquina, usando operações de máquina primitivas, formadas por um código de operação e dois endereços de registradores ou memória Inicialmente usando zeros e uns: Problemas: dif ıcil de lêr, escrever, modificar, fortemente sujeita a erros VOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO 8
9 2. Linguagem de Montagem Oferece uma notação simbólica, são usados nomes ao invés de código binário (b = a + 2 ) MOV a, R1 ADD #2, R1 MOV R1, b Linguagem Assembly Montador / assembler: transforma o programa em Assembly para linguagem de máquina Uma instrução em assembly equivale a uma instrução em linguagem de máquina VOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO 9
10 2. Linguagem de Alto Nível Maior n ıvel de abstração: let s = (a+b+c)/2 in sqrt (s*(s-a)*(s-b)*(s-c) ) Ao invés de: LOAD R1 a; ADD R1 b; ADD R1 c; DIV R1 #2; LOAD R2 R1; LOAD R3 R1; SUB R3 a; MULT R2 R3; LOAD R3 R1; SUB R3 b; MULT R2 R3; LOAD R3 R1; SUB R3 c; MULT R2 R3; LOAD R0 R2; CALL sqrt; VOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO 10
11 TRADUTORES DE LINGUAGEM Montadores (Assemblers) Macro-Assemblers Compiladores Interpretadores RADUTORES DE LINGUAGEM 11
12 COMPILADORES COMPILADOR: programa que lê um programa escrito em uma linguagem fonte e o traduz para um programa equivalente numa outra linguagem (linguagem alvo) PROGRAMA FONTE COMPILADOR PROGRAMA ALVO MENSAGENS DE ERRO OMPILADORES 12
13 Fases de Um Compilador PROGRAMA FONTE Análise Síntese PROGRAMA ALVO MENSAGENS DE ERRO Análise: reconhece o programa e divide em suas partes constituintes criando uma representação intermediária do mesmo S ıntese: Constŕoi o programa alvo desejado, a partir da representação intermediária Também conhecidas como Front-end e Back-end do compilador OMPILADORES 13
14 FASES DO COMPILADOR programa fonte Analisador Léxico Gerador de Código Intermediário Análise (Front End) Analisador Sintático Otimizador de Código Síntese (Back End) Analisador Semântico Gerador de Código programa alvo Tabela de Simbolos ASES DO COMPILADOR 14
15 ANÁLISE Operações são reconhecidas e registradas numa estrutura chamada de Árvore Sintática Cada nó representa uma operação e seus filhos representam os argumentos da operação Exemplo: montante := deposito inicial + taxa de juros * 60 := + montante deposito_inicial taxa_de_juros * 60 NÁLISE 15
16 ANÁLISE Vários tipos de software realizam algum tipo de análise: Editores de Programas Pretty Printers Interpretadores NÁLISE 16
17 TIPOS DE ANÁLISE Análise Léxica: programa é lido (escaneado) e agrupado em tokens i.e., seqüências de caracteres com um significado coletivo Análise Sintática: tokens são agrupados hierarquicamente em uma árvore sintática (baseda na gramática da linguagem) Análise Semântica: o programa é verificado para garantir que os componentes de um programa se combinam de forma significativa IPOS DE ANÁLISE 17
18 ANÁLISE LÉXICA Fazer a leitura do programa fonte, e traduz ı-lo para uma sequência de símbolos léxicos, também chamados de tokens. Exemplo: montante = deposito_inicial +taxa_de_juros * 60 Tokens: 1. O identificador montante 2. O s ımbolo de atribuição := 3. O identificador deposito inicial 4. O sinal de adição + 5. O identificador taxa de juros 6. O sinal de multiplicação * NÁLISE LÉXICA 18
19 7. O n úmero 60 Os espaços e linhas são ignorados NÁLISE LÉXICA 19
20 ANÁLISE SINTÁTICA Verifica se o programa foi escrito respeitando as regras gramaticais da linguagem Agrupa tokens do programa fonte em frases gramaticais, que são usadas pelo compilador para gerar a sa ıda A gramática é geralmente definida usando regras recursivas Exemplo: Regras Recursivas para Expressões: 1. Qualquer identificador é uma expressão 2. Qualquer número é uma expressão 3. Se expressão 1 e expressão 2 são expressões, então também o são expressão 1 + expressão 2 expressão 1 * expressão 2 NÁLISE SINTÁTICA 20
21 Exemplo: Enunciado de uma linguagem de programação Se identificador 1 é um identificador e expressão 2 é uma expressão, então é um enunciado Gramática livre de contexto identificador 1 := expressão 2 NÁLISE SINTÁTICA 21
22 Árvore Gramatical Exemplo: montante := deposito inicial + taxa de juros * 60 enunciado de atribuicão := identificador expressão montante + expressão expressão identificador expressão * expressão deposito_inicial identificador número taxa_de_juros 60 NÁLISE SINTÁTICA 22
23 ANÁLISE SEMÂNTICA Verifica erros semânticos e de tipos Exemplo: detecta que um n úmero real está sendo usado para indexar um vetor Normalmente, valores em uma linguagem são classificados por tipos Operações possuem regras de tipo, definindo os tipos dos operandos e resultado Uma operação usando um tipo errado gera um erro de tipo NÁLISE SEMÂNTICA 23
24 Operador + EXEMPLO DE REGRAS DE TIPO Se os dois operandos são do tipo Int o resultado deve ser do tipo Int Operador While E do C E deve possuir tipo Bool XEMPLO DE REGRAS DE TIPO 24
25 ANÁLISE SEMÂNTICA (CONT.) A semântica da linguagem pode permitir algumas coerções de tipo Exemplo: montante := deposito inicial + taxa de juros * 60 := + montante deposito_inicial taxa_de_juros * 60 NÁLISE SEMÂNTICA (CONT.) 25
26 ANÁLISE SEMÂNTICA (CONT.) Exemplo: montante := deposito inicial + taxa de juros * 60 montante := + deposito_inicial taxa_de_juros inttoreal 60 * NÁLISE SEMÂNTICA (CONT.) 26
27 TABELA DE SÍMBOLOS A Tabela de Símbolos é uma estrutura de dados que contém um registro para cada identificador, com campos contendo seus atributos Atributos: tipo, memória reservada, se é um procedimento, n úmero e tipo dos argumentos, tipo de retorno etc. A tabela permite encontrar rápidamente cada registro, armazenar e recuperar dados do mesmo A tabela é preenchida e usada por todas as fases var montante, deposito_inicial: real; Os identificadores são inseridos na tabela durante a análise léxica,mas o tipo não é conhecido no momento em que é inserido ABELA DE SÍMBOLOS 27
28 FASE DE ANÁLISE (FRONT-END) montante := deposito_inicial + taxa_de_juros + 60 TABELA DE SIMBOLOS 1 montante... 2 deposito_inicial... 3 taxa_de_juros... Analisador Léxico id1 := id2 + id3 * 60 Analisador Sintático id1 Analisador Semântico := + * id1 := + * id2 id3 inttoreal 60 id2 id3 60 Back End código de máquina ASE DE ANÁLISE (FRONT-END) 28
29 GERAÇÃO DE CÓDIGO INTERMEDIÁRIO Alguns compiladores, depois da fase de Análise, geram uma representação intermediária do programa final Propriedades do Código Intermediário: Fácil de produzir, otimizar e traduzir para a linguagem alvo Vantagens Portabilidade: O código intermediário é independente de plataforma, por isso pode ser traduzido para diversas máquinas Simplifica a implementação do compilador, resolvendo gradativamente o problema de transformar o código de alto n ıvel em código de baixo n ıvel Facilita otimização do código final ERAÇÃO DE CÓDIGO INTERMEDIÁRIO 29
30 EXEMPLO DE CÓDIGO INTERMEDIÁRIO Código de três endereços: sequência de instruções, cada uma possuindo no máximo três operandos Muito mais fácil de se traduzir para código de máquina montante := deposito_inicial + taxa_de_juros * 60 temp1 := inttoreal (60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 XEMPLO DE CÓDIGO INTERMEDIÁRIO 30
31 OTIMIZAÇÃO DE CÓDIGO Serve para melhorar o código intermediário temp1 := id3 * 60.0 id1 := id2 + temp1 A conversão de 60 para real pode ser feita durante a compilação, eliminanto a instrução inttoreal temp3 era usada apenas para transmitir seu valor para id1 por isso pode ser eliminada Existem várias transformações simples que podem ser usadas para melhorar o código final Compiladores Otimizantes gastam boa parte do tempo de compilação na faze de otimização TIMIZAÇÃO DE CÓDIGO 31
32 GERAÇÃO DE CÓDIGO É a fase final do compilador que gera código de máquina ou código de montagem (assembly) As instruções do código intermediário são traduzidas para instruções de máquina e registradores são associados as variáveis Exemplo: montante := deposito_inicial + taxa_de_juros * 60 temp1 := id3 * 60.0 id1 := id2 + temp1 pode ser traduzido para MOVF id3, R2 MULF #60.0, R2 ERAÇÃO DE CÓDIGO 32
33 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 ERAÇÃO DE CÓDIGO 33
34 FASE DE SÍNTESE (BACK-END) TABELA DE SIMBOLOS 1 montante... 2 deposito_inicial... 3 taxa_de_juros... montante := deposito_inicial + taxa_de_juros + 60 Front End temp1 := inttoreal (60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 otimizador de código id1 := + * id2 inttoreal id3 60 gerardor de código intermediário temp1 := id3 * 60.0 id1:= id2 + temp1 gerador de código MOVF ID3, R2 MULF #60.0, R2 (...) ASE DE SÍNTESE (BACK-END) 34
35 DETECÇÃO DE ERROS Cada fase da compilação pode encontrar erros. Para se dar mensagens de erro mais completas, o compilador não para assim que encontra o primeiro erro no código. Análise Léxica: erro quando encontra token inválido. Ex: nome variável começando com n úmero Análise Sintática: erro quando o fluxo de tokens viola as regras da linguagem. Ex: Esquecer o BEGIN e END no Pascal. Análise Semântica: sintaxe correta mas significado errado. Ex: erro de tipo. Somar o nome de um array com o nome de um procedimento. :-) ETECÇÃO DE ERROS 35
36 CONTEXTO DE UM COMPILADOR Além do compilador, vários outros programas podem ser necessários para se criar um programa alvo executável. Exemplo1: o programa pode estar dividido em módulos Exemplo2: a linguagem alvo pode não ser linguagem de máquina ONTEXTO DE UM COMPILADOR 36
37 UM SISTEMA DE PROCESSAMENTO DE LINGUAGEM programa fonte pré processador programa compilador programa objeto em linguagem de montagem montador bibliotecas código de máquina relocável carregador código de máquina absoluto M SISTEMA DE PROCESSAMENTO DE LINGUAGEM 37
38 Primo do compilador INTERPRETADORES Gera código intermediário, que é executado por um programa ou máquina virtual, sem gerar código de máquina programa fonte Tradutor programa intermediário Interpretador (Máquina Virtual) resultados Alguns interpretadores não geram código intermediário, apenas executam as instruções presentes no código fonte, assim que encontradas, uma por vez. Ex: interpretador da linguagem BASIC TERPRETADORES 38
39 INTERPRETADORES O tempo de tradução da linguagem em um Interpretador, é muito mais rápido do que em um compilador, já que não é necessário gerar código de máquina O tempo de execução em um interpretador é geralmente muito mais longo do que se usando código compilado para linguagem de máquina Interpretador é muito mais fácil de usar e possui mensagens de erro melhores já que o processo de interpretação é feito próximo ao código fonte TERPRETADORES 39
Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisIntrodução parte II. Compiladores. Mariella Berger
Introdução parte II Compiladores Mariella Berger Sumário Partes de um compilador Gerador da Tabela de Símbolos Detecção de erros As fases da análise As fases de um compilador Montadores O que é um Compilador?
Leia maisIntrodução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 26 e 27 de fevereiro de 2007 Agenda da Aula Revisão Linguagem de Programação Tradutores Compilador As Fases de Um Compilador Linguagem
Leia maisCompiladores. Introdução à Compiladores
Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?
Leia maisCompiladores. Conceitos Básicos
Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz
Leia maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisConteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação
Compiladores Conteúdo Introdução a compiladores Tradução x Interpretação Processo de Compilação Quando se inventou o computador criou se uma máquina a mais, quando se criou o compilador criou se uma nova
Leia maisConversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação
Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada
Leia maisII.1 Conceitos Fundamentais. Uma delas é programar 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 II.5.1.1 Análise Léxica II.5.1.3
Leia maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisConstrução de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.
Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1
Leia maisCompiladores. Introdução
Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios
Leia maisCompiladores Aula 1. Celso Olivete Júnior.
Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Tópicos da disciplina Introdução à compilação Analisador léxico Analisador sintático descendente Analisador sintático ascendente Análise semântica Geração
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Exercício em duplas Para esquentar... 2 1 Compilação:
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisAutômatos e Linguagens
Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia maisSistema Computacional
Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes reinaldo@cefet-al.br O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisEA876 - Introdução a Software de Sistema
A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C
ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens
Leia maisUniversidade Católica de Pelotas Bacharelado em Ciência da Computação Linguagens Formais e Autômatos TEXTO 6 Introdução à Compilação
Universidade Católica de Pelotas Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 6 Introdução à Compilação Prof. Luiz A M Palazzo Maio de 2011 Um COMPILADOR é um programa
Leia maisUniversidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação
Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador
Leia maisProgramação de Sistemas (Sistemas de Programação) Semana 10, Aula 17
PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 Linguagens e Compiladores Programação em linguagem de alto nível Escola Politécnica da Universidade de São Paulo Roteiro 1.
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Síntese. Prof. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Síntese Prof. geovanegriesang@unisc.br Data 18/11/2013 Análise sintática Parte 01 25/11/2013 Análise sintática Parte 02
Leia maisParadigmas de Programação
Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas
Leia maisProgramação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR
Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Introdução Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível (escrito em uma linguagem de
Leia maisFERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS
FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa
Leia maisLinguagens e Compiladores
Linguagens e Compiladores Aula 1: a) Critérios b) Noções de Compiladores e Interpretadores c) Usos da tecnologia de compilação d) Compiladores, filtros e pré-processadores e) Estruturação lógica de compiladores
Leia maisProgramação de Computadores:
Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema
Leia maisCompiladores. Geração de Código Objeto
Compiladores Geração de Código Objeto Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Leia maisCompiladores. Fabio Mascarenhas
Compiladores Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Compiladores x Interpretadores Offline x Online Um compilador transforma um programa executável de uma linguagem fonte
Leia maisINE5318 Construção de Compiladores. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:
INE5318 Construção de Compiladores Ricardo Azambuja Silveira INE CTC UFSC E Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Identificação da disciplina Código: INE 5426 Nome: Construção de Compiladores
Leia maisLinguagens de Programação Aula 3
Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...
Leia maisIntrodução. Tradutores de Linguagens de Programação
Introdução Compiladores 1 Linguagens de programação são notações para se descrever computações para pessoas e para máquinas. Todo software executado em todos os computadores foi escrito em alguma linguagem
Leia maisCompiladores e Computabilidade
Compiladores e Computabilidade Prof. Leandro C. Fernandes UNIP Universidade Paulista, 2013 GERAÇÃO DE CÓDIGO INTERMEDIÁRIO Geração de Código Intermediário Corresponde a 1ª etapa do processo de Síntese
Leia maisCompiladores. Análise Léxica
Compiladores Análise Léxica Regras Léxicas Especificam o conjunto de caracteres que constituem o alfabeto da linguagem, bem como a maneira que eles podem ser combinados; Exemplo Pascal: letras maiúsculas
Leia maisTecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)
Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora
Leia maisIntrodução à Computação: Máquinas Multiníveis
Introdução à Computação: Máquinas Multiníveis Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisPROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Leia maisINE5622 INTRODUÇÃO A COMPILADORES
INE5622 INTRODUÇÃO A COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer o processo de especificação e implementação de linguagens de programação, a partir do estudo dos conceitos, modelos, técnicas e
Leia maisCompiladores. Prof. Bruno Moreno
Compiladores Prof. Bruno Moreno Apresentação - Professor Bruno Neiva Moreno Graduado em Ciência da Computação (UFPB) 2004 a 2009 Bolsista PIBIC/CNPq LARHENA - Laboratório de Recursos Hídricos e Engenharia
Leia maisProcedimentos. Sistemas de Computação
Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem
Leia maisProgramação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1
Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins simone@ic.uff.br SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento
Leia maisProf. Adriano Maranhão COMPILADORES
Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então
Leia maisLinguagens de Programação
Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.
Leia maisFerramentas Programação. UDESC - Prof. Juliano Maia 1
Ferramentas Programação UDESC - Prof. Juliano Maia 1 Índice Seção 1 Linguagens de Programação Seção 2 Interpretador Seção 3 Compilador / Linkeditor Seção 4 Ambientes de Desenvolvimento UDESC - Prof. Juliano
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
Leia maisTratamento dos Erros de Sintaxe. Adriano Maranhão
Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores
Leia maisProf. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior
Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Meio pelo qual se pode indicar os passos que devem ser realizados pelo computador para resolver problemas; Através da linguagem,
Leia maisMétodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Leia maisAlgoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav
Leia maisIntrodução à Computação
Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda
Leia maisLinguagens de Programação
O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.
Leia maisApresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.
Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção
Leia maisSistemas Operacionais
Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads
Leia maisAnalisador Léxico parte II
Analisador Léxico parte II Compiladores Mariella Berger Sumário Definições Regulares Gerador de Analisador Léxico Flex Exemplos As fases de um Compilador Análise Léxica Análise Sintática ANÁLISE Análise
Leia maisAULA 03: FUNCIONAMENTO DE UM COMPUTADOR
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisBreve Histórico & Conceitos Básicos
Breve Histórico & Conceitos Básicos compiladores interpretadores montadores filtros pré-processadores carregadores linkers compilador cruzado (cross-compiler) auto-compilável (bootstraping) auto-residente
Leia maisParadigmas de Linguagem de Programação. Aspectos Básicos
Paradigmas de Linguagem de Programação Aspectos Básicos Introdução Nesta segunda etapa de nossos estudos, veremos: aspectos básicos de programa e linguagem de programação; revisão de conceitos de compilador
Leia maisQuestões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO
Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.
Leia maisIntrodução a Ciência da Computação
Ministério da Educação Universidade Tecnológica Federal do Paraná Câmpus Santa Helena Introdução a Ciência da Computação Bacharelado em Ciência da Computação Professor : Agnaldo da Costa 1 Camadas do Usuário
Leia maisAula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU
Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia maisConceitos básicos sobre computadores (continuação)
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Conceitos básicos sobre computadores (continuação) Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário O que é um computador e
Leia maisIntrodução à Programação de Computadores Fabricação Mecânica
Introdução à Programação de Computadores Fabricação Mecânica Edilson Hipolito da Silva edilson.hipolito@ifsc.edu.br - http://www.hipolito.info Aula 04 - Linguagens de Programação, Interpretador, compilador
Leia maisLembrando análise semântica. Compiladores. Implementação de esquemas de tradução L-atribuídos. Exemplo de implementação top-down (1)
Lembrando análise semântica Compiladores Geração de código intermediário (1) Parser Bottom-up: squema S-atribuído sem problema Apenas atributos sintetizados squema L-atribuído: ok, mas deve-se usar variáveis
Leia maisCompiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38
Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores
Leia maisIntrodução. (Aula 2) Organização Estruturada de Computadores
Introdução (Aula 2) Organização Estruturada de Computadores Introdução Arquitetura de Hardware 01- Monitor 02- Placa-Mãe 03- Processador 04- Memória RAM 05- Placas de Rede, Som, Vídeo, Fax... 06- Fonte
Leia maisFunção, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.
Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
Leia maisCapítulo 1 Linguagens e processadores
1. Linguagens Capítulo 1 Linguagens e processadores 2. Processamento de Linguagens: DI-UBI 2017/2018 1/28 Linguagens Linguagens Processamento de Linguagens: DI-UBI 2017/2018 2/28 Linguagens 1. Definição
Leia maisFACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO
0 FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO Valença Bahia Novembro 2010 1 ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO Trabalho apresentado como requisito
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo
Leia maisAula teórica 7. Preparado por eng.tatiana Kovalenko
Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana
Leia maisIntrodução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)
Introdução Arquitetura de Hardware Introdução (Aula 2) Organização Estruturada de Computadores 01- Monitor 02- Placa-Mãe 03- Processador 04- Memória RAM 05- Placas de Rede, Som, Vídeo, Fax... 06- Fonte
Leia maisCAP. VII GERAÇÃO DE CÓDIGO
CAP. VII GERAÇÃO DE CÓDIGO VII. 1 - INTRODUÇÃO Léxica Análise Sintática Semântica Compilação G.C. intermediário Síntese Otimização de código Geração de código Síntese Tradução do programa fonte (léxica,
Leia maisIntrodução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação
Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP Aula 1 Introdução à Computação Eventos históricos: 1) Primeiro computador a válvulas, o Eletronic Numeric Integrator And
Leia maisAlgoritmos. Prof. Jonatas Bastos Site:
Algoritmos Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Dúvidas! p p p Como os computadores entendem os algoritmo? Os computadores não entendem os passos
Leia maisCompiladores. Análise Léxica
Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa
Leia maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisOFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO
OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Compiladores e Interpretadores Compiladores
Leia maisIntrodução à Computação
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre
Leia maisBanco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas
Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar
Leia maisIntrodução à Computação
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre
Leia maisCompiladores 02 Analise léxica
Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise
Leia maisEspecificações Gerais do Compilador e Definição de FRANKIE
Especificações Gerais do Compilador e Definição de FRANKIE 1. Especificações Gerais do Compilador (Decisões de projeto) 2. Especificações da Linguagem Fonte Definição Informal Considerações Léxicas Considerações
Leia mais