Analyseur Syntaxique
asmasissa
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Analyseur Syntaxique
- Analyseur de spectre audio - Télécharger - Création musicale
- Analyseur performance pc - Guide
- Analyseur disque dur - Télécharger - Informations & Diagnostic
- Analyseur de voix télécharger - Télécharger - Audio & Musique
- Analyseur de spectre logiciel - Télécharger - Édition & Montage
1 réponse
'lut
Tu coinces sur quoi?
je sait que c'est long mais svp aidez moi de le faire ,c'est urgentT'aider à le faire oui, mais pas le faire à ta place.
Tu coinces sur quoi?