2008-12-02 5 views
4

J'ai besoin de l'outil de représentation graphique du flux de travail dans un programme (comme les circuits électroniques sont décrits avec une représentation graphique). La représentation doit être comme suit: les fonctions sont des boîtes et les flèches entre les boîtes sont des "messages". Comme ceci:L'outil pour la programmation visuelle

alt text http://img372.imageshack.us/img372/8471/functionsqv0.png

Cette image montre les éléments suivants: (c (a) (b))
Lorsque les paramètres de c() sont nommés comme d et e. Sur C, il serait

void c(someType1 d, someType2 e); 
someType1 a(void); 
someType2 b(void); 
.... 
c(a(), b()); 

Je pense donc que j'ai besoin de l'outil pour la manipulation et la représentation visuelle des s-expressions comme celles-ci:

(a (b c d) e) 

ou

f(g(z(x,y))+5) 

Il n'est pas à propos des listes liées, il s'agit de connexions logiques entre les fonctions.
L'outil n'a qu'à générer la représentation textuelle à partir de la représentation graphique.
Eh bien, j'ai trouvé beaucoup de choses sur la page Wiki sur la "programmation visuelle" et la "programmation graphique" et ainsi de suite. La plupart des outils décrits sont cool, mais un peu compliqués. Et la liste est assez longue, il faudrait donc beaucoup de temps pour les tester tous. J'ai donc besoin d'une opinion de gens réels et vivants.

Les exigences sont:

  • Gratuit
  • Simple
  • peut exporter vers au moins un vrai langage comme XML ou C++ ou LISP ou tout autre .

Et ce serait vraiment bien si cet outil était configurable. J'aime l'outil de FlowDesigner: il semble être presque la chose dont j'ai besoin, mais il ne peut pas exporter vers n'importe quelle langue ... Hélas.

UPD: La page wiki je l'ai mentionné: Graphical Programming
UPD2: Eh bien, j'ai décidé d'écrire mon propre outil ...

+0

fournir un lien vers la "la page Wiki", je suis intéressé –

+0

Je suis en train d'étudier Lisp. La seconde S-expr que vous fournissez contient "x, y" que je trouve curieux à cause de la virgule. Lisp utilise généralement les espaces comme dans votre premier S-expr. –

+0

Je ne comprends pas. La réponse semble être "un clavier" et "un écran". – Svante

Répondre

2

Qu'en est-il de l'utilisation de quelque chose comme Graphviz?

3

Découvrez Microsoft DSL Tools - http://msdn.microsoft.com/en-us/library/bb126259.aspx

Il est un "générateur de concepteur" - vous permet de définir votre propre format de diagramme, de spécifier des formes, des flèches, des couleurs, etc. et de générer pour vous un concepteur capable d'éditer ces diagrammes et d'exporter les artefacts textuels de votre diagramme.).

+0

Existe-t-il un exemple de travail? La solution semble être assez générale pour ma tâche. – avp

+0

Désolé, je ne peux pas passer à travers ces docs: c'est un volume écrasant et il semble être au milieu d'une solution de certaines tâches (DSL) ... – avp

+0

Cela pourrait être un meilleur point de départ: http: // code. msdn.microsoft.com/DSLToolsLab –

2

Attention: Shameless plug

Seen Memention Designer?

Il est construit autour d'un moteur configurable et peut sortir dans presque toutes les langues.

Mais, je suis désolé. Ce n'est pas vraiment gratuit.

alt text http://www.memention.com/designer/desscreen.jpg

exemple ci-dessus les exportations suivantes c-code, mais pourrait avec une certaine reconfiguration générer une langue autre.

#include <stdio.h> 

/* there are 8 blocks */ 
int running; 
/* there are 1 out blocks */ 
int state_curr_1; 
int state_next_1; 

int main(int argc, char *argv[]) { 
    running = 1; 
    state_curr_1 = 0; 
    while (running) { 
    state_next_1 = (state_curr_1 + 19); 
    running = (state_curr_1 != (19 * 12)); 
    state_curr_1 = state_next_1; 
    printf("out = %d\n", state_curr_1); 
    } 
    return 0; 
} 
+0

Cela semble cool, mais nous avons déjà MS DSL Tools ... –

Questions connexes