Tema 6 - Moodle USP: e-Disciplinas

Post on 27-Jul-2022

8 views 0 download

Transcript of Tema 6 - Moodle USP: e-Disciplinas

1Profa. Ariane Machado Lima

Professora:Ariane Machado Lima

Tema 6

Linguagens livres de contexto

2Profa. Ariane Machado Lima

Vídeo 1

Gramáticas Livres de Contexto

Profa. Ariane Machado Lima

3

Gramáticas Livres de Contexto

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

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)*

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)*

6Profa. Ariane Machado Lima

Linguagens, dispositivos, gramáticas e complexidades

7Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

8Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

if if if else else else

9Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

10Profa. Ariane Machado Lima

Linguagens livres de contextoDependências encaixadas/aninhadas

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

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

12Profa. Ariane Machado Lima

ExemplosEstrutura secundária de RNAs

13Profa. Ariane Machado Lima

| | ||| |

||

||

Gramática

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

Profa. Ariane Machado Lima

14

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))

17Profa. Ariane Machado Lima

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

18Profa. Ariane Machado Lima

Imagens: representação por quadtrees

19Profa. Ariane Machado Lima

Imagens: representação por quadtrees

20Profa. Ariane Machado Lima

Imagens: representação por quadtrees

21Profa. Ariane Machado Lima

Imagens: representação por quadtrees

22Profa. Ariane Machado Lima

Imagens: representação por quadtrees

23Profa. Ariane Machado Lima

Imagens: representação por quadtrees

24Profa. Ariane Machado Lima

Imagens: representação por quadtrees

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

25Profa. Ariane Machado Lima

Imagens: representação por quadtrees

26Profa. Ariane Machado Lima

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

27Profa. Ariane Machado Lima

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

28Profa. Ariane Machado Lima

29Profa. Ariane Machado Lima

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

30Profa. Ariane Machado Lima

Revisão de gramáticas em imagens

31Profa. Ariane Machado Lima

ExemplosProcessamento de texto (ex: XML)

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

32Profa. Ariane Machado Lima

ExemplosProcessamento de linguagem natural

33Profa. Ariane Machado Lima

Gramática

• Reconhecimento

• Geração

• Árvore sintática

34Profa. Ariane Machado Lima

Fim do vídeo 1

Gramáticas Livres de Contexto

35Profa. Ariane Machado Lima

36Profa. Ariane Machado Lima

Vídeo 2

Ambiguidade

37Profa. Ariane Machado Lima

Análise sintática e ambiguidade

38Profa. Ariane Machado Lima

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

mais de uma derivação

39Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

Uma derivação possível

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)

41Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

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

42Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

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

43Profa. Ariane Machado Lima

DerivaçõesGramática:

Cadeia:

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

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

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

46Profa. Ariane Machado Lima

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

47Profa. Ariane Machado Lima

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

48Profa. Ariane Machado Lima

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

49Profa. Ariane Machado Lima

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

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

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

51Profa. Ariane Machado Lima

Ambiguidade

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

53Profa. Ariane Machado Lima

Expressões aritméticas sem ambiguidade

54Profa. Ariane Machado Lima

Expressões aritméticas sem ambiguidade

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>

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”?

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!!!

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

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!!!

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

61Profa. Ariane Machado Lima

Fim do vídeo 2

Análise sintática e ambiguidade

62Profa. Ariane Machado Lima

Vídeos 3 e 4

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

(algoritmo CYK)

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

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

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 → ...)

66Profa. Ariane Machado Lima

ExemploGramática:

Derivação mais à esquerda

Cadeia:

67Profa. Ariane Machado Lima

ExemploGramática:

Derivação mais à esquerda

Cadeia:

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

68Profa. Ariane Machado Lima

Exemplo 2

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

| while (<exp>) <com>

| { <lista_com> }

69Profa. Ariane Machado Lima

Exemplo 2

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

| while (<exp>) <com>

| { <lista_com> }

Fácil de tratar

Profa. Ariane Machado Lima

7070

Análise sintática ascendente

Bottom-up

Profa. Ariane Machado Lima

7171

Análise sintática ascendente

Bottom-up

Umas das estratégias: algoritmo CYK

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

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

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

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)

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)

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

Profa. Ariane Machado Lima

7979

Algoritmo CYK para análise sintática

Profa. Ariane Machado Lima

8080

Algoritmo CYK para análise sintática

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

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

Profa. Ariane Machado Lima

8383

Algoritmo CYK para análise sintática

E o restante?

Vamos pensar...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Profa. Ariane Machado Lima

112112

Algoritmo CYK para análise sintática

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?

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...

Profa. Ariane Machado Lima

115115

Algoritmo CYK para análise sintática

116Profa. Ariane Machado Lima

Fim do vídeo 4

Algoritmo CYK

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

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.

119Profa. Ariane Machado Lima

Vídeo 5

Algoritmo de Earley

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

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

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

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

124Profa. Ariane Machado Lima

Exemplo:

125Profa. Ariane Machado Lima

Inicialização

126Profa. Ariane Machado Lima

Inicialização

produção

Ponto de análise da produção

lookahead Coluna de origem

127Profa. Ariane Machado Lima

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

Predictor, completer ou scanner

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

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

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

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

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

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

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

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

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

137Profa. Ariane Machado Lima

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

Predictor, completer ou scanner

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

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

140Profa. Ariane Machado Lima

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

Predictor, completer ou scanner

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)

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)

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)

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)

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)

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)

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)

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

149Profa. Ariane Machado Lima

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

Predictor, completer ou scanner

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

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

152Profa. Ariane Machado Lima

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

Predictor, completer ou scanner

E assim sucessivamente...

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

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?

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

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

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

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

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

160Profa. Ariane Machado Lima

Fim do vídeo 5

Algoritmo de Earley

161Profa. Ariane Machado Lima

Vídeo 6

Gramáticas estocásticas

162Profa. Ariane Machado Lima

Gramáticas estocásticas

163Profa. Ariane Machado Lima

Gramáticas estocásticas

164Profa. Ariane Machado Lima

Gramáticas estocásticas

165Profa. Ariane Machado Lima

Gramáticas estocásticas

166Profa. Ariane Machado Lima

Gramáticas estocásticas

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

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

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)

170Profa. Ariane Machado Lima

Estrutura secundária e gramáticas

| | ||| |

||

||

171Profa. Ariane Machado Lima

Estrutura secundária e gramáticas

| | ||| |

||

||

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

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

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)

175Profa. Ariane Machado Lima

Fim do vídeo 6

Gramáticas estocásticas

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