Guide de développement Maya
Comment ajouter de nouvelles fonctionnalités
Structure du code
Le code Maya est organisé de manière modulaire :
- Déclarations : Toutes les fonctions sont déclarées en haut du fichier
- Fonctions utilitaires :
trim(),maya_error(), etc. - Gestion des variables :
get_variable_value(),set_variable() - Handlers : Une fonction
handle_xxx()pour chaque type de commande - Interpréteur principal :
interpret_line()qui dispatche vers les handlers
Ajouter une nouvelle fonctionnalité
Étape 1 : Ajouter le prototype de fonction
void handle_nouvelle_fonction(char *line);
Étape 2 : Implémenter la fonction
void handle_nouvelle_fonction(char *line) {
// Votre code ici
// Utilisez maya_error() pour les erreurs
// Utilisez trim() pour nettoyer les chaînes
}
Étape 3 : Ajouter la condition dans interpret_line()
else if (strstr(line, "my.nouvelle")) {
handle_nouvelle_fonction(line);
}
Exemples de nouvelles fonctionnalités possibles
1. Fonction my.time (afficher l'heure)
void handle_time(char *line) {
time_t t = time(NULL);
struct tm *tm = localtime(&t);
printf("Heure actuelle: %02d:%02d:%02d\n",
tm->tm_hour, tm->tm_min, tm->tm_sec);
}
2. Fonction my.random (nombre aléatoire)
void handle_random(char *line) {
char *start = strchr(line, '(');
char *end = strrchr(line, ')');
if (!start || !end) {
maya_error("Parenthèses manquantes pour my.random", 0);
return;
}
start++;
*end = '\0';
int max = evaluate_expression(start);
printf("Nombre aléatoire: %d\n", rand() % max);
}
3. Fonction my.file (écrire dans un fichier)
void handle_file_write(char *line) {
// Parser le nom du fichier et le contenu
// Écrire dans le fichier
// Gérer les erreurs
}
Conventions de nommage Maya
- Toutes les fonctions commencent par
my. - Les sous-catégories utilisent le point :
my.math.add,my.file.write - Les noms sont en français pour rester cohérent avec l'esprit du langage
Gestion des erreurs
Toujours utiliser maya_error() pour signaler les erreurs :
maya_error("Description de l'erreur", numero_ligne);
Tests
Testez vos nouvelles fonctionnalités en :
- Ajoutant des exemples dans
test.my - Testant en mode interactif
- Vérifiant la gestion d'erreurs
Compilation et test
make clean
make
./main test.my