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

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

Análise Sintática Botton Up Diomara M. R. Barros - 2013.

Apresentações semelhantes


Apresentação em tema: "Análise Sintática Botton Up Diomara M. R. Barros - 2013."— Transcrição da apresentação:

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:


Carregar ppt "Análise Sintática Botton Up Diomara M. R. Barros - 2013."

Apresentações semelhantes


Anúncios Google