27
1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

Embed Size (px)

Citation preview

Page 1: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

1

Parser GLR

Denis PinheiroTeoria de Linguagens

Prof. Newton José Vieira

Page 2: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

2

Motivação

Linguagens de Programação (LP) são estruturalmente bem definidas

A maioria da LPs são definidas sem ambigüidades (exceção, C++, Pearl etc.) Subconjunto das LLCs

Page 3: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

3

Motivação

Existem Parsers muito eficientes (e.g. LL, LR etc.) que as reconhecem São determinísticos Não suportam ambigüidades, nem conflitos Baseados em um subconjunto de GLCs

Page 4: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

4

Motivação

Linguagens Naturais (LN) são difíceis de serem tratadas Ambigüidade

Parsers que reconhecem as LPs, não suportam as LNs Não-determinismo

Necessidade de um mecanismo eficiente de reconhecimento das LNs

Page 5: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

5

Motivação

Tomita (1986) apresenta um algoritmo eficiente: GLR parser (Generalized LR parser)

Extensão do algoritmo de parsing LR

Reconhece todas as LLC Simula o não-determinismo das GLC

ambíguas Solução para o reconhecimento das LNs

Page 6: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

6

Sumário

Motivação Parser LR Parser GLR Trabalhos Relacionados Conclusão

Page 7: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

7

Parser LR

Processa uma entrada da esquerda para a direita (Left-right)

Realiza uma derivação mais à direita (Right- most derivation)

Baseado em uma gramática LR Não ambígua Sem conflitos

Page 8: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

8

Parser LR

Componentes

Entrada Saída Pilha Tabela de Parsing

APD Actions

Shift, Reduce Goto

Próximo estado

Page 9: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

9

Parser LR

Funcionamento 1. E → E + T 2. E → T 3. T → T + F 4. T → F 5. F → (E) 6. F → id

Parsing Table

Page 10: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

10

Parser LR

Funcionamento Entrada: id * id + id

Page 11: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

11

Parser GLR

Criado por Tomita (1986)

Seu objetivo era poder processar LNs eficientemente

É uma extensão do Parser LR Reconhece LLCs (Parser Universal) Sua Tabela de Parsing pode conter duas ou mais ações Usa não-determinismo para resolver o problema

Page 12: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

12

Parser GLR

Exemplo: (1) E → E + E (2) E → E * E (3) E → id

Page 13: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

13

Parser GLR

Usa uma lista de pilhas (Stack List) e busca em largura (pseudo-paralelismo)

Algoritmo: Vários processos executam em paralelo Cada processo têm uma pilha e executa o

algoritmo de parsing LR

Page 14: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

14

Parser GLR

Algoritmo: Quando um processo encontra múltiplas

entradas: Um novo processo é criado para cada entrada

adicional Cada novo processo tem um cópia da pilha As cópias das pilhas são adicionadas na Stack List

Quando um processo encontra um erro O processo termina Sua pilha é removida da lista de pilhas (Stack List)

Page 15: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

15

Parser GLR

Algoritmo Os processos são todos sincronizados

Executam operações de shift ao mesmo tempo Estão sempre processando o mesmo símbolo de

entrada Quando um processo encontra uma ação de

shift: aguarda os outros processos também encontrarem

uma ação de shift (possivelmente diferente)

Page 16: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

16

Parser GLR

Stack List para o processamento de “id+id*id”:

Acabou de empilhar id no topo.

Page 17: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

17

Parser GLR

Problemas: Trabalho duplicado

O que um processo está processando pode já ter sido processado por outro processo

O número de pilhas na Stack List cresce exponencialmente em relação ao número de ambigüidades encontradas

Page 18: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

18

Parser GLR

Primeira Otimização: Quando dois ou mais processos estão no

mesmo estado: Os estados no topo da pilha são unificados

criando uma pilha estruturada na forma de árvore (Tree-structured Stack)

Haverá apenas um processo com uma pilha onde o topo da pilha será a raiz da árvore

Quando o estado do topo for desempilhado são criados o mesmo número processos com as respectivas pilhas (filhas do nodo raiz)

Page 19: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

19

Parser GLR

Primeira Otimização: Duas pilhas se unem:

Page 20: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

20

Parser GLR

Primeira Otimização: Duas pilhas se unem:

A lista de pilhas (Stack List) toma a forma de uma floresta

Page 21: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

21

Parser GLR

Segunda Otimização: Quando múltiplas entradas são encontradas,

uma cópia inteira da pilha é feita para cada novo processo criado

Mas, não é necessário copiar a pilha inteira: Em diferentes processos, as partes de baixo das

pilhas permanecem iguais; Somente o que ainda não foi reduzido precisa

ser copiado

Page 22: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

22

Parser GLR

Segunda Otimização: Criando cópias otimizadas

Page 23: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

23

Parser GLR

Segunda Otimização: Criando cópias otimizadas das pilhas

A lista de pilhas toma a forma de um grafo acíclico direcionado

Page 24: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

24

Parser GLR

Com estas otimizações, garante-se: O parser não processa parte de uma sentença

várias vezes da mesma maneira Pois, se dois processos fizeram o parsing de

uma sentença da mesma maneira, eles devem estar no mesmo estado

Logo, eles serão unidos em um único processo.

Page 25: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

25

Trabalhos Relacionados

Algoritmo CYK (Cocke and Younger, 1967), (Kazami,1965) Baseado em Programação Dinâmica(PD) Reconhece qualquer GLC na FNC Logo, reconhece qualquer LLC

Algoritmo de Earley (1970) Parser Universal de GLC Também baseado em PD Usado para processamento de Linguagens

Naturais

Page 26: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

26

Conclusão

O Parser GLR é um Parser Universal Todas as LLCs podem ser reconhecidas através dos

Parsers Universais Compiladores de LPs não utilizam estes tipos de

parsers: Existem algoritmos mais apropriados para as LPs

(determinísticos) GLCs para as LPs normalmente são não ambíguas

Parsers Universais são normalmente utilizados para reconhecimento de LNs.

Page 27: 1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira

27

Bibliografia

[Aho et. al., 1986] Compilers: Principles, Techniques, and Tools. Addison-Wesley. 1986.

[Tomita, 1986] Efficient Parsing for Natural Language. Kluwer Academic Publishers.

[Cocke et. al.,1970]. Programming languages and their compilers: Preliminary notes. Technical report, Courant Institute of Mathematical Sciences, New York University.

[Kasami, 1965]. An efficient recognition and syntax-analysis algorithm for context-free languages. Scientific report AFCRL-65-758, Air Force Cambridge Research Lab, Bedford, MA.

[Younger, 1967]. Recognition and parsing of context-free languages in time n3. Information and Control 10(2): 189–208.

[J. Earley, 1970]. An efficient context-free parsing algorithm. Communications of the ACM, 13(2):94-102, 1970.