Interpreteur de commande

Signaler
Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013
-
Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013
-
Salut!

J'ai un projet où je dois créer un mini interpréteur de commandes genre bash si quelqu'un peut bien m'aider.
Mon idée c'est de lire les fichier.sh d'analyser les lignes et pour chaque commande detecter lui associés un processus qui va l'executer

9 réponses

Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012
1
Tout le monde veut t'aider mais pas faire le boulot ...
Lance-toi en prenant soin de schématiser sur papier le fonctionnement global et commence à coder. Si tu tombes sur un os, reviens nous poser tes questions
Courage.
Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013

Oui je sais que vous allez pas faire le boulot à ma place bon j'aurai bien aimée savoir par où dois je commencer tkt si je tombe sur un os je vous le ferai savoir
merci
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012
1
Commence par une boucle qui récupère la commande:
char commande[256];
while((strcmp(commande, "exit")!=0) && !fichierbash.eof())
{
    fichierbash.readline(commande, 256);
    // et hop !! le code qui manque ...
}

Tu me dois 20€ pour ce code mais comme tu es nouveau client c'est gratuit pour cette fois
Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012
1
ouai ok! readline , n’existe pas.
c'est plus:
fichierbash.getline(commande, 256);

allez ! au boulot !
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Maintenant que ce point est éclaircit, il te faut:
- Réaliser un lexer
- Réaliser un parser
- Évaluer l'arbre généré par le parser

Que l'entrée soit un fichier ou une ligne de commande, ça ne change strictement rien. Fais ton lexer/parser en prenant en entrée un "const char*". La manière dont tu as été chercher le texte est laissé à la discrétion de l'utilisateur final.

Pour réaliser ceci, je te conseil de faire les choses suivantes dans cet ordre:
- Regarde ce qu'est un lexer, un parser, un AST (arbre de syntaxe abstrait)
- Fais le lexer. Vérifie que celui-ci gère bien tout ce qui est à géré (échappement, quote, double quote, variable, etc...)
- Fais le parser. Test le bien et n'hésite pas à afficher l'AST généré pour voir si tu as correctement parser ton texte.
- Évalue l'arbre généré par le parser. Il suffit de vérifier que le résultat est celui attendu.

Que dois-tu gérer dans ton projet ?

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
15191
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
6 décembre 2021
101
Hello,
Une autre solution serait d'utiliser ce qui existe déjà: sh, bat, ant,...


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
@buno: Même si tu as parfaitement raison, je pense que c'est un projet scolaire, et qu'on lui demande de recoder un produit existant pour qu'il en comprenne le fonctionnement.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013

Au faite le but du projet est de creer
un gestionnaire de tâche de fond
gestion des variables simples et variables d'environnement
gestion du repertoire courant et des changements de repertoires

et la prise en compte d'un separateur de commande
Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013

Merci les gars au moins je commence a avoir une idée claire