0% ont trouvé ce document utile (0 vote)
8 vues2 pages

Mini Rapport Do While

Ce mini-rapport présente un analyseur do..while en Java, incluant la grammaire, l'analyse lexicale et syntaxique. Il décrit la structure du projet et fournit des exemples de cas de test valides et invalides, ainsi que les erreurs détectées. Le suivi du projet est également mentionné avec des commits réguliers sur GitHub.

Transféré par

lylyinformatique24
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues2 pages

Mini Rapport Do While

Ce mini-rapport présente un analyseur do..while en Java, incluant la grammaire, l'analyse lexicale et syntaxique. Il décrit la structure du projet et fournit des exemples de cas de test valides et invalides, ainsi que les erreurs détectées. Le suivi du projet est également mentionné avec des commits réguliers sur GitHub.

Transféré par

lylyinformatique24
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Mini-Rapport – Analyseur do..

while en Java

1. Grammaire choisie
La grammaire gérée par l’analyseur inclut uniquement les instructions autorisées par le projet :
déclaration de variables, affectation, incrémentation/décrémentation, structures de contrôle (if/else,
while, do/while, for, switch/case) et expressions arithmétiques/logiques.

Grammaire simplifiée pour do..while (EBNF) : <programme> ::= <do_while> <do_while> ::= "do"
"{" { <instruction> } "}" "while" "(" <expression_logique> ")" ";" <instruction> ::= <declaration_variable> |
<affectation> | <incrementation_decrementation> <expression_logique> ::= <expression_arithmetique>
<operateur_relationnel> <expression_arithmetique> | "(" <expression_logique> ")"
<expression_arithmetique> ::= <term> { <operateur_arithmetique> <term> } <term> ::= <nombre> |
<identificateur> | "(" <expression_arithmetique> ")" <operateur_arithmetique> ::= "+" | "-" | "*" | "/" |
"%" <operateur_relationnel> ::= "==" | "!=" | "<" | "<=" | ">" | ">="

2. Analyseur lexical
• Lit la chaîne caractère par caractère.
• Reconnaît les lexèmes :
• Mots-clés : do, while, if, else, for, switch, case, int, double, boolean, char, String
• Identificateurs
• Nombres
• Opérateurs : +, -, *, /, %, ++, --, =, ==, !=, <, <=, >, >=
• Symboles : ;, {, }, (, )
• Détecte les erreurs lexicales : caractères non valides, identificateurs incorrects.

Exemple de lexème détecté pour "do { int x = 5; x++; } while (x < 10)" : KW_do, SYM_{, KW_int, ID_x, OP_=,
NUM_5, SYM_;, ID_x, OP_++, SYM_;, SYM_}, KW_while, SYM_(, ID_x, OP_<, NUM_10, SYM_), SYM_;

3. Analyseur syntaxique
• Implémenté en descente récursive.
• Vérifie la structure do { instructions } while (condition);
• Analyse chaque instruction dans le bloc {} et la condition ().
• Détecte les erreurs syntaxiques :
• do manquant
• { ou } manquant
• while absent
• Parenthèses ou ; manquants
• Instruction invalide dans le bloc

4. Structure du projet (arborescence)


ProjetAnalyseDoWhile/ ├── src/
│ ├── AnalyseLexicale.java │ ├── AnalyseSyntaxique.java │ ├── GestionErreur.java │ └──
Main.java ├── tests/
│ ├── test1.txt │ └── test2.txt ├── doc/
│ └── mini-rapport.pdf └── README.md

1
5. Cas de test
Cas valide : do { int x = 1; x++; } while (x <= 5);

Lexical : KW_do, SYM_{, KW_int, ID_x, OP_=, NUM_1, SYM_;, ID_x, OP_++, SYM_;, SYM_}, KW_while, SYM_(,
ID_x, OP_<=, NUM_5, SYM_)

Syntaxique : Analyse terminée sans erreur.

Cas invalide : do int x = 1 while x <= 5

Erreurs détectées : Erreur syntaxique : '{' attendu après do Erreur syntaxique : ';' attendu après
affectation Erreur syntaxique : '(' attendu après while Erreur syntaxique : ')' attendu après condition
Erreur syntaxique : ';' attendu à la fin

6. GitHub et suivi
• Commits réguliers :
• Ajout de l’analyseur lexical
• Ajout de l’analyseur syntaxique
• Intégration de la gestion des erreurs
• Ajout des cas de test et documentation

Vous aimerez peut-être aussi