Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008
|
|
- Filipe Salgado Viveiros
- 6 Há anos
- Visualizações:
Transcrição
1 Compiladores Análise Semântica Fabiano Baldo Análise Semântica é por vezes referenciada como análise sensível ao contexto porque lida com algumas semânticas simples tais como o uso de uma variável somente se ela já tiver sido declarada o que está além das capacidades de uma GLC. Geralmente, usa se a tabela de símbolos para realizar / computar a semântica. Mais formalmente, pode ser utilizada a tradução dirigida pela sintaxe com gramáticas de atributos. 2 A análise semântica envolve computação além da alcançada pelas GLC e algoritmos de análise sintática. A informação semântica está fortemente relacionada ao significado eventual ou semântico de um programa sendo compilado. Dado que ele acontece antes da execução do programa, ela é considerada uma análise semântica estática. A análise semântica em uma linguagem estaticamente tipada, como é o caso do C, envolve a construção de uma tabela de símbolos para manter o significado dos identificadores e realizar a inferência de tipo para propagar estes significados e tipos de checagem para expressões e declarações. 3 4 Que tipo de significado está envolvido e que excede a capacidade das GLCs: X foi declarado apenas uma vez? X foi declarado antes do seu primeiro uso? X foi definido antes do seu primeiro uso? X é um escalar, um array, uma função, ou uma classe? X é declarado mais nunca utilizado? A que declaração X se refere? Os tipos de uma expressão são compatíveis? As dimensões casam com o declarado? A análise semântica pode ser dividida em duas categorias: Para estabelecer a corretude de um programa a fim de garantir sua execução apropriada. Isto varia de acordo com a rigidez iid semântica da linguagem em questão. Linguagens com orientação dinâmica, como LISP, pode não exigir uma análise um análise semântica estática. Para melhorar a eficiência da execução do programa. Isto é freqüentemente relacionado a otimização de código
2 Análise Semântica Estática Atributos e Gramática de Atributos Envolve tanto a descrição quando a implementação das análises utilizando algoritmos apropriados. Atributos e gramáticas de atributos pode ser utilizados para escrever regras semânticas. Gramáticas de atributos pode ser úteis para linguagens que obedecem o princípio da semântica dirigida pela sintaxe (o conteúdo semântico de um programa está intimamente relacionado com sua sintaxe). Linguagens de programação modernas costumam seguir esta princípio. A semântica costuma não ser formalmente especificada pelos projetistas da linguagem, deixando para o construtor do compilador a tarefa de identificar os atributos da gramática 7 Um atributo é uma propriedade da linguagem de programação que precisa ser verificada. Alguns exemplos de atributos são: Tipo de dados de uma variável; Valor de uma expressão; Localização de uma variável em memória; Código objeto de um procedimento; Quantidade de dígitos significativos em um número. 8 Gramática de Atributos Gramática de Atributos Regras semânticas expressam como a computação dos atributos se relaciona com as regras gramaticais da linguagem. Este conjunto de atributos e regras semânticas é denominado gramática de atributos. A construção de uma gramática de atributos é consideravelmente complicada. Portanto, uma base muito melhor para a expressão das computações semânticas é a sintaxe abstrata, representada por árvore de sintaxe abstrata. Os atributos pode ser fixados antes do processo de compilação (ou da construção do compilador). Os atributos pode ser também determinados somente durante a execução do programa. O processo de computar um atributo e associar seu valor com a construção da ling. recebe o nome de amarração do atributo. O momento em que ocorre a amarração de um atributo é denominado tempo de amarração. Atributos amarrados antes da execução são ditos estáticos; Atributos amarrados durante a execução são ditos dinâmicos; 9 10 Gramática de Atributos Se X for um símbolo gramatical e a for um atributo de X, escrevemos X.a para o valor de a associado a X. Dada uma coleção de atributos a 1,...,a k, o princípio da semântica dirigida pela sintaxe implica que para cada regra gramatical X 0 X 1 X 2...X n, os valores dos atributos X i.a j de cada símbolo X i são relacionados aos valores dos atributos dos outros símbolos da regra. Cada relação é especificada por uma regra semântica ou equação de atributos: Exemplo 1: Gramática de Atributos O atributo mais significativo de um número é seu valor, e recebe o nome val. Sua gramática de atributos é especificada como segue:
3 Exemplo 1: Árvore de Derivação Árvore de derivação para o inteiro 345 Exemplo 2: Gramática de Atributos para expressões O atributo de exp, term e factor é seu valor numérico val. Sua gramática ái de atributos é especificada como segue: Exemplo 2: Gramática de Atributos para expressões Note que o + na regra gramatical exp 1 exp 2 + term representa o token no programa fonte, e o + na regra semântica representa a operação aritmética a ser executada em tempo de execução. Não há equações com number.val à esquerda, pois seu valor é calculado anteriormente, na fase sintática. Exemplo 2: Árvore de Derivação Árvore de derivação para a expressão (34 3)* Exemplo 3: Gramática de Atributos para declarações de variáveis Exemplo 3: Árvore de Derivação Árvore de derivação para a declaração float x, y Para representar o tipo dos dados é adicionado um atributo a chamado dtype
4 Exemplo 4: Gramática de Atributos para números com base Exemplo 4: Gramática de Atributos para números com base Neste caso number e digit necessitam de um novo atributo, chamado base Exemplo 4: Árvore de Derivação Árvore de derivação para o número 345o Algoritmos para Computação de Atributos De que forma um compilador pode computar gramáticas de atributos? Isto leva a transformar a equação de atributos em regras de computação. Considere a seguinte equação de atributos: Algoritmos para Computação de Atributos Ela é vista como uma atribuição do valor da expressão funcional à direita ao atributo X i.a j, onde todos os atributos do lado direito devem ser conhecidos. Alguns do atributos do lado direito podem depender dos valores de outros atributos antes de serem computados. A solução desse problema de dependência está em encontrar uma ordem para a avaliação que garanta a disponibilidade dos valores a cada computação de atributo Essa dependência pode ser resolvida através da construção de um grafo de dependência. Grafo de Dependência e Ordem de Avaliação Dada uma gramática de atributos, cada regra gramatical tem um grafo de dependência associado. Esse grafo tem um nó rotulado para cada atributo X i.a j de cada símbolo da regra gramatical, e para cada equação de atributos. Associada à regra gramatical existe um arco de cada nó X m.a k à direita do nó X i.a j
5 para Números Para a regra gramatical e sua equação de atributos: para Números O grafo de dependência para a cadeia 345 é: O grafo de dependência é: Para a regra gramatical e sua equação de atributos: O grafo de dependência é: Na gramática para declaração, a regra Tem a seguinte equação de atributos e grafo de dependência De maneira similar, a regra tem como grafo de dependência A regra tem a seguinte grafo de dependência: Dado que decl não está envolvida no grafo de dependência, nãofica claro qualregra gramatical está associada com ela. Por este motivo o grafo de dependência é desenhado sobre a árvore de análise sintática correspondente. As regras e tem grafos de dependências triviais. 27 Isso deixa mais claro a qual regra gramatical a dependência está associada. 28 O grafo de dependência sobre a árvore de análise sintática para pode ser escrita: O grafo de dependência sobre a árvore de análise sintática para float x,y
6 para Números com Base O grafo de dependência para a regra gramatical para Números com Base O grafo de dependência para a regra gramatical é: é: A dependência é criada por O grafo mostra a dependência de e 31 onde depende de 32 para Números com Base O grafo de dependência para a regra é: para 345o A dependência é criada por Atributos Sintetizados e Herdados A avaliação de atributos baseada em regras depende de um percurso explícito ou implícito da árvore sintática. Diversos tipos de percursos têm poder diferente em termos dos tipos de dependências de atributos que podem ser manipulados. Para estudar estas diferenças, é necessário classificar os atributos por tipos de dependências. Atributos Sintetizados Um atributo é sintetizado se todas as suas dependências apontarem de filho para pai na árvore de análise sintática. Portanto, um atributo a é sintetizado se, dada uma regra gramatical A X 1 X 2...X n, a única equação de atributos associada com um a à esquerda tiver a forma: A.a=f(X 1.a 1,...,X 1.a k,...,x n.a 1,...,X n.a k ) Uma gramática de atributos em que todos os atributos são sintetizados é denominada S atribuída
7 Gramática S atribuída Os valores de atributos de uma gramática S atribuída podem ser computados por um único percurso ascendente, ou em pós ordem, da árvore. Pseudocódigo para um avaliador recursivo em pósordem: Atributos Herdados Um atributo que não é sintetizado é denominado atributo herdado. Existem três tipos de herança de atributos: a) Herança de pai para filho; b) Herança entre irmãos; c) Herança entre irmãos através de ponteiros entre irmãos. 37 a) b) c) 38 Atributos Herdados Gramática L atribuída Os valores dos atributos herdados podem ser computados por um percurso em pré ordem e inordem para percorrer a árvore de análise sintática. Uma gramática de atributos para os atributos a 1,...,a k é L atribuída se, para cada atributo herdado a j e cada regra gramatical X 0 X 1 X 2...X n, as equações associadas a a j forem todas da forma: X i.a j =f ij (X 0.a 1,...,X 0.a k, X 1.a 1,...,X 1.a k,..., X i 1.a 1,...,X i 1.a k )) Ou seja, se o valor de a j em X i puder apenas depender dos atributos dos símbolos X 0,...,X i 1 que ocorram à esquerda de X i na regra gramatical Considerações S atribuída é um caso especial de L atribuída. Dada uma gramática L atribuída em que os atributos herdados não dependem dos atributos sintetizados, um analisador sintático descendente recursivo pode avaliar todos os atributos como segue: Transformação dos atributos herdados em parâmetros; Transformação dos atributos sintetizados em valores de retorno. 41 7
FACULDADE 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 maisAnálise semântica. Função, interação com o compilador Tabela de símbolos Análise semântica. Prof. Thiago A. S. Pardo
Análise semântica Função, interação com o compilador Tabela de símbolos Análise semântica Prof. Thiago A. S. Pardo taspardo@icmc.usp.br 1 Estrutura geral de um compilador programa-fonte analisador léxico
Leia maisAnálise semântica. Função, interação com o compilador Tabela de símbolos Análise semântica. Prof. Thiago A. S. Pardo
Análise semântica Função, interação com o compilador Tabela de símbolos Análise semântica Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador léxico Tabela de símbolos
Leia maisCOMPILADORES. Análise semântica. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise semântica Parte 01 Prof. geovanegriesang@unisc.br Sumário Data 18/11/2013 Análise sintática Parte 01 25/11/2013
Leia maisTradução Dirigida Pela Sintaxe
Tradução Dirigida Pela Sintaxe Julho 2006 Sugestão de leitura: Livro do Aho, Sethi, Ullman (dragão) Seções 5.1 5.5 Tradução dirigida pela sintaxe É uma técnica que permite realizar tradução (geração de
Leia maisCompiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores
Compiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores Análise Semântica Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra Análise semântica 3ª etapa
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 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 maisAnálise Sintática. Fabiano Baldo
Compiladores Análise Sintática Fabiano Baldo Gramáticas Livre de Contexto (GLC) É utilizada na especificação formal lda sintaxe de uma linguagem de programação. É um conjunto de produções ou regras gramaticais
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 maisAnálise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo do then e nó
Leia maisSintática: como é escrito cada elemento da linguagem de programação.
4ª. AULA Sintaxe e Semântica Para que uma linguagem de programação atenda aos requisitos especificados de forma eficiente, ela deve ser escrita de forma única (não ambígua). Isso envolve a definição: Sintática:
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 maisAnálise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia Compiladores, Aula Nº 22 João M. P. Cardoso 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo
Leia maisAnálise semântica (continuação)
Análise semântica (continuação) Função, interação com o compilador Tabela de símbolos Análise semântica Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador léxico Tabela
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 maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 06 Análise Sintática (Implementação) Edirlei Soares de Lima Análise Sintática A maioria dos compiladores separam a tarefa da análise sintática
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 maisCompiladores. Prof. Bruno Moreno Aula 8 02/05/2011
Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores
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 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 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 maisIntrodução Uma linguagem de programação apoiada em um paradigma imperativo apresenta algum grau de dificuldade nos aspectos relativos ao contexto;
Introdução Uma linguagem de programação apoiada em um paradigma imperativo apresenta algum grau de dificuldade nos aspectos relativos ao contexto; Nas linguagens imperativas o processamento é baseado no
Leia maisCOMPILADORES. Análise semântica. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise semântica Tradução dirigida pela sintaxe Parte 02 Prof. geovanegriesang@unisc.br Sumário Data 18/11/2013 Análise
Leia maisV.2 Especificação Sintática de Linguagens de Programação
V.2 Especificação Sintática de Linguagens de Programação Deve ser baseada: No planejamento da Linguagem / Compilador Objetivos, Filosofia, Potencialidades,... Nos critérios de projeto/avaliação Legibilidade,
Leia maisI LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1
PREÂMBULO PREFÂCIO xiii xv I LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1 1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 2 2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.4 2.4.1 2.4.2
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 maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 12 Linguagens Livres do Contexto humberto@bcc.unifal-mg.edu.br Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres
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 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 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 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 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 maisUm Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1
Definição de uma Linguagem Linguagem= sintaxe + semântica Especificação da sintaxe: gramática livre de contexto, BNF (Backus-Naur Form) Especificação Semântica: informal (textual), operacional, denotacional,
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 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 maisSEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica
UNIVERSIDADE ESTADUAL DE SANTA CRUZ CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO DOCENTE: ROGÉRIO VARGAS DISCENTE: MARIANNA NOVAES Semântica SEMÂNTICA Semântica é a área
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 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 maisInterfaces de Vanguarda do Compilador
Interfaces de Vanguarda do Compilador Stefani Henrique Ramalho¹, Prof Mário Rubens Welerson Sott¹ ¹DCC Departamento de Ciência da Computação Universidade Presidente Antônio Carlos (UNIPAC) Barbacena MG
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 maisAnálise Sintática LL(1)
FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 7º Periodo Disciplina: Compiladores Prof. Erinaldo Sanches Nascimento Análise Sintática LL(1) Análise Sintática Descendente Introdução
Leia maisParadigmas de Linguagens de Programação. Descrevendo a Sintaxe e a Semântica
Descrevendo a Sintaxe e a Semântica Cristiano Lehrer Introdução Descrição, compreensível, de uma linguagem de programação é difícil e essencial. Capacidade de determinar como as expressões, instruções
Leia maisUniversidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:
Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA MC3201 - COMPILADORES 2. DISCIPLINA
Leia maisAnálise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18
Análise Sintática Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 18 Sumário 1 Introdução 2 Derivações 2 / 18 1 Introdução 2 Derivações 3 /
Leia maisCompiladores. Parser LL 10/13/2008
Compiladores Fabiano Baldo Usa uma pilha explícita ao invés de chamadas recursivas para realizar a análise sintática. LL(k) parsing significa que ktokensà frente são utilizados. O primeiro L significa
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 maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisAnálise Semântica. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 40
Análise Semântica Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 40 Sumário 1 Conceitos 2 A linguagem Cool 3 Análise semântica Símbolos Tipos
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisLinguagens Livres do Contexto. Adaptado de H. Brandão
Linguagens Livres do Contexto Adaptado de H. Brandão Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Padrão Visitor A outra técnica para implementar um percurso consiste em usar o padrão
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 maisFOLHA DE PROVA. Descreva e ilustre, com um exemplo, o algoritmo de minimização de um autômato.
Tema 01: LINGUAGENS E FUNÇÕES REGULARES Disserte sobre as possíveis formas de se demonstrar que uma linguagem é regular e de se demonstrar que uma linguagem não é regular. Descreva e ilustre, com um exemplo,
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 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 maisCompiladores - Análise LL(1)
Compiladores - Análise LL(1) Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Gramáticas LL(1) Uma gramática é LL(1) se toda predição pode ser feita examinando um único token à frente Muitas
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 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 maisParadigmas de Programação
Paradigmas de Programação Aula 6 Nomes, Vinculações, Verificação de Tipos e Escopos Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Introdução As linguagens de
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 04 Sintaxe e Semântica Edirlei Soares de Lima Sintaxe e Semântica A descrição de uma linguagem de programação envolve dois aspectos principais:
Leia maisCompiladores - Análise LL(1)
Compiladores - Análise LL(1) Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/comp Gramáticas LL(1) Uma gramática é LL(1) se toda predição pode ser feita examinando um único token à frente Muitas
Leia maisAnálise Sintática Introdução
Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais
Leia maisCapítulo 5. Nomes, Vinculações e Escopos
Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introduçã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 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 maisLinguagem de Programação e Compiladores
Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20 Sumário 1 Introdução
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 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 maisConstrução de Compiladores Aula 16 - Análise Sintática
Construção de Compiladores Aula 16 - Análise Sintática Bruno Müller Junior Departamento de Informática UFPR 25 de Setembro de 2014 1 Introdução Hierarquia de Chomsky Reconhecedores Linguagens Livres de
Leia maisCompiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação
Compiladores Analisador Sintático Prof. Antonio Felicio Netto antonio.felicio@anhanguera.com Ciência da Computação 1 Análise Sintática - A Análise Sintática constitui a segunda fase de um tradutor de uma
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 maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisAnálise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34
Análise Sintática II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 34 Sumário 1 Introdução 2 Ambiguidade 3 Análise sintática descendente 4
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 30. Instituto de C
ompiladores Análise Sintática Bruno Lopes Bruno Lopes ompiladores 1 / 30 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?
Leia maisSemântica de Linguagens de Programação
Semântica de Linguagens de Programação Fabio Mascarenhas - 2011.2 http://www.dcc.ufrj.br/~fabiom/sem Introdução Quais das expressões abaixo têm o mesmo significado? a[42] (vector-ref a 42) a[42] a[42]
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 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 maisTipo. Tipo de uma variável: especificação de
Checagem de Tipos O que é tipo? Erros de Tipos em FRANKIE não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Leia maisVerificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica
Verificação de Tipo Atividade que certifica que os operandos de um operador são de tipos compatíveis. São considerados operadores e operandos: operadores usuais (aritméticos, relacionais, etc) subprogramas
Leia maisCompiladores Análise de Tipos
Compiladores Análise de Tipos Fabio Mascarenhas 2015.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 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 maisAnálise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42
Análise Sintática I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Introdução 2 Derivações 3 Ambiguidade 4 Análise sintática descendente
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA DISCIPLINA: CÓDIGO: CURSOS/PRE-REQUISITO: CIC Linguagens formais e autômatos N COMPILADORES INF01147
Leia maisMAB Análise Semântica. Monday, October 10, 11
MAB 471 2011.2 Análise Semântica http://www.dcc.ufrj.br/~fabiom/comp Além da Sintaxe Há um nível de corretude além da gramática foo(a,b,c,d) { int a, b, c, d; bar() { int f[3],g[0], h, i, j, k; char *p;
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 maisConcurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba
Questão 01 No processo de construção de compiladores, é essencial compreender e manipular as expressões regulares e suas equivalências. Dentro desse contexto, seja o alfabeto = {a, b, c, d, e} e a seguinte
Leia maisErros de Tipo em Pascal Simplifificado
Checagem de Tipos Erros de Tipos em Pascal Simplificado não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Leia maisPLANO DE APRENDIZAGEM
PLANO DE APRENDIZAGEM 1. DADOS DE IDENTIFICAÇÃO Curso: Bacharelado em Sistemas de Informação Disciplina: Linguagens Formais e Compiladores Código: SIF5N191 Professor: Jamilson Ramalho Dantas e-mail: jamilson.dantas@fasete.edu.br
Leia maisCapítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
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 maisCOMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática
Universidade de Santa Cruz do Sul UNISC Departamento de informática COPILADORES Análise sintática Parte 03 Prof. geovanegriesang@unisc.br Analisador sem recursão Analisador sintático sem recursão pode
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 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 maisMétodos de Representação de Algoritmos
Métodos de Representação de Algoritmos Contudo, quando falamos em algoritmo sob o enfoque computacional, como já foi mencionado, não podemos utilizar uma descrição narrativa para representar um algoritmo.
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 maisLinguagens de Programação e Programação Funcional
Linguagens de Programação e Programação Funcional GSI004 Aula 01* Faculdade de Computação UFU *baseada nos slides do Professor Paulo Henrique Ribeiro Gabriel 30 de setembro de 2014 GSI004 Aula 01 30 de
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 mais