Analyseur Syntaxique

Fermé
asmasissa Messages postés 2 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 6 février 2016 - 27 mai 2015 à 18:56
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 27 mai 2015 à 19:30
j'ai un analyseur syntaxique à faire s'il vous plait aidez-moi!!
Définir une classe SymboleProduction avec les champs suivants:

Attributs:
Symbole: de type String.
TypeSymbole de type String (Un symbole Terminal ou non Terminal);

Constructeur: Deux constructeurs:
Constructeur 1: sans arguments;
Constructeur 2: avec deux arguments: String Symb pour initialiser l'attribut Symbole et String, Type pour initialiser TypeSymbole;

Méthodes:
setSymbole() qui initialise l'attribut Symbole.
setTypeSymbole() qui initialise l'attribut TypeSymbole.
getSymbole() qui retourne la valeur de l'attribut Symbole.
getTypeSymbole() qui retourne la valeur de l'attribut TypeSymbole.
AfficherSymbole() qui affiche le symbole en indiquant son type.

Attribut statique
nombre pour noter le nombre total ses symboles crées.

Exercice2:
Définir une classe Production avec les champs suivants:
Attributs:
PartieGauche: de Type SymboleProduction.
PartieDroite: de type Tableau (la partie droite peut contenir plusieurs symboles);

Constructeur:
Contructeur 1 :sans argument;
Construteur2: avec deux arguments: SymboleProduction Symb pour initialiser la partie gauche PartieGauche et TableSymbole pour initialiser la partie droite PartieDroite d'une règle de production.

Méthodes:
setProduction() qui initialise les deux parties gauche et droite d'une règle de production.
setProductionPartieGauche(): qui retourne la partie gauche d'une règle de production.
getProductionPartieDroite(): qui retourne la partie droite d'une règle de production.
getMiroirProduction(): qui retourne le mot miroir de la partie droite d'une règle de production.
AfficherProduction() qui affiche une règle de production sous forme x----->XXX

Atrribut statique:
nombre pour noter le nombre total des productions créees.

La grammaire :
D ---> RT

T ---> +RT / mRT / epsilon

R ---> KH

H ---> *KH / dKH / epsilon

K ---> (D) / n

Les règles de production :
P1 : D ---> RT
P2 : T ---> +RT
P3 : T ---> mRT
P4 : T ---> epsilon
P5 : R ---> KH
P6 : H ---> *KH
P7 : H ---> dKH
P8 : H ---> epsilon
P9 : K ---> (D)
P10 : K ---> n
La chaine à analyser : n+((n*n)dn)m(n+n)$
La table d'analyse :

n + m * d ( ) $ epsilon
---------------------------------------------------------------
D P1 P1
---------------------------------------------------------------
T P2 P3 P4 P4
----------------------------------------------------------------
R P5 P5
---------------------------------------------------------------
H P8 P8 P6 P7 P8 P8
---------------------------------------------------------------
K P10 P9
---------------------------------------------------------------


Algorithme pour l'analyse de la chaine

Répeter
Soit X le symbole en sommet de pile
Soit a la lettre pointéé par ps//ps est un pointeur
Si X est non terminal alors
si M[X,a]= X--->Y1...Yn alors
enlever X de la pile
mettre Yn puis Yn-1 puis ...puis Y1 dans la pile
émettre en sortie la production X--->Y1...Yn
sinon
Erreur
finsi
Sinon
Si X = $ alors
si a=$ alors ACCEPTER sinon ERREUR
finsi
Sinon
Si X=a alors
enlever X de la pile
avancer ps
Sinon
ERREUR
finsi
finsi
finsi
jusqu'à ERREUR ou ACCEPTER

je sait que c'est long mais svp aidez moi de le faire ,c'est urgent
Merci
A voir également:

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
27 mai 2015 à 19:30
'lut
je sait que c'est long mais svp aidez moi de le faire ,c'est urgent
T'aider à le faire oui, mais pas le faire à ta place.
Tu coinces sur quoi?
0