Prg de vérification des accolades
Sdija
Messages postés
96
Statut
Membre
-
gummy -
gummy -
Bonjour tout le monde;en
Je voudrais bien savoir comment réaliser un programme qui nous permettera de vérifier l'existance des accolades et les parenthèses dans un programme source et de déterminer sa position.
Merci d'avance
Je voudrais bien savoir comment réaliser un programme qui nous permettera de vérifier l'existance des accolades et les parenthèses dans un programme source et de déterminer sa position.
Merci d'avance
A voir également:
- Prg de vérification des accolades
- Vérificateur des fichiers système - Guide
- Verification windows 11 - Guide
- Verification lien internet - Guide
- Badge de vérification linkedin - Accueil - Guide réseaux sociaux
- Sfc /scannow : réparer les fichiers système de Windows 10 - Guide
2 réponses
On sait jamais, si quelqu'un tombe ici...
On peut simplement parcourir le fichier texte ligne par ligne grâce à une boucle. Quand on repère une accolade ou une parenthèse dans la ligne en cours, on augmente un compteur pour obtenir le nombre d'accolades, de parenthèses, ou que sais-je, et on mémorise le tour de boucle pour savoir à quelle ligne elle se trouve.
Ainsi, on a une boucle, qui lit tout le fichier ligne par ligne, qui vérifie sur la ligne si il existe un caractère spécial ({, }, (, ), [, ], ...) et qui compte leur nombres. On peut ainsi différencier les symboles et utiliser un compteur pour les symboles ouvrants ({, (, [,...) et un pour les symboles fermants (}, ), ],...) comme ça on peut vérifier si il y bien le même nombre d'ouvrants et de fermants, ce serait déjà super intéressant.
On peut simplement parcourir le fichier texte ligne par ligne grâce à une boucle. Quand on repère une accolade ou une parenthèse dans la ligne en cours, on augmente un compteur pour obtenir le nombre d'accolades, de parenthèses, ou que sais-je, et on mémorise le tour de boucle pour savoir à quelle ligne elle se trouve.
Ainsi, on a une boucle, qui lit tout le fichier ligne par ligne, qui vérifie sur la ligne si il existe un caractère spécial ({, }, (, ), [, ], ...) et qui compte leur nombres. On peut ainsi différencier les symboles et utiliser un compteur pour les symboles ouvrants ({, (, [,...) et un pour les symboles fermants (}, ), ],...) comme ça on peut vérifier si il y bien le même nombre d'ouvrants et de fermants, ce serait déjà super intéressant.
Voici la solution en perl (il suffit de modifier le chemin du fichier à analyser au début du script) :
__________________________________________________
__________________________________________________
Ce code analyse donc un fichier de code et analyse le nombre de symboles spéciaux et affiche ces nombres. Si par exemple le nombre d'un symbole ouvrant et le nombre du même symbole fermant sont différents, c'est qu'il en manque quelque part dans le code. Exemple de résultat :
Dans l'exemple ci-dessus, on peut voir que les nombres pour les parenthèses ouvrantes et fermantes est différent : il manque deux parenthèses fermantes dans le code.
Voilà, j'espère vous avoir été utile :)
__________________________________________________
#!/usr/bin/perl
$file = "/mydirectory/myscript.pl";
$file_content;
open (TXTFILE, $file) || die "Cannot open the file $file : $!";
while (<TXTFILE>)
{
$file_content .= $_;
}
close (TXTFILE);
$left_ps =()= $file_content =~ m{\(}g;
$right_ps =()= $file_content =~ m{\)}g;
$left_bs =()= $file_content =~ m{\{}g;
$right_bs =()= $file_content =~ m{\}}g;
$left_cs =()= $file_content =~ m{\[}g;
$right_cs =()= $file_content =~ m{\]}g;
$breakpoints =()= $file_content =~ m{;}g;
$display = << "EOP";
CODE CHECKING COMPLETE - RESULTS
=====================================
( : $left_ps
) : $right_ps
{ : $left_bs
} : $right_bs
[ : $left_cs
] : $right_cs
; : $breakpoints
EOP
print $display;
print "\n\n-> DONE <-\n\n";
__________________________________________________
Ce code analyse donc un fichier de code et analyse le nombre de symboles spéciaux et affiche ces nombres. Si par exemple le nombre d'un symbole ouvrant et le nombre du même symbole fermant sont différents, c'est qu'il en manque quelque part dans le code. Exemple de résultat :
[root@home]# perl codeChecker.pl
CODE CHECKING COMPLETE - RESULTS
=====================================
( : 945
) : 943
{ : 738
} : 738
[ : 279
] : 279
; : 757
-> DONE <-
Dans l'exemple ci-dessus, on peut voir que les nombres pour les parenthèses ouvrantes et fermantes est différent : il manque deux parenthèses fermantes dans le code.
Voilà, j'espère vous avoir été utile :)