Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAna Luiza Vilanova Cesário Alterado mais de 5 anos atrás
1
Análise Sintática Botton Up Diomara M. R. Barros
2
Analisador Sintático Bottom-up (Descendentes)
Denominada LR(0) ou LR(1) Recursão à esquerda não é um problema Usa pilha explícita para efetuar a análise Possui duas ações possíveis além de “aceita”
3
Outras características:
Operações básicas: carregar terminais da cadeia de entrada para a pilha até o lado direito de uma regra ser atingido, e então reduz os elementos da pilha a um único não terminal da regra. Conseqüentemente, analisadores bottom-up são chamados freqüentemente analisadores carrega-reduz (shift-reduce parsers).
4
Outras características:
1 – Carrega um terminal do topo da entrada para o topo da pilha 2 – Reduz uma cadeia do topo da pilha para um Não terminal A, dada a escolha A As gramáticas são sempre aumentadas com um novo símbolo inicial. Se S for o símbolo inicial, um novo simbolo inicial S’ é acrescentado, com uma única produção unitária S’ S
5
Gramática Aumentada Para simplificar a identificação do término do processo de análise, acrescentamos à gramática uma nova regra inicial S'→S, sendo S o símbolo inicial original. S' é um símbolo novo, que passa a ser o símbolo inicial da gramática aumentada Essa regra recebe o número 0. Assim, uma redução pela regra 0 indica o fim da análise. A gramática aumentada é usada na construção do analisador sLR(1) da gramática original
6
Considere a Gramática aumentada:
E’ E E E + n | n entrada: 2 + 3, or n + n Pilha de Análise: ($ é EOF na entrada e na base da pilha)
7
S’ S S A B A x B x entrada: x x
(Sequência(A) = {x}, Sequência(B) = {$})
8
CONT.... A verificação do conteúdo da pilha não é suficiente para determinar o passo seguinte, o mecanismo utilizado para isso é um Autômato Finito Determinístico de Itens.
9
Autômatos Finitos dos Itens LR(0)
Um item é uma opção de regra de gramática com uma posição distinta (indicada por um ponto ou outro símbolo): A . A posição em um item indica que uma análise gramaticalmente alcançou aquela posição reconhecendo aquela regra. está então na pilha, e um pode estar vindo na cadeia de entrada (o é chamado de prefixo viável). Um estado de pilha consiste do conjunto de itens os quais tem prefixos viáveis “compatíveis”.
10
Computando o conjunto de AFD dos itens LR(0)
Todo símbolo que vem imediatamente depois do ponto dá origem a uma transição para um estado gerado por meio da adição do fecho dos itens com o ponto que evoluiu o símbolo anterior. Exemplo: montar conjuntos de Itens: S A B A x B x
11
Itens da GR Aumentada Gramática Inicial Gramática Aumentada S A B
A x B x S’ S Assim o estado Inicial (0) é composto pelos Itens: S’ .S S .A B A . X O estado inicial é o fechamento de {S'→•S }. Como há um ponto antes de S, devemos acrescentar os itens S→•AB ... e por causa do ponto antes de A, acrescentamos A→•x
12
Encontrado os estados Para gerar todos os estados do analisador,
geramos todos os estados possíveis a partir do estado inicial e de outros estados gerados a partir dele. Cada vez que um estado é obtido, verificamos se já ocorreu anteriormente. O número de estados (conjuntos de itens) é finito, uma vez que o número de itens é finito.
13
AFD do conjunto de itens:
14
Tabela de análise para o AFD
Estado Entrada ir para x outro $ S A B s1 5 2 1 r2 s3 4 3 r3 r1 aceita Note que esta tabela é LR(0), desde que cada estado ou é uma troca de estado ou uma redução de estado por uma única regra. Assim, nenhum lookahead necessita ser consultado.
15
Exemplo de análise por tabela
Pilha de Análise Entrada Ação 1 $0 x x $ s1 2 $ 0 x r2 ( A ) 3 s3 4 r3 ( B 5 r1 ( S A B 6 aceita Note que, com os números dos estados na pilha, os símbolos não necessitam ser colocados na pilha, e nós vamos os eliminando ocasionalmente, no futuro, como mostra o exemplo.
16
Programação state 0 'x' shift, and go to state 1 S go to state 5
A go to state 2 state 1 A -> 'x' .(rule 2) $default reduce using rule 2 (A) state 2 S -> A . B (rule 1) 'x' shift, and go to state 3 B go to state 4 state 3 B -> 'x'. (rule 3) $default reduce using rule 3 (B) state 4 S -> A B . (rule 1) $default reduce using rule 1 (S) state 5 $ go to state 6 state 6 $ go to state 7 state 7 $default accept
17
Gramática sLR(1) O nome sLR(1) indica que:
A variante mais simples dos métodos LR(1) A cadeia é lida da Esquerda para a direita (L=Left to right) O analisador constrói uma derivação mais a direita (R=Rightmost) Apenas 1 símbolo do resto da entrada é examinado
18
Exemplo: E E + n | n
19
Tabela Sintática (não LR(0)!):
Estado Entrada Ir para n + $ E s2 1 s3 aceita 2 r ( ) 3 s4 4 Esta tabela usa o algoritmo SLR(1) : consulte o Conjunto Seqüência para decidir entre uma troca e um redução, ou entre duas reduções: Seqüência (E) = {+ $}, Seqüência(E ') = {$} (Nota a necessidade clara para aumento neste caso)
20
Exemplo de análise:
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.