Tema 6 - Moodle USP: e-Disciplinas

173
1 Profa. Ariane Machado Lima Professora: Ariane Machado Lima Tema 6 Linguagens livres de contexto

Transcript of Tema 6 - Moodle USP: e-Disciplinas

Page 1: Tema 6 - Moodle USP: e-Disciplinas

1Profa. Ariane Machado Lima

Professora:Ariane Machado Lima

Tema 6

Linguagens livres de contexto

Page 2: Tema 6 - Moodle USP: e-Disciplinas

2Profa. Ariane Machado Lima

Vídeo 1

Gramáticas Livres de Contexto

Page 3: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

3

Gramáticas Livres de Contexto

Relembrar conceitos básicos (vídeo 1 do Tema 2)

Page 4: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

4

Gramáticas

Definição: uma gramática G é uma quádrupla (V, Σ, S, P), na qual

V é o conjunto de símbolos não-terminais (ou variáveis)

Σ é o conjunto de símbolos terminais

S é o símbolo inicial

P é o conjunto de produções da forma

(Σ U V)* V (Σ U V)* → (Σ U V)*

Page 5: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

5

Gramáticas

Definição: uma gramática livre de contexto G é uma quádrupla (V, Σ, S, P), na qual

V é o conjunto de símbolos não-terminais (ou variáveis)

Σ é o conjunto de símbolos terminais

S é o símbolo inicial

P é o conjunto de produções da forma

V → (Σ U V)*

Page 6: Tema 6 - Moodle USP: e-Disciplinas

6Profa. Ariane Machado Lima

Linguagens, dispositivos, gramáticas e complexidades

Page 7: Tema 6 - Moodle USP: e-Disciplinas

7Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

Page 8: Tema 6 - Moodle USP: e-Disciplinas

8Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

if if if else else else

Page 9: Tema 6 - Moodle USP: e-Disciplinas

9Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

Page 10: Tema 6 - Moodle USP: e-Disciplinas

10Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

((a+a) + (a+a))

Page 11: Tema 6 - Moodle USP: e-Disciplinas

11Profa. Ariane Machado Lima

Árvore sintática ou

Árvore de derivação=>

Informação estrutural daquele padrão

Árvore sintática ou árvore de derivação

Page 12: Tema 6 - Moodle USP: e-Disciplinas

12Profa. Ariane Machado Lima

ExemplosEstrutura secundária de RNAs

Page 13: Tema 6 - Moodle USP: e-Disciplinas

13Profa. Ariane Machado Lima

| | ||| |

||

||

Gramática

Árvore sintática Estrutura secundária da molécula

Page 14: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

14

Page 15: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

16

Exemplos

Sequências que representam imagens que seguem um padrão

<Scene A> → <Objects B> <Background C><Objects B> → <Objects D> <Objects E><Objects D> → <Face L> <Triangle T><Objects E> → <Face X> <Face Y> <Face Z><Background C> → <Floor M> <Wall N>

(((LT)(XYZ))(MN))

Page 16: Tema 6 - Moodle USP: e-Disciplinas

17Profa. Ariane Machado Lima

Imagens: representação por quadtreesDescendo no nível de pixels

Page 17: Tema 6 - Moodle USP: e-Disciplinas

18Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 18: Tema 6 - Moodle USP: e-Disciplinas

19Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 19: Tema 6 - Moodle USP: e-Disciplinas

20Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 20: Tema 6 - Moodle USP: e-Disciplinas

21Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 21: Tema 6 - Moodle USP: e-Disciplinas

22Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 22: Tema 6 - Moodle USP: e-Disciplinas

23Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 23: Tema 6 - Moodle USP: e-Disciplinas

24Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Note que essa é uma string com informação estrutural

Page 24: Tema 6 - Moodle USP: e-Disciplinas

25Profa. Ariane Machado Lima

Imagens: representação por quadtrees

Page 25: Tema 6 - Moodle USP: e-Disciplinas

26Profa. Ariane Machado Lima

Mais exemplos de gramáticas -Detecção de estenoses

Page 26: Tema 6 - Moodle USP: e-Disciplinas

27Profa. Ariane Machado Lima

Mais exemplos de gramáticas -Detecção de estenoses

Page 27: Tema 6 - Moodle USP: e-Disciplinas

28Profa. Ariane Machado Lima

Page 28: Tema 6 - Moodle USP: e-Disciplinas

29Profa. Ariane Machado Lima

Mais exemplos de gramáticas -Detecção de estenoses

Page 29: Tema 6 - Moodle USP: e-Disciplinas

30Profa. Ariane Machado Lima

Revisão de gramáticas em imagens

Page 30: Tema 6 - Moodle USP: e-Disciplinas

31Profa. Ariane Machado Lima

ExemplosProcessamento de texto (ex: XML)

https://www.eworks.de/uploads/pics/2008-05-29_XML_Beispiel2_Schema.GIF

Page 31: Tema 6 - Moodle USP: e-Disciplinas

32Profa. Ariane Machado Lima

ExemplosProcessamento de linguagem natural

Page 32: Tema 6 - Moodle USP: e-Disciplinas

33Profa. Ariane Machado Lima

Gramática

• Reconhecimento

• Geração

• Árvore sintática

Page 33: Tema 6 - Moodle USP: e-Disciplinas

34Profa. Ariane Machado Lima

Fim do vídeo 1

Gramáticas Livres de Contexto

Page 34: Tema 6 - Moodle USP: e-Disciplinas

35Profa. Ariane Machado Lima

Page 35: Tema 6 - Moodle USP: e-Disciplinas

36Profa. Ariane Machado Lima

Vídeo 2

Ambiguidade

Page 36: Tema 6 - Moodle USP: e-Disciplinas

37Profa. Ariane Machado Lima

Análise sintática e ambiguidade

Page 37: Tema 6 - Moodle USP: e-Disciplinas

38Profa. Ariane Machado Lima

Derivações É possível que uma mesma cadeia possua

mais de uma derivação

Page 38: Tema 6 - Moodle USP: e-Disciplinas

39Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

Uma derivação possível

Page 39: Tema 6 - Moodle USP: e-Disciplinas

40Profa. Ariane Machado Lima

Derivações

Derivação mais à esquerda (sempre o primeiro símbolo não terminal da forma sentencial é substituído primeiro)

Derivação mais à direita (sempre o último símbolo não terminal da forma sentencial é substituído primeiro)

Page 40: Tema 6 - Moodle USP: e-Disciplinas

41Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2

Page 41: Tema 6 - Moodle USP: e-Disciplinas

42Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2

Page 42: Tema 6 - Moodle USP: e-Disciplinas

43Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2

Page 43: Tema 6 - Moodle USP: e-Disciplinas

44Profa. Ariane Machado Lima

DerivaçõesGramática:

Derivação mais à esquerda

Cadeia:

Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2

Page 44: Tema 6 - Moodle USP: e-Disciplinas

45Profa. Ariane Machado Lima

Análise sintática

Um algoritmo de análise sintática (ou analisador sintático) é tal que, dada uma cadeia e uma gramática, encontra uma derivação (ou alternativamente uma árvore sintática) para a cadeia segundo aquela gramática

Obs: passo necessário para a compilação de um programa em uma dada linguagem de programação

Page 45: Tema 6 - Moodle USP: e-Disciplinas

46Profa. Ariane Machado Lima

Ex: gramática para expressões aritméticas simples

Page 46: Tema 6 - Moodle USP: e-Disciplinas

47Profa. Ariane Machado Lima

Ex: gramática para expressões aritméticas simples

Page 47: Tema 6 - Moodle USP: e-Disciplinas

48Profa. Ariane Machado Lima

Ex: gramática para expressões aritméticas simples

Page 48: Tema 6 - Moodle USP: e-Disciplinas

49Profa. Ariane Machado Lima

Ex: gramática para expressões aritméticas simples

Duas árvores sintáticas distintas para a mesma cadeia!!!!

Page 49: Tema 6 - Moodle USP: e-Disciplinas

50Profa. Ariane Machado Lima

Ex: gramática para expressões aritméticas simples

Duas árvores sintáticas distintas para a mesma cadeia!!!!Logo, dizemos que essa gramática é AMBÍGUA

Page 50: Tema 6 - Moodle USP: e-Disciplinas

51Profa. Ariane Machado Lima

Ambiguidade

Page 51: Tema 6 - Moodle USP: e-Disciplinas

52Profa. Ariane Machado Lima

Ambiguidade

Ambiguidade é às vezes indesejável, por exemplo em linguagens de programação

Algumas gramáticas ambíguas podem ser convertidas em não-ambíguas Algumas linguagens são inerentemente ambíguas (só podem ser descritas

por gramáticas ambíguas) Eu vi o menino com uma luneta

Page 52: Tema 6 - Moodle USP: e-Disciplinas

53Profa. Ariane Machado Lima

Expressões aritméticas sem ambiguidade

Page 53: Tema 6 - Moodle USP: e-Disciplinas

54Profa. Ariane Machado Lima

Expressões aritméticas sem ambiguidade

Page 54: Tema 6 - Moodle USP: e-Disciplinas

55Profa. Ariane Machado Lima

O caso if then else<prog> → … <com>...

<com> → ...

<com> → <cond>

<cond> → if <exp> then <com>

<cond> → if <exp> then <com> else <com>

<exp> → …

if <exp> then if <com> then <com> else <com>

Page 55: Tema 6 - Moodle USP: e-Disciplinas

56Profa. Ariane Machado Lima

O caso if then else<prog> → … <com>...

<com> → ...

<com> → <cond>

<cond> → if <exp> then <com>

<cond> → if <exp> then <com> else <com>

<exp> → …

if <exp> then if <com> then <com> else <com>

Com qual if o else faz “par”?

Page 56: Tema 6 - Moodle USP: e-Disciplinas

57Profa. Ariane Machado Lima

O caso if then else<prog> → … <com>...

<com> → ...

<com> → <cond>

<cond> → if <exp> then <com>

<cond> → if <exp> then <com> else <com>

<exp> → …

if <exp> then if <com> then <com> else <com>

AMBIGUIDADE!!!

Page 57: Tema 6 - Moodle USP: e-Disciplinas

58Profa. Ariane Machado Lima

O caso if then else

Solução 1: “manter a ambiguidade” sintática, e resolvê-la por meio de uma convenção: o else deve “fazer par” com o último if (solução adotada por muitas linguagens de programação)

Solução 2: resolver a ambiguidade sintaticamente, tornando a gramática não ambígua

Page 58: Tema 6 - Moodle USP: e-Disciplinas

59Profa. Ariane Machado Lima

O caso if then eles – Solução 2<prog> → … <com>...

<com> → ...

<com> → <cond>

<cond> → if <exp> then <com> endif

<cond> → if <exp> then <com> else <com> endif

<exp> → …

if <exp> then if <com> then <com> endif else <com> endif

ou

if <exp> then if <com> then <com> else <com> endif endif

SEM AMBIGUIDADE!!!

Page 59: Tema 6 - Moodle USP: e-Disciplinas

60Profa. Ariane Machado Lima

Resolução de ambiguidade Opção 1: Convencionar a forma de desambiguar, e “programar o

analisador sintático” para seguir esse convenção

– Como feito na maioria das linguagens de programação para tratar o caso if/then/else (que casa o else com o if imediatamente anterior)

– Obs: isso não tira a ambiguidade da gramática (simplesmente o analisador sintático se satisfaz com uma árvore ao invés de calcular todas)

Opção 2: tirar a ambiguidade da gramática

– Como feito nas expressões aritméticas– Como feito no caso if/then/else com inclusão da palavra-chave endif

Page 60: Tema 6 - Moodle USP: e-Disciplinas

61Profa. Ariane Machado Lima

Fim do vídeo 2

Análise sintática e ambiguidade

Page 61: Tema 6 - Moodle USP: e-Disciplinas

62Profa. Ariane Machado Lima

Vídeos 3 e 4

Mais sobre análise sintática e Forma Normal de Chomsky

(algoritmo CYK)

Page 62: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

6363

Problema: Dada uma gramática G e uma cadeia w, saber se w є L(G) (isto é, encontrar ao menos uma derivação a partir do símbolo inicial de G.

Para linguagens regulares: o AFD é um reconhecedor eficiente

Para linguagens livres de contexto: até existe uma máquina de estados equivalente (autômatos a pilha que veremos adiante), mas eles não são tão eficientes… dá para fazer melhor com gramáticas

Análise sintática

Page 63: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

6464

Análise sintática

Esse não é um tema de nossa disciplina, mas é importante entender o que está envolvido para compreendermos alguns tópicos do curso

Há diferentes estratégias de se programar um analisador sintático, algumas mais simples ou mais complexas

Estratégias dependentes das gramáticas (subclasses de livres-de-contexto)

Tema da disciplina de construção de compiladores

Page 64: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

6565

Análise sintática descendente

Top-down

Cada não terminal A teria uma sub-rotina associada para tratar todas as possibilidades de produção que o tenha do lado esquerdo ( A → ...)

Page 65: Tema 6 - Moodle USP: e-Disciplinas

66Profa. Ariane Machado Lima

ExemploGramática:

Derivação mais à esquerda

Cadeia:

Page 66: Tema 6 - Moodle USP: e-Disciplinas

67Profa. Ariane Machado Lima

ExemploGramática:

Derivação mais à esquerda

Cadeia:

“Recursão à esquerda”: quando eu páro de chamar recursivamente S?

Page 67: Tema 6 - Moodle USP: e-Disciplinas

68Profa. Ariane Machado Lima

Exemplo 2

<com> → if (<exp>) <com> else <com>

| while (<exp>) <com>

| { <lista_com> }

Page 68: Tema 6 - Moodle USP: e-Disciplinas

69Profa. Ariane Machado Lima

Exemplo 2

<com> → if (<exp>) <com> else <com>

| while (<exp>) <com>

| { <lista_com> }

Fácil de tratar

Page 69: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7070

Análise sintática ascendente

Bottom-up

Page 70: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7171

Análise sintática ascendente

Bottom-up

Umas das estratégias: algoritmo CYK

Page 71: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7272

Algoritmo CYK (Cocke–Younger–Kasami)

Complexidade: Polinomial - O(n3m) onde n é o tamanho da cadeia e m é o número de regras de G

G deve estar na Forma Normal de Chomsky Por que vamos ver esse algoritmo? Como motivação para estudarmos a Formal Normal de Chomsky,

e o teorema de que QUALQUER gramática livre de contexto pode ser convertida para a forma normal de Chomsky

Algoritmo CYK para análise sintática

Page 72: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7373

Uma GLC está na Forma Normal de Chomsky se:

a) Toda regra de produção é da forma

A → BC ou A → a

sendo B,C variáveis, a um símbolo terminal;

b) A variável inicial S não pode aparecer no lado direito de nenhuma regra;

c) Somente a variável inicial pode ter a regra S → .

Forma Normal de Chomsky

Page 73: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

75

Exemplo:

• Conversão para FNC:

Gramática original:S → aSb | bSa | SS |

S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Algoritmo CYK para análise sintática

Page 74: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7676

Algoritmo CYK para análise sintáticaProgramação dinâmica: uso de soluções de subproblemas

menores para resolver subproblemas maiores (até chegar à solução do problema original)

Page 75: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7777

Algoritmo CYK para análise sintáticaProgramação dinâmica: uso de soluções de subproblemas

menores para resolver subproblemas maiores (até chegar à solução do problema original)

Tabela nn:

– Para i j, a entrada (i,j) da tabela contém todas as variáveis que geram a subcadeia w

i w

i+1 ... w

j

– Tratam-se subcadeias de tamanhos crescentes (começando de 1)

Page 76: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

78

Exemplo: Grámática na FNC:

S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b BCadeia:

a b a a b b

Tabela:

Algoritmo CYK para análise sintáticatable[i,j] conterá os símbolos não terminais capazes de gerar a substring w

i...w

j

Page 77: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

7979

Algoritmo CYK para análise sintática

Page 78: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

8080

Algoritmo CYK para análise sintática

Page 79: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

81

Exemplo:

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintática

Cadeia:a b a a b b

Page 80: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

82

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintática

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 81: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

8383

Algoritmo CYK para análise sintática

E o restante?

Vamos pensar...

Page 82: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

84

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2.Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (1,2)

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 83: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

85

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (1,2)

ab é gerado por AB

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 84: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

86

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (1,2)

ab é gerado por AB

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 85: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

87

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (1,2)

ab é gerado por AB

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 86: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

88

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (2,3) = ba

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 87: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

89

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (2,3) = ba

ba é gerado por BA

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 88: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

90

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (2,3) = ba

ba é gerado por BA

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 89: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

91

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (3,4) = aa

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 90: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

92

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (3,4) = aa

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 91: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

93

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (4,5) = ab

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 92: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

94

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (5,6) = bb

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 93: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

95

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ

(i,j) = (5,6) = bb

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 94: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

96

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 95: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

97

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 96: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

98

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 97: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

99

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

S0? => aba ?

S? => aba ?

Cadeia:a b a a b b

*

*

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 98: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

100

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

S0A => aba ?

SA => aba ?

Cadeia:a b a a b b

*

*

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 99: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

101

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

S0A => aba ?

SA => aba ?

Cadeia:a b a a b b

*

*

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 100: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

102

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

S0A => aba ?

SA => aba ?

Cadeia:a b a a b b

*

*

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 101: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

103

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

AS0 => aba ?

AS => aba ?

Cadeia:a b a a b b

*

*

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 102: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

104

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

AS0 => aba ?

AS => aba ?Não, então fica só o U mesmo...

Cadeia:a b a a b b

*

*

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 103: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

105

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

(i,j) = (1,3) = aba

Cadeia:a b a a b b

w1...w3 = w1...w2 . w3...w3 ou w1...w1 . w2...w3

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 104: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

106

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 105: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

107

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou terceiro! Tenho que testar as TRÊS possibilidades!

Cadeia:a b a a b b

w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 106: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

108

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou terceiro! Tenho que testar as TRÊS possibilidades!

Possibilidade 1

AU

Cadeia:a b a a b b

w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 107: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

109

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou

terceiro! Tenho que testar as TRÊS possibilidades!

Possibilidade 2

Nada gera aa

Cadeia:a b a a b b

w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 108: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

110

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou

terceiro! Tenho que testar as TRÊS possibilidades!

Possibilidade 3

UA

Cadeia:a b a a b b

w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 109: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

111

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou

terceiro! Tenho que testar as TRÊS possibilidades!

E ASSIM POR DIANTE….

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

Page 110: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

112112

Algoritmo CYK para análise sintática

Page 111: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

113

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou

terceiro! Tenho que testar as TRÊS possibilidades!

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

E aí, o que eu faço quando terminar de preencher a tabela?

Page 112: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

114

Exemplo:

a b a a b b

a A S0, S U S0, S

b B S0, S U S0, S T

a A S0, S

a A S0, S T

b B

b B

Tabela:

Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou

terceiro! Tenho que testar as TRÊS possibilidades!

Cadeia:a b a a b b

Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b

E aí, o que eu faço quando terminar de preencher a tabela?

Se (1,n) contiver o símbolo inicial, então a cadeia é gerada pela gramática...

Page 113: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

115115

Algoritmo CYK para análise sintática

Page 114: Tema 6 - Moodle USP: e-Disciplinas

116Profa. Ariane Machado Lima

Fim do vídeo 4

Algoritmo CYK

Page 115: Tema 6 - Moodle USP: e-Disciplinas

117Profa. Ariane Machado Lima

Para quem quiser exercícios... Exercícios do livro do Sipser (cap 2): 2.1, 2.3, 2.4, 2.6,

2.9 Obs: lembrem-se que o símbolo inicial de uma

gramática é o símbolo do lado esquerdo da primeira produção da gramática

Page 116: Tema 6 - Moodle USP: e-Disciplinas

118Profa. Ariane Machado Lima

Forma Normal de Chomsky Lembrando que, para o uso do algoritmo CYK, a

gramática precisa estar na forma normal de Chomsky A boa notícia é que há um teorema que diz que toda

GLC pode ser convertida na Forma Normal de Chomsky (prova no fim do Cap 2.1 do livro de Sipser)

E quem ainda quiser fazer um exercício sobre isso, faça o 2.14 do Sipser.

Page 117: Tema 6 - Moodle USP: e-Disciplinas

119Profa. Ariane Machado Lima

Vídeo 5

Algoritmo de Earley

Page 118: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

120

Analisador sintático CYK

• Uso universal (algoritmo independe da gramática) • Estratégia ascendente• Complexidade O(n3) (SEMPRE) • Exige gramática na forma normal de Chomsky:

A BC, A N, B N, C NA a, A N, a S

Page 119: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

121

Analisador sintático de Earley

• Uso universal (algoritmo independe da gramática) • Estratégia descendente, mas preenche uma tabela

de forma ascendente• Gramática não precisa estar em uma forma

específica• Identifica diferentes árvores de derivação• Complexidade O(n3) para gramáticas ambíguas,

mas O(n2) ou O(n) para certas gramáticas

Page 120: Tema 6 - Moodle USP: e-Disciplinas

122Profa. Ariane Machado Lima

Analisador sintático de Earley• Uso de um símbolo especial indicando fim de cadeia (ex: “|-”

→ cadeia a+a*a|-)• Para uma cadeia de entrada de tamanho n (n+1 contando

com o símbolo |-), uma tabela de n+2 colunas será criada, cada uma correspondendo a um ponto da análise da cadeia

Page 121: Tema 6 - Moodle USP: e-Disciplinas

123Profa. Ariane Machado Lima

• - Cada coluna terá vários estados da análise, cada um correspondendo a: Uma produção da gramática A posição desta produção em que se

encontra a análise A coluna que originou aquela produção Cadeia (de tamanho k) de símbolos

look-ahead (terminais que sucedem aquela produção)

Analisador sintático de Earley

Page 122: Tema 6 - Moodle USP: e-Disciplinas

124Profa. Ariane Machado Lima

Exemplo:

Page 123: Tema 6 - Moodle USP: e-Disciplinas

125Profa. Ariane Machado Lima

Inicialização

Page 124: Tema 6 - Moodle USP: e-Disciplinas

126Profa. Ariane Machado Lima

Inicialização

produção

Ponto de análise da produção

lookahead Coluna de origem

Page 125: Tema 6 - Moodle USP: e-Disciplinas

127Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Page 126: Tema 6 - Moodle USP: e-Disciplinas

128Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 127: Tema 6 - Moodle USP: e-Disciplinas

129Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 128: Tema 6 - Moodle USP: e-Disciplinas

130Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 129: Tema 6 - Moodle USP: e-Disciplinas

131Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 130: Tema 6 - Moodle USP: e-Disciplinas

132Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 131: Tema 6 - Moodle USP: e-Disciplinas

133Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 132: Tema 6 - Moodle USP: e-Disciplinas

134Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 133: Tema 6 - Moodle USP: e-Disciplinas

135Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 134: Tema 6 - Moodle USP: e-Disciplinas

136Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna

Page 135: Tema 6 - Moodle USP: e-Disciplinas

137Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Page 136: Tema 6 - Moodle USP: e-Disciplinas

138Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna

Page 137: Tema 6 - Moodle USP: e-Disciplinas

139Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna

Page 138: Tema 6 - Moodle USP: e-Disciplinas

140Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Page 139: Tema 6 - Moodle USP: e-Disciplinas

141Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 140: Tema 6 - Moodle USP: e-Disciplinas

142Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 141: Tema 6 - Moodle USP: e-Disciplinas

143Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 142: Tema 6 - Moodle USP: e-Disciplinas

144Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 143: Tema 6 - Moodle USP: e-Disciplinas

145Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 144: Tema 6 - Moodle USP: e-Disciplinas

146Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 145: Tema 6 - Moodle USP: e-Disciplinas

147Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)

Page 146: Tema 6 - Moodle USP: e-Disciplinas

148Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna

Page 147: Tema 6 - Moodle USP: e-Disciplinas

149Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Page 148: Tema 6 - Moodle USP: e-Disciplinas

150Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna

Page 149: Tema 6 - Moodle USP: e-Disciplinas

151Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna

Page 150: Tema 6 - Moodle USP: e-Disciplinas

152Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scanner

E assim sucessivamente...

Page 151: Tema 6 - Moodle USP: e-Disciplinas

153Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

Page 152: Tema 6 - Moodle USP: e-Disciplinas

154Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

E para reconstruir a árvore sintática?

Page 153: Tema 6 - Moodle USP: e-Disciplinas

155Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

E para reconstruir a árvore sintática?

Completer deve deixar rastro

Page 154: Tema 6 - Moodle USP: e-Disciplinas

156Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

E para reconstruir a árvore sintática?

Completer deve deixar rastroBasta seguir

o processo contrário dos completersE

E + T

Page 155: Tema 6 - Moodle USP: e-Disciplinas

157Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

E para reconstruir a árvore sintática?

Completer deve deixar rastroBasta seguir

o processo contrário dos completersE

E + T

T T * P

Page 156: Tema 6 - Moodle USP: e-Disciplinas

158Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

E para reconstruir a árvore sintática?

Completer deve deixar rastroBasta seguir

o processo contrário dos completersE

E + T

T T * P

P

a

Page 157: Tema 6 - Moodle USP: e-Disciplinas

159Profa. Ariane Machado Lima

Para cada coluna j = 0 até n+1 Para cada estado (linha) s

Predictor, completer ou scannerSe na coluna n+2 está o estado

então aceite

E para reconstruir a árvore sintática?

Completer deve deixar rastroBasta seguir

o processo contrário dos completersE

E + T

T T * P

P

a

P

a

a

Page 158: Tema 6 - Moodle USP: e-Disciplinas

160Profa. Ariane Machado Lima

Fim do vídeo 5

Algoritmo de Earley

Page 159: Tema 6 - Moodle USP: e-Disciplinas

161Profa. Ariane Machado Lima

Vídeo 6

Gramáticas estocásticas

Page 160: Tema 6 - Moodle USP: e-Disciplinas

162Profa. Ariane Machado Lima

Gramáticas estocásticas

Page 161: Tema 6 - Moodle USP: e-Disciplinas

163Profa. Ariane Machado Lima

Gramáticas estocásticas

Page 162: Tema 6 - Moodle USP: e-Disciplinas

164Profa. Ariane Machado Lima

Gramáticas estocásticas

Page 163: Tema 6 - Moodle USP: e-Disciplinas

165Profa. Ariane Machado Lima

Gramáticas estocásticas

Page 164: Tema 6 - Moodle USP: e-Disciplinas

166Profa. Ariane Machado Lima

Gramáticas estocásticas

Page 165: Tema 6 - Moodle USP: e-Disciplinas

167Profa. Ariane Machado Lima

Gramáticas estocásticas

P(x, t | G) = produto das probabilidades das produções usadas na derivação (árvore sintática) t de x (dadas pela gramática G)

P(x | G) = ∑i P(x, t

i |G) se a gramática for ambígua

Page 166: Tema 6 - Moodle USP: e-Disciplinas

Profa. Ariane Machado Lima

168

Gramáticas Estocásticas

Definição: uma gramática estocática G é uma quíntupla (V, Σ, S, P, ρ), onde), onde

V é o conjunto de símbolos não-terminais (variáveis)

Σ é o conjunto de símbolos terminais

S é o símbolo inicial

P é o conjunto de produções da forma

(Σ U V)* V (Σ U V)* → (Σ U V)*

ρ), onde é o conjunto de distribuições de probabilidades sobre as produções de mesmo lado esquerdo

∑i ρ), onde(α → βi) = 1

Page 167: Tema 6 - Moodle USP: e-Disciplinas

169Profa. Ariane Machado Lima

Análise sintática

• Analisadores sintáticos: programas que, dados uma gramática G e uma sequência s, solta:• Se a sequência s é ou não reconhecida pela gramática

G (determinístico - não estocástico)• Qual a probabilidade da sequência s dada G

(estocástico)• Qual(is) a(s) árvore(s) sintática(s) de s dada G (uma, só

a mais provável ou todas)

Page 168: Tema 6 - Moodle USP: e-Disciplinas

170Profa. Ariane Machado Lima

Estrutura secundária e gramáticas

| | ||| |

||

||

Page 169: Tema 6 - Moodle USP: e-Disciplinas

171Profa. Ariane Machado Lima

Estrutura secundária e gramáticas

| | ||| |

||

||

Mas note que a Forma Normal de Chomsky nos atrapalha nesse caso!

Page 170: Tema 6 - Moodle USP: e-Disciplinas

173Profa. Ariane Machado Lima

Software para análise sintática (não probabilística)

• Geradores de analisadores sintáticos gerais: Descendentes, gramáticas LL(k): ANTLR (Another Tool

for Language Recognition) e JavaCC Ascendentes, como o YACC (Yet Another Compiler-

Compiler): gramáticas LALR• Geradores mais simples: pyparsing• Dedicadas a processamento de linguagem natural

(rotinas extras para esse fim): NLTK, Spacy, Stanford CoreNLP Python, TextBlob, Gensim, Pattern, Polyglot, PyNLPl, Vocabulary

Page 171: Tema 6 - Moodle USP: e-Disciplinas

174Profa. Ariane Machado Lima

Análise sintática probabilística

• Implementações disponibilizadas, por ex no GitHub (ex: CYK, Earley)

• Na próxima aula discutiremos esses algoritmos, assim como algoritmos de aprendizados de GLC Estocásticas (estimação de probabilidades e inferência das regras)

Page 172: Tema 6 - Moodle USP: e-Disciplinas

175Profa. Ariane Machado Lima

Fim do vídeo 6

Gramáticas estocásticas

Page 173: Tema 6 - Moodle USP: e-Disciplinas

176Profa. Ariane Machado Lima

ReferênciasDURBIN, R.; EDDY, S. R.; KROGH, A. Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. Cambridge University Press, 2002. Cap 9

EARLEY, J. An Efficient Context-Free Parsing Algorithm. Communications of the ACM, vol 13, n.2, p 94-102, 1970.

RAMOS, M. V. M.; NETO, J. J.; VEJA, I. S. Linguagens Formais: Teoria, Modelagem e Implementação. Ed. Bookman, 2009.

SIPSER, M. Introdução à Teoria da Computação. Ed. Thomson, 2007