Maya / GUIDE_DEVELOPPEMENT.md
Clemylia's picture
Upload 11 files
2ed5595 verified
# 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
```