ANALYSEUR SANTAXIQUE SLR ET GENERATEUR DU CODE QUAD INDEPENDANT APPLIQUÉ AU GRAM

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 14 juin 2010 à 10:05
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 14 juin 2010 à 10:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51900-analyseur-santaxique-slr-et-generateur-du-code-quad-independant-applique-au-grammaire-du-langage-c

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
14 juin 2010 à 10:05
Merci de changer les choses suivantes:
- Le titre (Analyseur sYntaxique)
- La description (C'est un analyseur syntaxique, mais ce n'est PAS un compilateur)

Dans le projet:
- La casse est importante !!! Si ton fichier s'appelle "Symbole.h" alors tu ne dois pas inclure "symbole.h". Windows se fout de la casse, mais pas Unix. Ce qui fait que je ne peux pas compiler ton projet. (On appelle "casse" le fait que les majuscules et les minuscules soient différenciées).
- Évite les using namespace std, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Utilise 0, plutôt que NULL. (ou alors nullptr si tu fais du C++0x). Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/null-en-cpp- Des éléments sont inutiles (ex: succ succ || ajouterSuivant(sym->getPremier()[i]), pourquoi succ succ)
- Au lieu de faire:
std::cout << "truc" << std::endl;
std::cout << "truc" << std::endl;
std::cout << "truc" << std::endl;
Utilise plutôt:
std::cout << "truc" << std::endl
<< "truc" << std::endl
<< "truc" << std::endl;
Ou mieux encore, si tu n'as que des chaînes de caractères:
std::cout << "truc\n"
"truc\n"
"truc" << std::endl;
- Lorsque tu le peux, préfère passer tes objets par référence (avec &) plutôt que par pointeur. Techniquement, c'est totalement identique, mais ça te permet d'avoir un code plus robuste, car un référence ne peut être nulle.
- Utilise des assert ! Il n'y en a pas du tout dans ton code.
- Passe tes plus gros objet par référence et non par copie. Ça coûte extrêmement cher pour rien !
Ex:
action(Production* prod,vector infs)
Devrait être:
action(Production* prod, const vector& infs)
- Il y a trop de répétition dans la fonction load_lex(), il aurait très facile de factoriser le code.

Impossible de juger de la qualité du programme, vu qu'il ne compile pas. Essaie de le corriger que je puisse donner un avis :)

Je t'invite à jeter un coup d'oeil sur un compilateur qui est sur ce site:
http://www.cppfrance.com/codes/COMPILATEUR-PSEUDO-PASCAL_49318.aspx
Rejoignez-nous