Pour une langue qui n'est pas LL(1)
ou LR(1)
comment peut-on essayer de savoir si un certain nombre n
existe de telle sorte que la grammaire peut être LL(n)
ou LR(n)
?Comment déterminer si une grammaire est LR (n), LL (n)
Vous vérifiez si une grammaire est LR(0)
en regardant la collection canonique de LR(0)
éléments. Ensuite, en supposant que ce ne soit pas LR(0)
, vous pouvez vérifier s'il s'agit du LR(1)
en introduisant le symbole de lookahead. Mon raisonnement simple me dit que, pour vérifier si c'est LR(2)
ou non, vous devez probablement faire en sorte que le lookahead contienne les deux symboles suivants au lieu d'un seul.
Même si c'est le cas, même si j'en doute, je me bats pour penser à comment peut-on essayer n
, ou la non-existence de celui-ci, pour lequel une grammaire spécifique peut être LR(n)
et/ou LL(n)
sans vérifier de manière incrémentielle à partir d'un LR(m)
arbitraire vers le haut.
Pouvez-vous préciser un peu sur le point No3? Quelles sont les caractéristiques que l'on devrait rechercher sur les successeurs? Aussi, que peut-on faire en ce qui concerne les grammaires LL? –
Si je teste une grammaire et trouve que ce n'est pas LR (1), LR (2), LR (3) (...), je devrais commencer à chercher des caractéristiques spécifiques qui pourraient aider à construire un cas qui cette grammaire pourrait ne pas être LR du tout. De telles caractéristiques existeraient-elles et si oui, à quoi ressembleraient-elles? Si cela est possible, est-ce que quelque chose de semblable serait possible dans le cas de LL? –
@Eternal_Light: J'ai essayé de répondre à vos questions mais je crains que ce ne soit toujours pas spécifique. Il y a un certain nombre d'exemples de grammaires non-LR (1) dans SO, la plupart d'entre eux avec la question «Comment résoudre ce conflit», et un bon nombre d'entre eux ont été analysés dans les réponses. Habituellement, je ne m'occupe pas des conflits LL, donc je ne peux pas vous aider beaucoup là-bas; Il est beaucoup plus commun pour les analyseurs LL d'exiger un lookahead illimité et la solution habituelle est de passer à un parseur LR. – rici