Pensées sur le langage descriptif - TriComp/TriComp GitHub Wiki

Maxime:

Suite à la réunion du groupe de travail sur le langage descriptif du samedi 11 Octobre je pose sur le papier ma proposition pour le langage descriptif et son interaction avec l'interface:

Le langage descriptif en lui-même est celui proposé à la fin de la dernière réunion, un tricot étant décrit par un ensemble de pièces. Chaque pièce est construite à partir de trapèzes avec une syntaxe qui pourrait ressembler à:

piece my_piece := start size
                 || trapezoid (paramètres) 
                 || split { trapezoid (...)
                         || link left next
                         }{ trapezoid (...)
                         || link right next
                         }

piece next := start size
             || trapezoid (...)
             || stop

NB: Ceci est un poncho

La syntaxe précise demandera des ajustements mais on cela permet déjà de décrire la structure des tricots. On peut ajouter des informations sur les décorations (tresses etc.) ainsi que sur les trapèzes qui doivent être cousus ensemble.

La génération d'un tel fichier pourrait se faire de plusieurs façons :

  • A la main avec un éditeur de texte.
  • Avec un éditeur graphique de patrons : l'utilisateur peut construire de manière graphique un patron en "extrudant" les trapèzes (dessin demain)
  • Avec des générateurs de patron : l'interface peut appeler un programme avec les paramètres d'un modèle pour lui faire générer un patron. L'utilisateur pourra alors écrire lui-même de nouveaux générateurs en utilisant les bibliothèques de manipulation du format (on peut les fournir pour C++ et OCaml, sinon il se débrouille).

Une session dans l'interface pourrait alors se dérouler ainsi:

  • L'utilisateur demande une écharpe en spécifiant sa largeur, sa longueur, un point de base. -> L'interface appelle le bon patron pour récupérer le patron
  • L'utilisateur ajoute des décorations (bandes, tresses, etc.) -> L'interface modifie le patron
  • L'utilisateur demande les instructions -> L'interface appelle le compilateur sur le patron modifié et affiche le résultat

La première étape pouvant être remplacée par la création manuelle du patron.

Inconvénients :

  • Il semble difficile de garder les décorations en cas de régénération du patron avec d'autres paramètres.
  • Il faut écrire les bibliothèques de manipulation du format en OCaml (Pour le compiler) et C++ (Pour le transformer). On peut voir ça comme une feature :)

Extensions possibles :

  • On peut trapézoïzidiser des patrons dans des formats existants ( ou du svg ) pour les adapter au format.