Pergunta

Eu sou novo no assunto de compilação e acaba de começar um exercício de Baixo para cima análise.

Eu ter ficado no seguinte problema.

construir um LR(0) ao analisar a tabela seguinte gramática:

1) E –> E + T
2) E –> T
3) T –> (E)
4) T –> id


I0 :

   E' –> .E
   E –> .E + T
   E –> .T
   T –> .(E)
   T –> .id

E o próximo estado no DFA seria :

 I1:

    E' -> E.
    E  -> E. + T

a partir do que aprendi até agora não é esta uma S-R conflito?porque o analisador não saberia se para reduzir ou deslocar como não tem look-ahead variável?portanto, este não deve ser LR(0) a gramática?

mas o PDF que eu estou lendo de ter criado o LR(0) da tabela.Então, há um erro em PDF ou tenho ido mal algum em que o entendimento do conceito?

Foi útil?

Solução

Este é de fato um turno de trabalho e reduzir os conflitos.Esta gramática não é LR(0).Você também pode ver isso porque não prefixo-livre;a gramática contém várias seqüências de caracteres que são prefixos de um ao outro, para que ele não pode ser LR(0).

O que disse, você ainda pode construir todos os LR(0) configurating conjuntos e fazer o LR(0) autômato.Só não vai ser determinista devido a tecla shift/reduzir os conflitos.É possível, portanto, que você está certo e o folheto é de direito.

Espero que isso ajude!

Outras dicas

Você aumentada a gramática com E' -> E.Normalmente, você vai aumentar com uma produção como E' -> E $, onde $ é um (terminal) símbolo que não o contrário ocorre na gramática, e denota fim-de-entrada.

Então I1 seria, na verdade,


E' -> E. $
E  -> E. + T

e não há um conflito.(E eu acredito que a gramática é LR(0).)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top