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

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

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

Apresentações semelhantes


Apresentação em tema: "1 Parser GLR Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira."— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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

6 6 Sumário Motivação Parser LR Parser GLR Trabalhos Relacionados Conclusão

7 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

8 8 Parser LR Componentes Entrada Saída Pilha Tabela de Parsing APD Actions Shift, Reduce Goto Próximo estado

9 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

10 10 Parser LR Funcionamento Entrada: id * id + id

11 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

12 12 Parser GLR Exemplo: (1) E E + E (2) E E * E (3) E id

13 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

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

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

16 16 Parser GLR Stack List para o processamento deid+id*id: Acabou de empilhar id no topo.

17 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

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

19 19 Parser GLR Primeira Otimização: Duas pilhas se unem:

20 20 Parser GLR Primeira Otimização: Duas pilhas se unem: A lista de pilhas (Stack List) toma a forma de uma floresta

21 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

22 22 Parser GLR Segunda Otimização: Criando cópias otimizadas

23 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

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

25 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

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

27 27 Bibliografia [Aho et. al., 1986] Compilers: Principles, Techniques, and Tools. Addison-Wesley [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 , Air Force Cambridge Research Lab, Bedford, MA. [Younger, 1967]. Recognition and parsing of context-free languages in time n 3. 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.


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

Apresentações semelhantes


Anúncios Google