Tom's Guide > Forum > Programmation > anlyseur syntaxique: demande d'aide pour expliquer la grammaire.

anlyseur syntaxique: demande d'aide pour expliquer la grammaire.

Forum Programmation : anlyseur syntaxique: demande d'aide pour expliquer la grammaire.

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

bonjour,
j'ai un petit probleme sur l'ennoncé d'un exo. Je dois programmer un analyseur syntaxique, pour cela on me fournit une grammaire. Le problème c'est que je ne la comprends pas... je vous la donne:

expression -> somme;
somme -> produit | produit+ somme
produit -> terme | terme * produit
terme -> chiffre | ( somme)
chiffre -> 0|1|2|3|4|5|6|7|8|9

En fait voila ce que je comprends : on entre une expression, elle est bonne si elle est égal à une somme suivit d'un ;
cette somme est bonne si elle est un produit ou un produit plus une somme
ce produit est bon si il est un terme ou un terme* un produit...je pense que ce n'est pas exactement ça...

Si quelqu'un pouvait m'expliquer ce que cette grammaire veut dire.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

si exactement cela... en fait la grammaire te donne les expressions que tu peux construire :
ex : (0+3)*6 est une expression valide de cette grammaire car tu peux la construire a partir des règles que tu as donné.
Par contre (0+)) -3 ne l'est pas car il n'existe aucune manière d'obtenir cette expression a partir des règles... ainsi l'analyseur syntaxique doit permettre de savoir si il existe un arbre de dérivation pour toutes les expressions (c'est a dire s'il existe un cheminement logique pour construire l'expression a partir des règles de la grammaire)...


PS: de plus, il me semble qu'on peut construire un analyseur soit en récursif, soit en itératif (beaucoup mieux) surtout qu'ici la grammaire vérifie ceraines proriétés (je crois qu'elle est SLR(1) )

Répondre à tiopai

J'ai une nouvelle question:
si je mets expression -> somme; ça veut dire que mon expression est juste si elle est égal à une somme suivit d'un point virgule.

Si je mets truc->a|b ça veut dire que truc est juste si il est égal à a ou à b.

Maintenant si je veux:

truc est vrai s'il est égal à
a et ou à b.
(donc on peut avoir soit a tout seul, soit b tout seuk soit a et b ensemble).

Je crois que la syntaxe pour écrire une telle grammaire est:

truc -> {a} {b}
Si quelqu'un à la réponse merci d'avance.

Répondre à Godfather@IDN

ça fait un petit moment que j'en ai plus fait mais, truc->a c'est pour dire que la variable 'truc' est composée de la variable 'a' alors que truc->{a} signifie que la variable truc contient le caractère "a". non ?
Je ne suis pas très sûr de ça.

Répondre à CRicky

Je comprends pas trop le problème:
tutu -> a|b|ab
:p

Répondre à tiopai
Tom's Guide > Forum > Programmation > anlyseur syntaxique: demande d'aide pour expliquer la grammaire.
Aller à :

Il y a 1510 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens