Compiladores, Aula Nº 10 João M. P. Cardoso

Slides:



Advertisements
Apresentações semelhantes
FAPE - Curso de Ciência da Computação
Advertisements

Software Básico Silvio Fernandes
Tópicos em Compiladores
Compiladores Claudio Benossi
III – Análise sintáctica
III – Análise sintáctica
IV – Análise semântica DEI Associação de regras semânticas a produções
III – Análise sintáctica
III – Análise sintáctica
III – Análise sintáctica Geradores de parsers Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.9 LFA 1999/ Jorge Morais.
I - Noções dum compilador
Compiladores I Cristiano Damiani Vasconcellos
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Software Básico Silvio Fernandes
Análise Sintática - Continuação
Linguagens Livres de Contexto
Aplicações de Pilhas Pilhas são fundamentais em diversas áreas da computação: Sistemas Operacionais Arquitetura de Computadores Compiladores Entre outros.
Curso Sistemas de Informação Disciplina: Arquitetura de Software
YACC.
Universidade Federal da Paraíba Departamento de Informática Construção de Compiladores Verificação de Tipos.
Construção de Compiladores
*(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Pilha Buffer com string de entrada.
Construção de Compiladores
Exercícios Linguagens Formais.
5.6 – Complementos de Yacc – Usando Yacc com gramáticas ambíguas
Prof. Bruno Moreno Aula 4 – 11/03/2011
Análise Semântica e Representação Intermédia
Análise léxica e sintática
Aula prática - análise contextual
Ferramentas para a Construção de Compiladores: Lex & Yacc
Determinar o tipo de gramática
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 11 João M. P. Cardoso
Compiladores, Aula Nº 7 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Gramáticas Livres de Contexto
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Análises léxica e sintática
Capítulo II Gramáticas e Linguagens
Aula 14 1 Análise Sintáctica Compiladores, Aula Nº 14 João M. P. Cardoso.
Analise sintática aula-07-analise-sintática.pdf.
Esquemas L-atribuídos
Análises léxica e sintática
Analise Semântica aula-10-analise-semântica.pdf.
Projeto de Tradutor Preditivo. Introdução Introdução Esquemas L-atribuidos são reconhecidos por analisadores Top-Down. Entre estes analisadores, se encontra.
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso.
Compiladores.
Análise Sintática Prof. Alexandre Monteiro
Tradução Dirigida por Sintaxe
Aula 18 1 Análise Sintáctica Compiladores, Aula Nº 18 João M. P. Cardoso.
Revisão Compiladores – AP2
Linguagens Livres de Contexto
Compiladores Análise Sintática
Revisão Compiladores – AP1
Faculdade Pernambucana - FAPE Setembro/2007
Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso.
COMPILADORES 04 Prof. Marcos.
Um Tradutor Dirigido por Sintaxe Simples
JavaCC.
Sintaxe de uma Linguagem
PLP – JavaCC Java Compiler Compiler
Analisador sintático: Tipos de análises sintáticas
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Análise Semântica e Representação Intermédia
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Compiladores, Aula Nº 13 João M. P. Cardoso
Transcrição da apresentação:

Compiladores, Aula Nº 10 João M. P. Cardoso Análise Sintáctica Compiladores, Aula Nº 10 João M. P. Cardoso Aula 10

Árvore Sintáctica Nós internos: símbolos não-terminais Folhas: símbolos terminais Laços: De símbolos não-terminais do LHS da produção A nós do RHS da produção Captura a derivação da frase (String) Aula 10

Árvore Sintáctica para (2-1)+1 Start Expr Expr Expr OP + OPEN ( CLOSE ) Expr INT 1 Expr Expr OP - INT 2 INT 1 Aula 10

Ambiguidade numa Gramática Múltiplas derivações (como consequência: múltiplas árvores sintácticas) para a mesma String Derivação e árvore sintáctica reflecte usualmente a semântica do programa Ambiguidade na gramática reflecte muitas das vezes ambiguidades na semântica da linguagem (considerada indesejável) Aula 10

Exemplo de ambiguidade Duas árvores sintácticas para 2-1+1 Árvore correspondente a 2-(1+1) Árvore correspondente a (2-1)+1 Start Start Expr Expr Expr OP - Expr Expr OP + Expr INT 2 INT 1 Expr OP + Expr Expr OP - Expr INT 1 INT 1 INT 2 INT 1 Aula 10

Eliminação de ambiguidade Solução: modificar gramática Faz todos os operadores com associação à esquerda Gramática Original Start  Expr Expr  Expr OP Expr Expr  INT Expr  OPEN Expr CLOSE Gramática Modificada Start  Expr Expr  Expr OP INT Expr  INT Expr  OPEN Expr CLOSE Aula 10

Árvore sintáctica para a gramática Apenas uma árvore sintáctica para: 2-1+1 Árvore sintáctica inválida Árvore sintáctica válida Start Start Expr Expr Expr OP - Expr Expr OP + INT 1 INT 2 Expr OP + Expr Expr OP - INT 1 INT 1 INT 1 INT 2 Aula 10

Violação de prioridade Árvore sintáctica para 2-3*4 Todos os operadores associam à esquerda Viola prioridade de * sobre + 2-3*4 associa como (2-3)*4 Start Expr Expr OP * INT 4 Expr OP - INT 3 INT 2 Aula 10

Resolver prioridade Gramática Modificada Gramática Original OP1 = + | - OP2 = * | / INT = [0-9] [0-9]* OPEN = ( CLOSE = ) Start  Expr Expr  Expr OP1 Term Expr  Term Expr  OPEN Expr CLOSE Term  Term OP2 INT Term  INT Gramática Original OP = + | - | * | / INT = [0-9] [0-9]* OPEN = ( CLOSE = ) Start  Expr Expr  Expr OP INT Expr  INT Expr  OPEN Expr CLOSE Aula 10

Modificação nas Árvores Sintácticas Nova Árvore sintáctica para 2-3*4 Velha Árvore sintáctica para 2-3*4 Start Start Expr Expr Expr OP * Expr OP1 - INT 4 Term Term Expr OP - INT 3 Term OP2 * INT 4 INT 2 INT 2 INT 3 Aula 10

Ideia Geral Agrupar operadores por níveis de prioridade * e / estão no nível de topo + e – estão no nível a seguir Símbolo não-terminal para cada nível de prioridade Term é não-terminal para * e / Expr é não-terminal para + e - Pode-se fazer associatividade dos operadores à esquerda ou à direita em cada nível Generalizar para níveis arbitrários de prioridades Aula 10

Exercícios (TPC) Especificar utilizando a representação BNF gramáticas correspondentes às expressões regulares: [0-9]+ e [0-9]* Dada a gramática: NUM = [0-9]+ ID = [A-Za-Z][0-9A-Za-z]* Expr  Expr “+” Term | Expr “–” Term | Term Term  Term “*” Factor | Term “/” Factor | Factor Factor  Primary “^” Factor | Primary Primary  “-”Primary | Element Element  “(“ Expr “)” | NUM | ID Quais as árvores sintácticas para: 5-2*3 y^3 Aula 10