A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Aula 10 1 Análise Sintáctica Compiladores, Aula Nº 10 João M. P. Cardoso."— Transcrição da apresentação:

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

2 Aula 10 2 Á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)

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

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

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

6 Aula 10 6 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

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

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

9 Aula 10 9 Resolver prioridade Gramática Original OP = + | - | * | / INT = [0-9] [0-9]* OPEN = ( CLOSE = ) Start  Expr Expr  Expr OP INT Expr  INT Expr  OPEN Expr CLOSE Gramática Modificada 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

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

11 Aula 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

12 Aula 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


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

Apresentações semelhantes


Anúncios Google