Utilise
CHAPITRES
REVUE DE PRESSE
VERSIONS IMPORTANTES
Envoi de requêtes HTTP
depuis la version 2.07
Fichiers binaires
depuis la version 2.04
LANGAGES
ME CONTACTER
|
Presentation
CodeWorker est un outil de parsing et un générateur de code,
disponible en logiciel libre (distribué sous GNU Lesser General Public License)
et destiné à couvrir plusieurs aspects de la programmation générative.
La programmation générative est une approche de l'ingénierie logicielle pour
produire des systèmes informatique réutilisables, taillés sur mesure, facile à faire évoluer et robustes,
le tout avec un haut niveau d'automatisation.
L'outil interprète un langage de script qui pilote les traitements de parsing et de génération de code
dans une syntaxe familière aux développeurs, le tout pour construire aisément des DSL (Domain Specific Language).
Il insiste sur adapter sa syntaxe aux particularités des tâches à accomplir (acquisition des spécifications, génération de code,
conduite du projet) et sur offrir de puissantes fonctionnalités pour faire de la génération de code intensive.
N'hésitez surtout pas à me contacter pour toutes questions, critiques, suggestions, ...
Le parsing
CodeWorker fournit deux méthodes distinctes pour réaliser un parsing:
- la lecture de tokens est procédurale,
- la description en notation BNF est déclarative, et suit une sorte
de BNF (le Backus-Naur Form décrit une
grammaire suivant une syntaxe particulière) étendue avec des expressions régulières,
un peu semblable à javacc dans le monde JAVA ou à ANTLR.
Pendant le parsing de fichiers, CodeWorker renseigne une
structure de donnée appropriée, appelée un arbre, un arbre de parsing en l'occurrence.
Un arbre est une structure bien commode pour représenter un ensemble hierarchisé de noeuds, comme en
XML par exemple.
Cet arbre de parsing est partagé à la fois par la tâche d'acquisition des spécifications, qui prend en charge
de le renseigner, et par la tâche de génération de code qui va le parcourir pour produire du texte.
La generation de code
Etant donné une spécification donnée dans n'importe quel format, CodeWorker
génèrera du code source, du texte ou des données binaires, tel qu'indiqué dans les scripts patron de génération.
La génération de code peut exploiter trois modes : génération classique, expansion de fichier existant
ou traduction vers un autre format.
- Le mode génération laisse le script produire la plus grande part
du fichier de sortie, exécutant un patron de génération à la server page
comme il existe en JSP ou PHP. Seules quelques portions appelées
zônes de code protégées dans le vocabulaire de CodeWorker
sont préservées dans le fichier et destinées à contenir du code tapé à la main. Quelques outils de modélisation ont adopté
cette philosophie, et qui génèrent un squelette copieusement entrecoupé de zônes destinées
au développeur.
- Le mode expansion est utilisé quand le fichier est en partie écrit à la main
et ne doit pas se décliner en plusieurs fichiers générés. Les points où
insérer du code sont appelés marqueurs dans le vocabulaire de
CodeWorker. Le Class Wizard de
Visual C++ change le code source en suivant ce principe.
- Le mode translation quand à la fois le parsing/scan et la génération de code
sont requis pour traiter un fichier. Cela se produit dans les cas suivants:
- une transcription source-à-source : un fichier doit être
réécrit dans un format différent. Par exemple, un fichier LaTeX pourrait
devoir être retranscrit en HTML.
- une transformation de programme : un fichier doit subir des changements
pour optimisation, réorganisation, instrumentation ou réécriture de quelques portions.
Par exemple, un script pourrait ajouter une trace au début de chaque
corps de fonction d'un source JAVA ou C++. Pour réaliser cela, le scan servira
à détecter les corps de fonction, et la génération de code insérera le code C++ ou Java
qui implémente la trace.
|