From ad358bae41d8d322c660ab8dfe2e7edb1a18852b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Tue, 15 Feb 2011 23:20:26 +0100 Subject: [PATCH] =?UTF-8?q?Notes=20sur=20l'algorithme=20d'=C3=A9valuation?= =?UTF-8?q?=20des=20blocs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- grunt.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/grunt.js b/grunt.js index 42ee718..5a0ecf5 100644 --- 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. */