Analyseur santaxique slr et generateur du code quad independant appliqué au grammaire du langage c

Soyez le premier à donner votre avis sur cette source.

Vue 5 750 fois - Téléchargée 944 fois

Description

un compilateur du langage C générant du code intermédiaire à travers un analyseur syntaxique SLR
<grammaire.txt> contient la grammaire utilisé (il ne respecte pas C à 100% mais c'est pour tester l'analyseur syntaxique)
<src.txt> le code source à compiler (juste pour tester)
<type.txt> les types et les mot reservés reconnue par l'analyseur lexical

/*
analyse lexical faite par KHANNOUSSI Ahmed
projet visual studio 2008, mais les source peuvent se compiler sur sous n'importe quel compilateur c++
  • /

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (darkzan)