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

Documentos relacionados
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

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

Análise sintática. Questão. E se a análise sintática pudesse ser modelada por autômatos?

Compiladores - Análise Ascendente

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

Compiladores - Análise Ascendente

Análise Sintática LL(1)

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

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

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

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

Compilação: Erros. Detecção de Erros: * Analisadores Top-Down - Preditivo Tabular (LL) - Feito a mão. * Analisadores Botton-Up: - Shift-Reduce (SLR)

BNF (Backus-Naur Form) Gramática Livres de Contexto / Estruturas Recursivas

Aná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: Analisadores Descendentes Preditivos

Análise sintática. Prof. Thiago A. S. Pardo. Análise sintática ascendente

V Teoria de Parsing. Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada

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

Analisadores Sintáticos LR

Compiladores - Análise SLR

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

Como construir um compilador utilizando ferramentas Java

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

Compiladores. Top-Down x Bottom Up. Plano da aula. Redução exemplo 1. Redução exemplo 1. Lembrando: construir a tabela de análise LL(1) A Abc b B d

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

Compiladores Aula 6. Celso Olivete Júnior.

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

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

Automata e Linguagens Formais

Análise Sintáctica. Definições: Conjuntos First() e Follow() Compiladores, Aula Nº 19 João M. P. Cardoso. Conjunto First(β)

Universidade Federal de Alfenas

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

INE5317 Linguagens Formais e Compiladores. AULA 10: Anális e S intática

Análise Sintática. Fabiano Baldo

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

Compiladores - Análise LL(1)

Compiladores - Análise LL(1)

Analisadores Descendentes Tabulares; Cjs First Follow

I LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1

Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

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

Análise Bottom-Up. Compiladores. Parsing LR. Tabela Ações/Transições. Análise LR. Construindo tabelas LR

Compiladores. Parser LL 10/13/2008

Gramáticas Livres de Contexto

LL Parser ( TOP-DOWN)

Compiladores. Análise Sintática

Conceitos de Linguagens de Programação

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

Compiladores. Análise Sintática

Linguagens de Programação Aula 5

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Análise sintática. Prof. Thiago A. S. Pardo Tratamento de erros sintáticos

Problemas decidíveis para LICs

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

INE5318 Construção de Compiladores. AULA 4: Análise Sintática

Problemas decidíveis para LICs

Tokens, Padroes e Lexemas

Revisão. Fases da dacompilação

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Linguagens Formais e Autômatos (LFA)

Gramáticas Livres de Contexto Parte 1

Como construir um compilador utilizando ferramentas Java

O uso de gramáticas traz vantagens para projetistas de linguagens e escritores de compiladores pelas seguintes razões:

Parsing Preditivo. Antes de ser abordado o Parsing Preditivo, será apresentado o Analisador Sintático Descendente Recursivo.

Compiladores Aula 4. Celso Olivete Júnior.

Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo

Análise Sintática Bottom-up

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

PLANO DE APRENDIZAGEM

Compiladores I. Caracterizar um método de análise bottom-up. Compreender os mecanismos básicos envolvidos no processo de análise LR.

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

CP Compiladores I Prof. Msc.. Carlos de Salles

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

Vantagens de uma Gramática. Sintaxe de uma Linguagem. Analisador Sintático - Parser. Papel do Analisador Sintático. Tiposde Parsers para Gramáticas

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Compiladores - JACC. Fabio Mascarenhas

Análise Sintática (Cap. 04) Análise Sintática Ascendente Analisador Sintático LR

Aula de Hoje. Processamento Estatístico da Linguagem Natural. Bottom-Up Filtering. Ambiguidade. Combinando Top-Down e Bottom-Up

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

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

Revisão: gramáticas (parte 2)

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

Earley Parser. CT200 - Fundamentos de Autômatas e Linguagens Formais. Israel C.S. Rocha

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

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

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

FACULDADE LEÃO SAMPAIO

Capítulo 5 Análise sintática

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013

Linguagens Formais e Autômatos P. Blauth Menezes

Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.

Análise Sintática Descendente

Eduardo Belo de Araújo. Analisador ANSI-C

Interfaces de Vanguarda do Compilador

Gramática Livre de Contexto

RONALDO LIMA ROCHA CAMPOS GERADOR DE COMPILADORES

Transcrição:

Análise Sintática Aula Prática Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 9 de maio de 2012 1 / 16

Agenda 1 Introdução 2 Análise Sintática Descendente ASD com Retrocesso ASD Preditiva 3 Análise Sintática Ascendente Precedência de Operadores Analisadores LR 2 / 16

Introdução Gramática abordada L L,S S 3 / 16

Análise Sintática Descendente (ASD) Por que é chamada assim? 4 / 16

Análise Sintática Descendente (ASD) Por que é chamada assim? Abordagem top-down Das regras de produção (ñ terminais) se chega aos terminais 4 / 16

ASD com Retrocesso Como é realizada? Reconhecer a cadeia: (a, (a, a)) L L,S S 5 / 16

ASD com Retrocesso Como é realizada? Reconhecer a cadeia: (a, (a, a)) L L,S S 5 / 16

ASD com Retrocesso Como é realizada? Reconhecer a cadeia: (a, (a, a)) L L,S S Isso, não funciona. Por quê? 5 / 16

ASD com Retrocesso Como é realizada? Reconhecer a cadeia: (a, (a, a)) L L,S S Isso, não funciona. Por quê? Recursividade esquerda Sem recursividade esquerda L S,L S 5 / 16

ASD Preditiva O que a diferencia da ASD com Retrocesso? L L,S S A gramática é LL(1)? 6 / 16

ASD Preditiva O que a diferencia da ASD com Retrocesso? L L,S S A gramática é LL(1)? 6 / 16

ASD Preditiva O que a diferencia da ASD com Retrocesso? L L,S S A gramática é LL(1)? L SL L,SL λ 6 / 16

ASD Preditiva O que a diferencia da ASD com Retrocesso? L L,S S A gramática é LL(1)? L SL L,SL λ E se fosse LL(2), o que mudaria? 6 / 16

Primeiro e Seguidor L SL L,SL λ 7 / 16

Primeiro e Seguidor L SL L,SL λ Conjunto Primeiro P(S) = { ( a} P(L) = P(S) = { ( a} P(L ) = {, λ } Conjunto Seguidor S(S) = {$} + P(L ) + S(L ) a = { $, λ )} S(L) = { ) } S(L ) = S(L) + S(L ) = { ) } a Pois L pode gerar λ 7 / 16

Tabela Sintática 8 / 16

Tabela Sintática ( ) a $, λ S S (L) S a L L SL L SL L L λ L,SL L λ 8 / 16

Análise de Precedência de Operadores Mais usual para gramática de expressões matemáticas Tipo de Gramática Não há símbolos não terminais adjacentes Não há produções que derivam a cadeia nula 9 / 16

Análise de Precedência de Operadores Vamos usar essa gramatica? L SL L,SL λ Gramática correta L L,S S 10 / 16

Análise de Precedência de Operadores Vamos usar essa gramatica? L SL L,SL λ Não, por quê? Gramática correta L L,S S 10 / 16

Tabela de Precedência de Operadores a ( ), $ a > > > ( < < = < ) > > >, < < > > $ < < 11 / 16

Analisadores LR Mais poderosos Analisadores em formato de autômatos Por que são chamados assim? Da esquerda para a direita, derivação mais a direita 12 / 16

Analisadores LR Mais poderosos Analisadores em formato de autômatos Por que são chamados assim? Da esquerda para a direita, derivação mais a direita 12 / 16

Simple LR (SLR) Funciona com base no uso de uma tabela SLR A tabela SLR é construída pelo conjunto canônico LR(0) Algoritmo do ponto Construir o conjunto canônico para: L L,S L S 13 / 16

Simple LR (SLR) Funciona com base no uso de uma tabela SLR A tabela SLR é construída pelo conjunto canônico LR(0) Algoritmo do ponto Construir o conjunto canônico para: L L,S L S 13 / 16

Conjunto Canônico 0 S ->.S S ->.a S->.(L) S a ( ( 1 2 S -> S. S -> a. a ( 3 4 S -> (.L) L ->.L,S L L ->.S S ->.a S ->.(L) S 5 a 7 L -> L,.S S - >.a S ->.(L), S -> (L.) L -> L.,S L -> S. S ) 8 6 L -> L,S. S -> (L). 14 / 16

Algoritmo da Tabela SLR 1 Cria-se uma regra auxiliar que gera o estado inicial 2 Enumera-se as regras de produção, inclusive a regra auxiliar 3 Calcula-se os seguidores para todo não terminal 4 Calcula-se o conjunto fechamento para todas as regras (Algoritmo do ponto) 5 Preencher a tabela (tem-se que n(β) é a numeração da regra): Se I i com um terminal α gera um estado I j, preenche-se com sj a linha i coluna α Se I i com uma regra β gera um novo estado I j, preenche com j a linha i coluna β Se I i consome uma regra β (o ponto chega ao final), preenche-se com rn(β) na linha i e colunas dos seguidores de β 15 / 16

Tabela SLR Estados a ( ), $ S L 0 s2 s3 1 1 OK 2 r1 r2 r3 3 s2 s3 5 4 4 s6 s7 5 r4 r4 6 r2 r2 r2 7 s2 s3 8 8 r3 r3 16 / 16