Anlise Sintctica Compiladores Aula N 10 Joo M

  • Slides: 12
Download presentation
Análise Sintáctica Compiladores, Aula Nº 10 João M. P. Cardoso 1 Aula 10

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

Árvore Sintáctica Nós internos: símbolos não-terminais ¢ Folhas: símbolos terminais ¢ Laços: ¢ De

Á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 l A nós do RHS da produção l ¢ 2 Captura a derivação da frase (String) Aula 10

Árvore Sintáctica para (2 -1)+1 Start Expr OPEN ( Expr INT 2 3 Expr

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

Ambiguidade numa Gramática Múltiplas derivações (como consequência: múltiplas árvores sintácticas) para a mesma String

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) ¢ 4 Aula 10

Exemplo de ambiguidade ¢ Duas árvores sintácticas para 2 -1+1 Árvore correspondente a (2

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

Eliminação de ambiguidade Solução: modificar gramática ¢ Faz todos os operadores com associação à

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

Árvore sintáctica para a gramática ¢ Apenas uma árvore sintáctica para: 2 -1+1 Árvore

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

Violação de prioridade Todos os operadores associam à esquerda ¢ Viola prioridade de *

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

Resolver prioridade Gramática Original OP = + | - | * | / INT

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

Modificação nas Árvores Sintácticas Velha Árvore sintáctica para 2 -3*4 Expr Nova Árvore sintáctica

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

Ideia Geral ¢ Agrupar operadores por níveis de prioridade l l ¢ Símbolo não-terminal

Ideia Geral ¢ Agrupar operadores por níveis de prioridade l l ¢ Símbolo não-terminal para cada nível de prioridade l l ¢ ¢ * e / estão no nível de topo + e – estão no nível a seguir 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 11 Aula 10

Exercícios (TPC) ¢ ¢ Especificar utilizando a representação BNF gramáticas correspondentes às expressões regulares:

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