Question

permet de dire que nous utilisons le parser prédictif ll (1).Pourquoi est-il nécessaire que

$ premier (\ alpha) \ cap d'abord (\ beta)=videtyset $ ,

pour tous $ \ alpha, \ beta $ côté droit des productions alternatives, c'est-à-dire associé au même non terminal.Pourquoi cette condition est-elle nécessaire?

Était-ce utile?

La solution

Voici une explication intuitive:

Il s'ensuit essentiellement de la nature de ll (1) analyseurs: ll (1) des analyseurs construisent une table d'analyse LL (1). Les lignes de la table sont des non-mines et les colonnes sont des terminaux. Nous pouvons penser à LL (1) analysant que LL (1) recherche de table lors de la rencontre de chaque symbole dans l'entrée: Nous examinons l'entrée déterminée par le terminal actuel non externe et de l'entrée, et appliquez une règle de production correspondante. Ainsi, le tableau LL (1) ne peut pas contenir de règles de production multiples à chaque entrée, sinon, l'analyseur ne peut pas décider de la règle à appliquer.

Si le côté droit d'une production $ \ alpha $ , $ \ beta $ achèvement Premiers ensembles, puis nous aurions plusieurs règles à une seule entrée de la table LL (1) (c.-à-d. Les entrées en double / conflictuelle) --- ayant une intersection non triviale des premiers ensembles empêchant essentiellement de construire la table LL (1).

Si vous n'êtes toujours pas clair sur la raison pour laquelle cette condition est nécessaire , je vous suggère de construire un exemple avec les premiers ensembles croisés sur le côté droit d'une production, puis essayez de construire manuellement un ll (1) Table d'analyse ou utilisez l'un des Outils de visualisation en ligne ; Vous trouverez immédiatement un conflit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top