Skip to content

WalidDevIO/RobiIde

Repository files navigation

ROBI Interpreter

Un interpréteur graphique pour le langage ROBI avec architecture client-serveur, supportant plusieurs modes de rendu et d'exécution.

👤 Auteur

EL OUAZIZI Walid


📋 Table des matières


🔧 Prérequis

Téléchargements nécessaires

JavaFX SDK

Jackson Library (FasterXML)


📦 Installation

1. Structure des dossiers

Créez l'arborescence suivante à la racine du projet :

projet/
├── lib/
│   ├── javafx/
│   └── fasterxml/
└── resources/

2. Installation des dépendances

JavaFX :

  • Décompressez le SDK JavaFX téléchargé dans lib/javafx/

Jackson :

  • Placez les 3 fichiers JAR dans lib/fasterxml/ :
    • jackson-core.jar
    • jackson-annotations.jar
    • jackson-databind.jar

3. Configuration Linux

Si vous êtes sous Linux, modifiez les scripts de lancement :

  • Remplacez les ; par des : dans les flags -cp (classpath)

🚀 Démarrage rapide

Utilisez les scripts présents dans le dossier resources/ :

# Lancer le serveur
./resources/start-server.sh  # ou .bat sous Windows

# Lancer le client
./resources/start-client.sh  # ou .bat sous Windows

🏗️ Architecture

Serveur d'interprétation ROBI

Le serveur offre deux modes de fonctionnement :

1️⃣ Mode Socket TCP

Communication via sockets pour une exécution temps réel.

Caractéristiques :

  • 🔹 Mode mono-client : Un client à la fois
  • 🔹 Mode multi-client : Gestion de plusieurs connexions simultanées
  • 🔹 Rendu côté client : Le serveur envoie les données, le client effectue le rendu
  • 🔹 Format JSON : Requêtes et réponses au format JSON

2️⃣ Mode HTTP (Endpoints REST)

Endpoint /render

Rendu côté serveur avec animation automatique.

Fonctionnalités :

  • ✅ Génère une page HTML complète
  • ✅ Script JavaScript avec setTimeout pour l'animation
  • ✅ Images encodées en Base64
  • ✅ Rendu automatique dans une balise <img id="renderer">
  • ❌ Ne supporte pas le mode pas-à-pas

Retour : Page HTML prête à l'affichage

Endpoint /world

Mode pas-à-pas pour un contrôle fin de l'exécution.

Fonctionnalités :

  • ✅ Exécution étape par étape
  • ✅ Historique complet de l'exécution
  • ✅ Inspection de l'environnement

Réponse JSON :

{
  "responses": [
    {
      "feedback": "...",
      "world": { /* Arbre graphique */ },
      "lastExpression": "...",
      "environment": {
        "references": [...],
        "primitives": [...],
        "scripts": [...]
      },
      "delay": 1000
    }
  ]
}

💻 Clients disponibles

🟦 Client Java (Desktop)

Le plus complet - Interface graphique JavaFX

Fonctionnalités :

  • ✅ Mode pas-à-pas et animation
  • ✅ Consultation de l'environnement (références, scripts, primitives)
  • ✅ Pile d'appels des S-expressions
  • ✅ Export/Import JSON des requêtes/réponses
  • ✅ Sauvegarde/Chargement de scripts ROBI
  • ✅ Images chargées depuis le client (pas de transfert serveur)

🟨 Client Web Simple (HTML/JS)

Simplicité maximale - Rendu serveur

Fonctionnalités :

  • ✅ Interface web légère
  • ✅ Rendu côté serveur
  • ❌ Pas de mode pas-à-pas
  • 🔹 Système de templates et pré-compilation
  • 🔹 Images transmises au serveur via templates

🟩 Client Web React

Moderne et interactif - Rendu client

Fonctionnalités :

  • ✅ Mode pas-à-pas et animation
  • ✅ Rendu côté client (performances optimales)
  • ✅ Interprétation locale des images
  • ✅ Consultation de l'environnement
  • ✅ Pile d'appels des S-expressions
  • ✅ Interface moderne et réactive

📊 Comparaison des clients

Fonctionnalité Java Web Simple Web React
Mode pas-à-pas
Animation
Rendu côté Client Serveur Client
Environnement
Pile d'appels
Export JSON
Save/Load

🛠️ Documentation technique

Format des requêtes (Socket/HTTP)

{
  "script": "(define x 10) (draw x)",
  "mode": "step-by-step"
}

Format de réponse

{
  "status": "success",
  "feedback": "Exécution terminée",
  "world": { /* ... */ },
  "environment": { /* ... */ }
}

📝 Notes importantes

  • Les images peuvent être transmises en Base64 pour éviter les problèmes de chemins
  • Le mode multi-client utilise des threads pour gérer les connexions simultanées
  • Le serveur HTTP est idéal pour des démos rapides
  • Le mode Socket TCP offre plus de flexibilité pour les clients personnalisés

🐛 Dépannage

Erreur de classpath sous Linux :

  • Vérifiez que les ; ont bien été remplacés par des : dans les scripts

JavaFX non trouvé :

  • Vérifiez que le SDK est bien décompressé dans lib/javafx/
  • Vérifiez les chemins dans les scripts de lancement

Jackson non trouvé :

  • Assurez-vous que les 3 JAR sont présents dans lib/fasterxml/

About

IDE for Robi (animation scripting language) interpretation and debugging embedded in a server and few clients for the server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors