# Guide de développement Maya ## Comment ajouter de nouvelles fonctionnalités ### Structure du code Le code Maya est organisé de manière modulaire : 1. **Déclarations** : Toutes les fonctions sont déclarées en haut du fichier 2. **Fonctions utilitaires** : `trim()`, `maya_error()`, etc. 3. **Gestion des variables** : `get_variable_value()`, `set_variable()` 4. **Handlers** : Une fonction `handle_xxx()` pour chaque type de commande 5. **Interpréteur principal** : `interpret_line()` qui dispatche vers les handlers ### Ajouter une nouvelle fonctionnalité #### Étape 1 : Ajouter le prototype de fonction ```c void handle_nouvelle_fonction(char *line); ``` #### Étape 2 : Implémenter la fonction ```c 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() ```c else if (strstr(line, "my.nouvelle")) { handle_nouvelle_fonction(line); } ``` ### Exemples de nouvelles fonctionnalités possibles #### 1. Fonction my.time (afficher l'heure) ```c 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) ```c 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) ```c 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 : ```c maya_error("Description de l'erreur", numero_ligne); ``` ### Tests Testez vos nouvelles fonctionnalités en : 1. Ajoutant des exemples dans `test.my` 2. Testant en mode interactif 3. Vérifiant la gestion d'erreurs ### Compilation et test ```bash make clean make ./main test.my ```