commit ad358bae41d8d322c660ab8dfe2e7edb1a18852b
parent 0e2706a6b8f54ee62465872d86e681aac14d612f
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Tue, 15 Feb 2011 23:20:26 +0100
Notes sur l'algorithme d'évaluation des blocs.
Diffstat:
1 file changed, 23 insertions(+), 0 deletions(-)
diff --git a/grunt.js b/grunt.js
@@ -79,4 +79,27 @@ new Event.observe(window, 'load', init);
/* Modèle
[World]<>-[BlockDef|name,inputPorts,outputPorts]-[Graph]
Graph = ??? des ports et des blocs…
+
+Algorithme d'évaluation :
+
+Pour instancier une définition de bloc :
+- Instancier le bloc à partir de sa définition
+ - Pour chaque sous-bloc de la définition, on a dans l'instance un slot d'instance pour le sous-bloc (vide au départ).
+ - Pour chaque port de sortie de chaque sous-bloc, on a dans l'instance un slot de port (vide au départ) (peut être stocké directement dans les ports de sortie de l'instance).
+ - Pour chaque port d'entrée du bloc, on a dans l'instance un slot de port (vide au départ).
+
+Pour évaluer la valeur d'un port de sortie d'un bloc (inst) :
+- Chercher quel sous-bloc & port est connecté à ce port de sortie
+- Si le slot de ce sous-bloc est vide, instancier le sous-bloc et stocker l'isntance dans le slot
+- Si le slot de port de sortie de ce sous-bloc est vide :
+ - Calculer la valeur du port de sortie souhaité de ce sous-bloc
+ - Stocker la valeur ainsi calculée dans le slot de port de sortie qu'on cherchait au départ
+- Renvoyer la valeur ainsi calculée.
+
+Pour évaluer la valeur d'un port d'entrée d'un bloc (inst) :
+- Dans l'instance de bloc contenant celle-ci,
+ - Chercher le sous-bloc / le port d'entrée connecté au notre.
+ - Calculer cette valeur
+ - Soit en récursion pour calculer le port d'entrée du parent
+ - Soit en récursion pour calculer le port de sortie du bloc voisin au notre.
*/