Universidade Federal de Alfenas

Documentos relacionados
Linguagens Livres do Contexto. Adaptado de H. Brandão

Universidade Federal de Alfenas

Universidade Federal de Alfenas

Universidade Federal de Alfenas

Universidade Federal de Alfenas

Introdução à Programação

Conceitos de Linguagens de Programação

Construção de Compiladores Aula 16 - Análise Sintática

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Universidade Federal de Alfenas

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

CP Compiladores I Prof. Msc.. Carlos de Salles

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Construção de Compiladores Aula 3 - Analisador Sintático

Análise Sintática. Fabiano Baldo

Gramáticas Livres de Contexto

Análise Sintática Introdução

Analisadores Sintáticos LR

FOLHA DE PROVA. Descreva e ilustre, com um exemplo, o algoritmo de minimização de um autômato.

Implementação de Linguagens

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

INE5317 Linguagens Formais e Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

Compiladores - Gramáticas

Compiladores - Gramáticas

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Automata e Linguagens Formais

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos. Apresentação. Computação e Programação (CP) 2013/2014.

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34

COMPILAÇÃO. Ricardo José Cabeça de Souza

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

FACULDADE LEÃO SAMPAIO

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

QUESTÃO 1 (0,6 ponto) Classifique os processadores de linguagens com relação aos tipos das linguagens-fonte e objeto.

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Universidade Federal de Alfenas

Universidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:

EA876 - Introdução a Software de Sistema

Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012

Interfaces de Vanguarda do Compilador

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Compiladores. Fabio Mascarenhas

Revisão. Fases da dacompilação

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto

Implementação de Linguagens

SCC-5832 Teoria da Computação

Introdução Análise Sintática Descendente Análise Sintática Ascendente. Aula Prática. Fernando Antônio Asevedo Nóbrega

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

SCC Introdução à Teoria da Computação

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Linguagens Formais e Autômatos

Autômatos com Pilha: Reconhecedores de LLCs

Introdução à Programação. Conceitos Básicos de Programação

Conceitos de Linguagens de Programação

FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

INE5622 INTRODUÇÃO A COMPILADORES

Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

Linguagens de Programação

Teoria da Computação (BBC244)

CAP. VII GERAÇÃO DE CÓDIGO

Apresentação. Informação geral + Conceitos iniciais

Marcos Castilho. DInf/UFPR. 21 de março de 2019

Gramáticas Livres de Contexto Parte 1

Linguagens Formais e Autômatos Apresentação da Disciplina

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

Desenvolvimento de Aplicações Desktop

Linguagens de Programação

Análise sintática. Análise sintática ascendente. Parte-se dos símbolos terminais em direção ao símbolo inicial da gramática. Derivação mais à direita

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

CAP. VII GERAÇÃO DE CÓDIGO

Análise sintática. Análise sintática ascendente. Bottom-up, ascendente ou redutiva. Analisadores de precedência de operadores Analisadores LR

SCC Teoria da Computação e Linguagens Formais

Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção

Infraestrutura de Hardware. Funcionamento de um Computador

Compiladores. Geração de Código Objeto

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Compiladores. Introdução

Especificações Gerais do Compilador e Definição de FRANKIE

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C

I.2 Introdução a Teoria da Computação

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Universidade Federal de Alfenas

Tokens, Padroes e Lexemas

Uma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática

Linguagens Formais e Autômatos P. Blauth Menezes

Análise Sintática Bottom-up

Métodos de implementação de linguagens. Kellen Pinagé

Transcrição:

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 do Contexto;

Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Tais gramáticas podem descrever certas características que possuem estrutura recursiva, o que as torna úteis em uma variedade de aplicações;

Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Tais gramáticas podem descrever certas características que possuem estrutura recursiva, o que as torna úteis em uma variedade de aplicações; GLC foram primeiramente utilizadas no estudo de linguagens humanas;

Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Tais gramáticas podem descrever certas características que possuem estrutura recursiva, o que as torna úteis em uma variedade de aplicações; GLC foram primeiramente utilizadas no estudo de linguagens humanas; Exemplo de estudo: Tribo do Amazonas causa guerra na lingüística http:www1.folha.uol.com.br/folha/ciencia/ult306u16297.shtml

Linguagens Livres do Contexto Uma aplicação importante de GLC ocorre na especificação e compilação de linguagens de programação;

Linguagens Livres do Contexto Uma aplicação importante de GLC ocorre na especificação e compilação de linguagens de programação; A maioria dos compiladores e interpretadores contém um componente chamado analisador sintático que extrai o significado de um programa antes e gerar o código compilado ou realizar a execução interpretada;

Linguagens Livres do Contexto Várias metodologias facilitam a construção de um analisador uma vez que a GLC esteja disponível;

Linguagens Livres do Contexto Várias metodologias facilitam a construção de um analisador uma vez que a GLC esteja disponível; Algumas ferramentas até geram automaticamente o analisador a partir da gramática;

Linguagens Livres do Contexto Várias metodologias facilitam a construção de um analisador uma vez que a GLC esteja disponível; Algumas ferramentas até geram automaticamente o analisador a partir da gramática; A coleção de linguagens associadas com GLC são denominadas Linguagens Livres do Contexto (LLC);

Linguagens Livres do Contexto Várias metodologias facilitam a construção de um analisador uma vez que a GLC esteja disponível; Algumas ferramentas até geram automaticamente o analisador a partir da gramática; A coleção de linguagens associadas com GLC são denominadas Linguagens Livres do Contexto (LLC); Elas incluem todas as linguagens regulares e muitas linguagens adicionais;

Linguagens Livres do Contexto P(S*) Recursivamente enumeráveis Recursivas Sensíveis ao contexto regulares Livres do contexto Regulares

Linguagens Livres do Contexto Um exemplo de GLC: Por exemplo, a gramática apresentadas gera a cadeia 000#111.

Linguagens Livres do Contexto Um exemplo de GLC: Cadeia: 000#111

Exemplos de LLC

Exemplos de LLC

Exemplos de LLC As cadeiras a+a*a (a+a)*a podem ser geradas com a gramática apresentada;

Exemplos de LLC As cadeiras a+a*a (a+a)*a podem ser geradas com a gramática apresentada; Um compilador traduz o código escrito em uma linguagem de programação para outra forma mais adequada para a execução;

Exemplos de LLC As cadeiras a+a*a (a+a)*a podem ser geradas com a gramática apresentada; Um compilador traduz o código escrito em uma linguagem de programação para outra forma mais adequada para a execução; Para fazer isso, o compilador extrai o significado do código em um processo chamado análise sintática;

Exemplos de LLC a+a*a (a+a)*a Para extrair o significado real (executável) da expressão, o compilador geralmente utiliza de uma das duas estratégias: Top-down Bottom-up

Derivação para a cadeia: a + a * a

Derivação para a cadeia: a + a * a EXPR

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO FATOR

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO FATOR a

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO TERMO * FATOR FATOR a

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO TERMO * FATOR FATOR FATOR a

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO TERMO * FATOR FATOR FATOR a a

Derivação para a cadeia: a + a * a EXPR EXPR + TERMO TERMO TERMO * FATOR FATOR FATOR a a a

EXPR EXPR + TERMO TERMO TERMO * FATOR FATOR FATOR a a a Feita uma seqüência completa, dizemos que a expressão passou pela análise sintática, e ela pertence a linguagem que a gramática é capaz de gerar.

EXPR EXPR + TERMO TERMO TERMO * FATOR FATOR FATOR a a a Além dos conceitos relacionados com gramáticas, o compilador precisa gerar uma estrutura capaz de executar em uma máquina.

A execução depende da natura da máquina; Existem, por exemplo: Máquina baseada em pilha; Comumente utilizada na implementação de JVMs; Máquina baseada em registradores; Utiliza variáveis para registrar resultados intermediários;...

Vamos apresentar um exemplo de execução da expressão na máquina baseada em pilha: O primeiro passo é identificar elementos que são relevantes ao processamento (não são itens intermediários)

Vamos apresentar um exemplo de execução da expressão na máquina baseada em pilha: O primeiro passo é identificar elementos que são relevantes ao processamento (não são itens intermediários)

Identificados os elementos, eles deve ser adicionados em uma pilha seguindo o percurso Pré-ordem;

Pré-ordem:

Pré-ordem: A expressão é uma SOMA PILHA SOMA

Pré-ordem: A expressão é uma variável: Exemplo: 10 PILHA 10 SOMA

Pré-ordem: A expressão é uma multiplicação; PILHA MULT. 10 SOMA

Pré-ordem: Variável... PILHA 10 MULT. 10 SOMA

Pré-ordem: Variável... PILHA 10 10 MULT. 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: PILHA 10 10 MULT. 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1 = 10; PILHA 10 10 MULT. 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1 = 10; Desempilha: R2 = 10; PILHA 10 MULT. 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1 = 10; Desempilha: R2 = 10; Desempilha: Executar multiplicação: R1 * R2 PILHA MULT. 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: O resultado da multiplicação é empilhado: 100 PILHA 100 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1 = 100; PILHA 100 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1 = 100; Desempilha: R2 = 10; PILHA 10 SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1 = 100; Desempilha: R2 = 10; Desempilha: Executar a operação de SOMA: R1+R2 PILHA SOMA

Dada a pilha, a máquina pode avaliar toda a expressão: O resultado da soma é empilhado: 110; PILHA 110

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1=110; PILHA 110

Dada a pilha, a máquina pode avaliar toda a expressão: Desempilha: R1=110; PILHA Topo da pilha aponta pra nulo: Pilha vazia! Indica que R1 possui o resultado da expressão avaliada!!!

Próxima aula Ambigüidade; Autômatos com pilha;

Bibliografia SIPSER, Michael. Introdução à Teoria da Computação. 2a ed.:são Paulo, Thomson, 2007. VIEIRA, Newton José. Introdução aos Fundamentos da Computação: Linguagens e Máquinas. 1a ed.: Rio de Janeiro: Thomson, 2006.