CT Fundamentos de Automata e Linguagens Formais

Slides:



Advertisements
Apresentações semelhantes
III – Análise sintáctica
Advertisements

III – Análise sintáctica
Compiladores FIC– Ciência da Computação Professor: Ciro Meneses Santos
Análise Sintática Ascendente ­
Análise Sintática - Continuação
Análise Sintática Ascendente
Relações em uma Gramática
Construção de Compiladores
Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira
Compiladores, Aula Nº 19 João M. P. Cardoso
Análises léxica e sintática
Análise Léxica e Sintática
Aulão de Linguagens Formais e Compiladores
Análise Sintática LR Prof. Alexandre Monteiro
Análises léxica e sintática
Revisão Compiladores – AP2
1 CIn / UFPE Introdução a Parsing Gustavo Carvalho Abril 2015.
INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB MINICURSO PET-POTÊNCIA WILK MAIA TURMA 1 AULA 7.
IF688 – Análise Sintática. Resumo desta aula Revisão de conceitos gerais de parsing Método de parsing top down e bottom up.
FERRAMENTAS DA QUALIDADE. Para que servem as “Ferramentas”? - Ferramentas não resolvem problemas nem melhoram situações – quem faz isso são as PESSOAS.
REPRESENTAÇÕES DE LINGUAGENS Adorilson Bezerra Santa Cruz - RN UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE CAMPUS AVANÇADO DO NATAL DEPARTAMENTO DE CIÊNCIA.
Ferramenta de apoio aos testes baseados em requisitos Acadêmico: Leandro da Cunha Orientador: Everaldo Artur Grahl.
Listas de Prioridades Cinéticas Tese de Mestrado de: Guilherme Dias da Fonseca (bolsista CAPES) Orientadora: Celina M. H. de Figueiredo 03/2003.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Categorias Computacionais N Um modelo categorial para bancos de dados Vítor De Araújo
Árvores Binárias Estruturas de Dados Melissa Marchiani Palone Zanatta.
1) Defina sequências numéricas.
Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .
Sistemas de Controlo: Realimentação
IX ELAVIO FABIANA SIMÕES E SILVA ORIENTADORA: VITÓRIA PUREZA
Aprendizado de Máquina
Seleção de Atributos.
Centralidade aérea baseado no índice tipo H
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma condição. Uma.
EGP, CPC, 2004/05 Problema e Algoritmos de Colocação de Professores
O CAMPO ELÉTRICO.
Laboratório 2 de Fundamentos de Física e Matemática Revisão das atividades do Lab anterior: Plot de Graficos – Maximos locais e globais.
MATEMÁTICA E SUAS TECNOLOGIAS
6ª aula PROBLEMA DE TRANSPORTES – Parte 2 UNIDADE 5
Métodos Numéricos de Determinação de Raízes: Bisseção, Secante e Newton-Raphson Professor.: Heron Jr.
Diagramas de Sequência

Utilização de HQs na Especificação de Requisitos de Software
Arranjo Físico Celular
Métodos de pesquisa Prof. Suzana M. Berriel 4º período.
Análise Sintática Botton Up Diomara M. R. Barros
DISTRIBUIÇÃO DE FREQUÊNCIA
Naturais (N) N = {0,1,2,3,4,...} Problemas do conjunto:
MICROECONOMIA Aula 6 – Análise da Teoria da Produção.
MRP e MRP II Planejamento das Necessidades de Material
Sistemas Operacionais
CUP – Um Gerador de Parsers em Java
Resolução de Problemas por Busca
Introdução instrumental às Linguagens Formais
FUNDAMENTOS DA GESTÃO DE PROCESSOS Business Process Modeling Notation
SableCC José Francisco Pereira Equipe de Monitores
Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL
Grafos Árvores (introdução) Anjolina Grisi de Oliveira
Compiladores, Aula Nº 5 João M. P. Cardoso
PROJETO TCC Disciplina de Iniciação à Pesquisa Científica
Naturais (N) N = {0,1,2,3,4,...} Problemas do conjunto:
Questões metodológicas na análise de metáforas
Registos Registos simples Banco de registos Registos de deslocamento
Probabilidade e Estatística Aplicadas à Contabilidade II
Compiladores – Introdução
Compiladores – AnáLise léxica
Introdução instrumental às Linguagens Formais
Arquitetura e padrões de software
MATEMÁTICA.
Aula 10 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

CT 200 - Fundamentos de Automata e Linguagens Formais LR Parser Ederson Monteiro de Oliveira Donde Filipe Spuri Ribeiro Silva Vinícius José Silveira de Souza

Introdução O que é um parser? Componente de software responsável por analisar uma sequência de entrada e determinar sua estrutura gramatical segundo uma determinada gramática formal (Análise Sintática). Parser String Parse Tree

Introdução Algoritmos Há vários algoritmos para cada classe de linguagem; Quanto mais abrangente, menos eficiente; Há diferentes abordagens: top-down, bottom-up, depth-first, breadth-first, shift- reduce...

Parser LR Algoritmo de parsing para linguagens livres de contexto; A string de entrada é lida da esquerda para direita (Left to right) produzindo uma derivação mais à direita (Rightmost derivation), por isso LR; Tenta construir a árvore de derivação a partir dos nós folha (bottom-up)

Parser LR - Tipos Para evitar o “backtracking or guessing” , o parser LR olha para os símbolos a frente da string de entrada para determinar sua ação (look-ahead sets); Possui variantes LR(k), onde k é o número de símbolos de look-ahead; De acordo como o look-ahead set é determinado, o parser pode ser classificado SLR (Simple LR) ou LALR (Look-Ahead LR); SLR parser calcula o look-ahead set baseado diretamente na gramática; LALR parser calcula o look-ahead set baseado no grafo de estados do parser e suas transições.

Vantagens Reporta erros de sintaxe rapidamente; Tempo proporcional ao tamanho da string de entrada (O(n)); Pode ser gerado automaticamente; Pode reconhecer todas as linguagens de programação geradas a partir de gramática livre de contexto.

Forest containing partially built derivation trees Exemplo - Parser LALR Parser LALR, (Look-Ahead Left-to-right, Rightmost Derivation), é um tipo de parser LR em que as ações são escolhidas dependendo do próximo símbolo da cadeia. Baseia-se em três estruturas básicas, conforme abaixo: LR Parser = Forest containing partially built derivation trees + Parser Action Table + GoTo Table

Parser Action Table As linhas são rotuladas com os estados e as colunas são rotuladas com os símbolos de entrada; Para cada par formado pelo estado atual e símbolo de entrada atual existe uma parsing action correspondente; São definidas 4 parsing actions: Shift, Reduce, Error e Accept

Parsing Actions Shift: Adiciona um novo nó correspondente ao símbolo atual de entrada e o estado é associado a este. Reduce: Reduz de acordo com as regras de produção da gramática. As n raízes mais a direita tornam-se descendentes diretos deste novo nó. Associa-se um novo estado a este. Accept: Parar algoritmo. A árvore de derivação foi construída, a cadeia está de acordo com a gramática. Error: Algum erro encontrado. Anuncia o erro.

Goto Table As linhas são rotuladas com os estados e as colunas são rotuladas com os símbolos de entrada; Para cada par formado pelo estado mais a direita e símbolo de entrada atual é associado um novo estado atual;

Exemplo - Gramática (1) LIST → LIST ‘,’ ELEMENT (2) LIST → ELEMENT (3) ELEMENT → ‘a’ (4) ELEMENT → ‘b’ L(G) - cadeias não vazias de a’s e b’s separados por vírgula.

Exemplo - Tabela de Parse Actions ‘,’ ‘$’ shift error 1 accept 2 Reduce 2 3 Reduce 3 4 Reduce 4 5 6 Reduce 1

Exemplo - Tabela de Goto LIST ELEMENT ‘a’ ‘b’ ‘,’ 1 2 3 4 5 6

Exemplo - Validando uma entrada (1) Entrada de exemplo: ‘a,b’ (1) (1) LIST LIST (2) ELEMENT ELEMENT ELEMENT (3) (5) (4) ‘a’ ‘a’ ‘a’ ‘a’ ‘,’ ‘b’ (0) (0) (0) (0)

Exemplo - Validando uma entrada (2) (1) LIST (1) LIST LIST (6) ELEMENT ELEMENT ELEMENT ELEMENT (5) ‘a’ ‘,’ ‘b’ ‘a’ ‘,’ ‘b’ (0) (0)

Construção das Tabelas São difíceis de serem construídas a mão. Um dos métodos para se construir as tabelas é o viable prefix. a,b,b a,b,b a,b,b a,b,b (1) LIST → . LIST ‘,’ ELEMENT (2) LIST → . ELEMENT (3) ELEMENT → . ‘a’ (4) ELEMENT → . ‘b’ (3) ELEMENT → ‘a’ . (1) LIST → LIST ‘,’.ELEMENT (1) LIST → LIST ‘,’ELEMENT.

Exemplo - Implementação das tabelas em código