Réalisation shell : comment reconnaître commandes ?
	
	
		Bonsoir,
Je me lance dans la réalisation d'un shell de commandes qui servira a effectuer des calculs mathématiques.
Exemple de fonctionnement :
	Citation:
	
		
		
			Invite de commandes mathematiques.
> A = 1 saisie utilisateur
> B = 2 saisie utilisateur
> A + B saisie utilisateur
>> 3 un résultat
			
		
	
 Et par la suite, je pourrais rajouter en plus de ces simples assignations et opérations de bases, des fonctions arithmétiques et géométrique plus amusantes :p
Voici à quoi ressemble mon main pour l'instant :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
   |  
#include <stdio.h>
#include <stdlib.h>
#include "ed/inc/io.h"
 
 
#define TAILLE_MAX_COMMANDE 32
 
int main(int argc, char *argv[])
{
    printf("Invite de commandes mathematiques.\n\n");
 
    char commande[TAILLE_MAX_COMMANDE] = {0};
    int retour = 0;
 
    for(;;)
    {
        // Affichage du promt
        printf("> ");
        fflush(stdout);
 
        // Tant que la saisie ne se fait pas sans erreur
        while ((retour = get_s(commande, sizeof commande)) != IO_OK)
        {
            // Si l'erreur est un dépassement de taille du tableau
            if (retour == IO_ERR_LENGTH)
                printf("La commande est trop longue et ne sera donc pas traitee.\n");
 
            // Sinon, on n'analyse pas le cas par cas (inintéressant ici)
            else printf("Erreur indeterminee. La commande ne sera pas traitee.\n");
 
            // Affichage du promt
            printf("> ");
            fflush(stdout);
        }
 
        // Si la chaine saisie est "quit", on quitte le programme normalement
        if (strcmp(commande, "quit") == NULL)
            return EXIT_SUCCESS;
    }
} | 
 Pour l'instant, il ne fait pas grand chose...
Le premier problème que je me pose : comment reconnaître correctement les commandes saisies ?
En effet, si l'utilisateur entre "A=1", "A= 1", "  A =    1", le résultat devra être le même.
J'ai imaginé un début de solution à partir de fonctions que j'ai créées pour un projet précédant :
- lire la saisie
- définir les caractères qui doivent impérativement être "décollés" des autres expressions (ici, c'est =)
- compter le nombre d'espaces manquants, s'il manque des espaces
- allouer dynamiquement une nouvelle chaine avec assez de place pour contenir des espaces en plus
- copier la saisie en rajoutant les espaces manquants 
En gros, ce morceau fait ça :
"A=1" devient "A = 1".
Ensuite :
- on peut désormais lire chaque mot indépendamment
- on regarde si ça correspond à un "modèle" (ici LETTRE = VALEUR), et on applique la fonction (je n'ai pas encore mis en place cette partie "reconnaissance de modèle")
Pensez-vous que je parte sur quelque chose de correct ?
Ca me paraît long comme démarche, fastidieux.
Comment feriez-vous pour reconnaître que la saisie appartient à un "modèle" défini ?
Par avance, merci.