Como construir um compilador utilizando ferramentas Java
|
|
- Orlando Filipe Sabrosa
- 7 Há anos
- Visualizações:
Transcrição
1 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
2 Como construir um compilador utilizando ferramentas Java p. 2/2 O livro
3 Como construir um compilador utilizando ferramentas Java p. 3/2 Conteúdo Introdução à compilação. Descrição da linguagem X++, utilizada como estudo de caso. Apresenta conceitos básicos sobre linguagens e como defini-las. Análise léxica. Mostra como se utiliza a ferramenta JavaCC para criar um analisador léxico para a linguagem X++. Análise sintática. Mostra como construir um analisador sintático para X++ utilizando JavaCC.
4 Como construir um compilador utilizando ferramentas Java p. 4/2 Conteúdo Árvore sintática. Mostra como construir a árvore sintática usando o JavaCC e como utilizá-la nas etapas seguintes. Tabela de símbolos e análise semântica. Mostra como implementar uma tabela de símbolos utilizada na checagem de tipos e validação semântica. Geração de código. Mostra como utilizar a ferramenta Jasmin para gerar o código-objeto (bytecode) Java.
5 Como construir um compilador utilizando ferramentas Java p. 5/2 O que é um programa? Seqüência de 0s e 1s. CPU A B C D Memória
6 Como construir um compilador utilizando ferramentas Java p. 6/2 Operações simples Programa é armazenado na memória.
7 Como construir um compilador utilizando ferramentas Java p. 6/2 Operações simples Programa é armazenado na memória. Programa é executado dentro da CPU por meio de instruções muito simples.
8 Como construir um compilador utilizando ferramentas Java p. 6/2 Operações simples Programa é armazenado na memória. Programa é executado dentro da CPU por meio de instruções muito simples. Somar posição de memória 100 com posição 101 e colocar resultado em 102. copiar o conteúdo da posição de memória 100 para o registrador A; copiar o conteúdo da posição de memória 101 para o registrador B; somar o conteúdo de B em A; copiar o conteúdo de A para a posição de memória 102.
9 Como construir um compilador utilizando ferramentas Java p. 7/2 Linguagens de alto nível Necessário desenvolver programas num nível de abstração um pouco mais elevado.
10 Como construir um compilador utilizando ferramentas Java p. 7/2 Linguagens de alto nível Necessário desenvolver programas num nível de abstração um pouco mais elevado. Menos dependente das instruções de uma determinada máquina.
11 Como construir um compilador utilizando ferramentas Java p. 7/2 Linguagens de alto nível Necessário desenvolver programas num nível de abstração um pouco mais elevado. Menos dependente das instruções de uma determinada máquina. As linguagens de alto nível substituem as instruções dos computadores por comandos cujas utilização e compreensão são mais fáceis
12 Como construir um compilador utilizando ferramentas Java p. 7/2 Linguagens de alto nível Necessário desenvolver programas num nível de abstração um pouco mais elevado. Menos dependente das instruções de uma determinada máquina. As linguagens de alto nível substituem as instruções dos computadores por comandos cujas utilização e compreensão são mais fáceis a = b + c
13 Como construir um compilador utilizando ferramentas Java p. 8/2 Processo de compilação As linguagens de programação evoluíram
14 Como construir um compilador utilizando ferramentas Java p. 8/2 Processo de compilação As linguagens de programação evoluíram Máquinas continuam as mesmas ou seja, continuam usando instruções de baixo nível
15 Como construir um compilador utilizando ferramentas Java p. 8/2 Processo de compilação As linguagens de programação evoluíram Máquinas continuam as mesmas ou seja, continuam usando instruções de baixo nível Como usar então uma linguagem de alto nível numa máquina que não a compreende?
16 Como construir um compilador utilizando ferramentas Java p. 8/2 Processo de compilação As linguagens de programação evoluíram Máquinas continuam as mesmas ou seja, continuam usando instruções de baixo nível Como usar então uma linguagem de alto nível numa máquina que não a compreende? PROGRAMA FONTE COMPILADOR PROGRAMA OBJETO
17 Como construir um compilador utilizando ferramentas Java p. 9/2 Os componentes de um compilador o analisador léxico; o analisador sintático; o analisador semântico; o gerador de código.
18 Como construir um compilador utilizando ferramentas Java p. 10/2 Analisador léxico O analisador léxico (AL) encarrega-se de separar no programa fonte cada símbolo que tenha algum significado para a linguagem ou de avisar quando um símbolo que não faz parte da linguagem é encontrado.
19 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin
20 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira;
21 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento;
22 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento; ; símbolo especial ponto-e-vírgula ;
23 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento; ; símbolo especial ponto-e-vírgula ; y2 nome de variável ou procedimento;
24 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento; ; símbolo especial ponto-e-vírgula ; y2 nome de variável ou procedimento; true constante booleana;
25 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento; ; símbolo especial ponto-e-vírgula ; y2 nome de variável ou procedimento; true constante booleana; begin palavra reservada.
26 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento; ; símbolo especial ponto-e-vírgula ; y2 nome de variável ou procedimento; true constante booleana; begin palavra reservada. A descrição da linguagem diz quais são os símbolos válidos e o que significam
27 Como construir um compilador utilizando ferramentas Java p. 11/2 Análise léxica 123 x1 ; y2 true begin 123 constante inteira; x1 nome de variável ou procedimento; ; símbolo especial ponto-e-vírgula ; y2 nome de variável ou procedimento; true constante booleana; begin palavra reservada. A descrição da linguagem diz quais são os símbolos válidos e o que significam Erros léxicos
28 Como construir um compilador utilizando ferramentas Java p. 12/2 Nem tudo é tão simples 123x1begin(end
29 Como construir um compilador utilizando ferramentas Java p. 12/2 Nem tudo é tão simples 123x1begin(end 123 constante inteira;
30 Como construir um compilador utilizando ferramentas Java p. 12/2 Nem tudo é tão simples 123x1begin(end 123 constante inteira; x1begin nome de variável ou procedimento;
31 Como construir um compilador utilizando ferramentas Java p. 12/2 Nem tudo é tão simples 123x1begin(end 123 constante inteira; x1begin nome de variável ou procedimento; ( símbolo especial abre parênteses ;
32 Como construir um compilador utilizando ferramentas Java p. 12/2 Nem tudo é tão simples 123x1begin(end 123 constante inteira; x1begin nome de variável ou procedimento; ( símbolo especial abre parênteses ; end palavra reservada.
33 Como construir um compilador utilizando ferramentas Java p. 13/2 Estados do analisador léxico temos uma arroba" /* Isso é um comentário */
34 Como construir um compilador utilizando ferramentas Java p. 14/2 Analisador sintático O AL não se preocupa em verificar se a ordem em que os símbolos aparecem é válida ou não.
35 Como construir um compilador utilizando ferramentas Java p. 14/2 Analisador sintático O AL não se preocupa em verificar se a ordem em que os símbolos aparecem é válida ou não. O analisador sintático é o coração do compilador, responsável por verificar se a seqüência de símbolos contida no programa fonte forma um programa válido ou não.
36 Como construir um compilador utilizando ferramentas Java p. 15/2 Análise sintática if (a - 10 > b * 2) a = b; O AS deve ser capaz de analisar esse programa e reconhecê-lo como válido. Após a palavra reservada if deve vir um ( Uma expressão Um ) Um comando qualquer (por exemplo a = b )
37 Como construir um compilador utilizando ferramentas Java p. 16/2 Descrição da linguagem O AS é construído sobre uma gramática livre de contexto que descreve a linguagem fonte. Essa gramática é composta de uma série de regras que descrevem quais são as construções válidas da linguagem. O AS deve aceitar aqueles programas que seguem essas regras e rejeitar indicando a ocorrência de um erro sintático aqueles que as violam.
38 Como construir um compilador utilizando ferramentas Java p. 17/2 árvore sintática O AS desempenha ainda outra importante função que é a construção da árvore sintática(árvore de derivação) do programa fonte. Uma árvore sintáticaé uma estrutura em forma de árvore que descreve as construções da linguagem reconhecidas pelo AS no programa fonte. Se o programa fonte possui um comando if como aquele visto há pouco, sua árvore sintática deve espelhar esse fato e descrever como esse comando é formado.
39 Como construir um compilador utilizando ferramentas Java p. 18/2 árvore sintática if > = - * a b a 10 b 2
40 Como construir um compilador utilizando ferramentas Java p. 19/2 O analisador semântico O analisador semântico (ASem) verifica se os aspectos semânticos do programa estão corretos, ou seja, se não existem incoerências quanto ao significado das construções utilizadas pelo programador.
41 Como construir um compilador utilizando ferramentas Java p. 19/2 O analisador semântico O analisador semântico (ASem) verifica se os aspectos semânticos do programa estão corretos, ou seja, se não existem incoerências quanto ao significado das construções utilizadas pelo programador. Não utiliza mais o programa fonte para fazer tal verificação. Em vez disso, utiliza a árvore sintática como representação do programa.
42 Como construir um compilador utilizando ferramentas Java p. 20/2 Análise semântica Tipos de operandos incompatíveis com operadores. Se tivermos o comando a = b * c e a variável c foi declarada do tipo string, então o analisador semântico deve apontar um erro semântico, pois esse tipo de operando não é compatível com o operador *
43 Como construir um compilador utilizando ferramentas Java p. 20/2 Análise semântica Tipos de operandos incompatíveis com operadores. Se tivermos o comando a = b * c e a variável c foi declarada do tipo string, então o analisador semântico deve apontar um erro semântico, pois esse tipo de operando não é compatível com o operador * Variáveis não declaradas.
44 Como construir um compilador utilizando ferramentas Java p. 20/2 Análise semântica Tipos de operandos incompatíveis com operadores. Se tivermos o comando a = b * c e a variável c foi declarada do tipo string, então o analisador semântico deve apontar um erro semântico, pois esse tipo de operando não é compatível com o operador * Variáveis não declaradas. Redeclaração de variáveis.
45 Como construir um compilador utilizando ferramentas Java p. 20/2 Análise semântica Tipos de operandos incompatíveis com operadores. Se tivermos o comando a = b * c e a variável c foi declarada do tipo string, então o analisador semântico deve apontar um erro semântico, pois esse tipo de operando não é compatível com o operador * Variáveis não declaradas. Redeclaração de variáveis. Chamadas de funções ou métodos com o número incorreto de parâmetros.
46 Como construir um compilador utilizando ferramentas Java p. 20/2 Análise semântica Tipos de operandos incompatíveis com operadores. Se tivermos o comando a = b * c e a variável c foi declarada do tipo string, então o analisador semântico deve apontar um erro semântico, pois esse tipo de operando não é compatível com o operador * Variáveis não declaradas. Redeclaração de variáveis. Chamadas de funções ou métodos com o número incorreto de parâmetros. Comandos colocados fora de contexto. Por exemplo, a utilização de um comando continue fora de um comando de laço deve ser apontada como um erro semântico.
47 Como construir um compilador utilizando ferramentas Java p. 21/2 Erros semânticos Esses erros não são detectados pelo AS, pois não constituem erros sintáticos. De acordo com a gramática da linguagem fonte, uma variável c pode ser utilizada em uma expressão como a = b * c, não importando se foi declarada anteriormente ou não, ou qual é o seu tipo.
48 Como construir um compilador utilizando ferramentas Java p. 22/2 Tabela de símbolos Para desempenhar seu papel, o ASem depende de uma tabela de símbolos. Nela são armazenadas informações de variáveis declaradas, funções ou métodos, tipos ou classes. Ao analisar o comando a = b * c (ou melhor, a árvore sintática correspondente a esse comando), o ASem precisa saber se cada uma das variáveis envolvidas foi previamente declarada e o tipo de cada uma delas. O ASem deve, ao analisar um comando de declaração como int c, incluir na tabela de símbolos a variável c, indicando, entre outras coisas, que seu tipo é int.
49 Como construir um compilador utilizando ferramentas Java p. 23/2 O gerador de código Uma vez verificado que não existem erros sintáticos ou semânticos, o compilador pode realizar sua tarefa, que é a criação do programa objeto.
50 Como construir um compilador utilizando ferramentas Java p. 23/2 O gerador de código Uma vez verificado que não existem erros sintáticos ou semânticos, o compilador pode realizar sua tarefa, que é a criação do programa objeto. O programa objeto reflete, mediante instruções de baixo nível, os comandos do programa fonte. Como cada máquina ou cada plataforma possui um conjunto diferente de instruções e de meios de acesso ao sistema operacional, em geral é necessário que exista um gerador de código distinto para cada plataforma.
51 Como construir um compilador utilizando ferramentas Java p. 24/2 JavaCC Programa é um gerador de compiladores, ou mais precisamente um gerador de analisador sintático. Ele toma como entrada uma gramática e transforma-a num programa Java capaz de analisar um arquivo e dizer se satisfaz ou não as regras especificadas nessa gramática. Ele também oferece facilidades para a construção da árvore sintática. Ao descrever a gramática, pode-se também indicar como a árvore sintática deve ser construída, incorporando-se código para realizar tal tarefa ao analisador sintático gerado.
52 Como construir um compilador utilizando ferramentas Java p. 25/2 Próximo passo Vamos definir uma linguagem de programação que será usada como estudo de caso durante o curso. Ver Capítulo 2 do livro.
Universidade 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 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 à 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 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 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 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 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 maisSintaxe e Semântica. George Darmiton da Cunha Cavalcanti.
Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo
Leia mais15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação
Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências
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 4 Análise Léxica Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir
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 maisDESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE
DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE Jeferson MENEGAZZO 1, Fernando SCHULZ 2, Munyque MITTELMANN 3, Fábio ALEXANDRINI 4. 1 Aluno 5ª fase do Curso de Ciência da Computação do Instituto
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 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 maisCompiladores. Análise Semântica
Compiladores Análise Semântica Análise semântica A semântica define o significado dos programas sintaticamente corretos; Por exemplo, em C, a instrução if(a>b) max = a; else max = b; Diz que a expressão
Leia maisParadigmas de Programação
Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma
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 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 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 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 maisINE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:
INE5416 Paradigmas de Programação Ricardo Azambuja Silveira INE CTC UFSC E Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe
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 maisConclusões. Baseado no Capítulo 9 de Programming Language Processors in Java, de Watt & Brown
Conclusões Baseado no Capítulo 9 de Programming Language Processors in Java, de Watt & Brown QUESTÕES FUNDAMENTAIS 1. Correção do código gerado 2. Desempenho do compilador: a. Notificação de erros; b.
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. Análise Semântica
Compiladores Análise Semântica Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Análise léxica Análise semântica Síntese Análise sintática Análise Gramáticas Estruturas internas Arquivo
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 maisAmbiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
Leia maisCompiladores. 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 maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/3 Como construir um compilador utilizando ferramentas Java Aula 3 A linguagem X ++ Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir
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 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 maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina
Leia maisIntrodução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo
Introdução Lógica e programação Aula 02 Introdução à Programação Pascal Formalização de algoritmos na Exercícios Sky Informática Ltda. 1 2 Algoritmo: É uma maneira formal de expressar o raciocínio. O grau
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 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 maisExistem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.
Aula 3 SOFTWARE (programas) Um programa (software) consiste em uma sequência de instruções escritas numa linguagem precisa chamada linguagem de programação. Estas instruções são traduzidas em um compilador,
Leia maisIntrodução à Programação
Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.
Leia maisComputação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.
Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);
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 maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções
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 maisPROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:
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 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 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 maisAULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)
AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos
Leia maisProgramação I Apresentação
Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação
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 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 maisProgramação de Computadores I. Professor Ilaim Costa Junior
Programação de Computadores I Professor Ilaim Costa Junior ilaim@ic.uff.br Roteiro da Aula de Hoje ariável Tipos básicos Declaração Expressões Aritméticas Lógicas Atribuição 2 ariável Representa uma região
Leia maisCompiladores - Especificando Sintaxe
Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura
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 maisAnálise Semântica: Verificação de Tipos
Análise Semântica: Verificação de Tipos Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores
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 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 maisLinguagens Formais e Autômatos
Linguagens Formais e Autômatos Gramáticas Livre do Contexto (GLC) Cristiano Lehrer, M.Sc. Linguagens Livres do Contexto (1/2) Seu estudo é de fundamental importância na informática: Compreende um universo
Leia maisCompiladores Análise Semântica
Compiladores Análise Semântica Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,
Leia maisCapítulo 6: Linguagens de Programação
Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva
Leia maisLinguagens de Programação
Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:
Leia maisDouglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador
Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador Introdução Objetivos Fundamentação teórica Desenvolvimento da ferramenta Operacionalidade Resultados e discussão Conclusões Versões futuras
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 maisConceito de Linguagens de Programação - 1
Conceito de Linguagens de Programação - 1 Arthur Jovita, Thalles Silva November 1, 2011 1 Natureza das linguagens de Programação Linguagens Estáticas e Dinâmicas 2 Tipificação 3 4 Linguagens Estáticas
Leia maisVariável. Expressões. Atribuição. Tipos básicos Declaração. Aritméticas Lógicas. Professor Leandro Augusto Frata Fernandes
Programação de Computadores III Aula 3 Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 Roteiro da Aula
Leia maisCompiladores Análise de Tipos
Compiladores Análise de Tipos Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem
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 maisIdentificadores Nome de variáveis, constantes, métodos, etc...
IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos Token genérico / Lei de formação bem definida Podem possuir limitações de tamanho e/ou valor Possuem valor semântico o token deve ser acompanhado
Leia maisWorking 03 : Conceitos Básicos I
Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:
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 maisCompiladores Geração de Código
Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisALGORITMOS E ESTRUTURA DE DADOS
ALGORITMOS E ESTRUTURA DE DADOS Algoritmos Tipos de Dados Prof. André Peixoto - Todo o trabalho realizado por um computador é baseado na manipulação dos dados/informações contidas em sua memória. Podemos
Leia maisSistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Tipos permitem que dados sejam descritos de forma efetiva Previnem operações sem sentido (ex: 5 * true) Programas mais
Leia maisAula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação
Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Compilação, Montagem, Link-edição,
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Definindo DSLs Linguagem específica de domínio: uma linguagem de programação de computadores de expressividade
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
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 maisInfraestrutura de Hardware. Funcionamento de um Computador
Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é
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 maisConceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 03 (rogerio@fct.unesp.br) Aula 3 Variáveis: Nomes
Leia maisAs fases de um compilador
As fases de um compilador Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem de alto-nível Compilando um programa simples
Leia maisProf. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1
INE5603 Introdução à POO Prof. A. G. Silva 28 de agosto de 2017 Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de 2017 1 / 1 Comandos de decisão simples e compostas Objetivos: Utilização de controles
Leia maisSEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.
SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão
Leia maisALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisPuca Huachi Vaz Penna
Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro
Leia maisCompiladores Análise de Tipos
Compiladores Análise de Tipos Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem
Leia maisArquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
Leia maisAlgoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi
Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se
Leia maisProgramação de Computadores III
Programação de Computadores III Introdução a Algoritmos (Parte II) Professor Hugo de Oliveira Barbalho hbarbalho@ic.uff.br Material produzido pelo professor: Leandro Augusto rata ernandes (laffernandes@ic.uff.br)
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisConstrução de Compiladores Aula 3 - Analisador Sintático
Construção de Compiladores Aula 3 - Analisador Sintático Bruno Müller Junior Departamento de Informática UFPR 20 de Agosto de 2014 Definição A análise sintática (parsing) é um processo que verifica se
Leia maisCompiladores Aula 12. Celso Olivete Júnior.
Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje Análise léxica Tabela de símbolos Análise sintática Análise semântica Geração de código intermediário Manipulação de erros Tabela de palavras
Leia maisGrupo 3: 8,3 - Parte Léxica (2,0): 1,9 - Na parte I especificou tamanho de identificador com 512 caracteres, mas não tratou (-0,1) -Parte Sintática
Grupos revisem os problemas da análise léxica e sintática ANTES de passarem para as fases seguintes. Os grupos que não fizeram revisão hoje (13/5), podem fazer na semana dia 24/5 Grupo 1: 6,0 - Parte Léxica
Leia maisJava e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }
Java e sua Sintaxe Java e sua Sintaxe Estrutura mínima de um programa em Java: public class Exemplo { } Como todo programa deve ter um início, convenciona-se que a primeira ação de um programa é a execução
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisProgramação Estruturada e OO Aula 1.2 Introdução a Paradigmas de Programação. Prof. Bruno Moreno
Programação Estruturada e OO Aula 1.2 Introdução a Paradigmas de Programação Prof. Bruno Moreno bruno.moreno@ifrn.edu.br Motivação Por que existe mais de uma LP? Propósitos diferentes; Avanços tecnológicos;
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/3 Como construir um compilador utilizando ferramentas Java Aula 11 Tabela de Símbolos Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir
Leia maisAcadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl
AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento
Leia mais