Outils pour créer un langage ( Translate to English )
Ecrit le 28-11-2006 (3412 hits) ... section Compilation

Dans certains contextes,  il est parfois utile de créér un langage dédié de script par exemple.
Ce langage peut etre associé à un domaine, comme les ERP par exemple. J'ai eu une expérience dans ce domaine, ou j'ai créé un langage dédié à la RH/paie.

J'ai eu aussi une expérience en C dans laquelle j'ai créé un langage de configuration evolué pour un outil travaillant par batch sur une arborescence de répertoires. Ce langage avait pour objectif de controler au niveau local d'un répertoire les taches que devaient accomplir cet outil (traitement d'image, compression..).

Cela passe par l'usage d'outils spécifiques, dont la finalité est de créer un compilateur dans le langage cible. 

En C, l'incontournable est Lex & Yacc, implémentés en opensource sous Flex & Bison.
Ils sont difficiles à mettre en oeuvre, et aussi à mettre au point, aussi sont ils réservés à des dévelpopeurs C avancés.

En Java, j'ai eu l'occasion d'evaluer javaCC et SableCC, qui sont tout deux de même richesse. D'approche objets, leur utilisation est vraiment plus accessible, avec la génération d'un AST (Abstract Syntax Tree), parcouru selon le design pattern du "Visiteur", donc très élégant.

J'ai préféré utiliser SableCC pour plusieurs raisons, parmi lesquelles la licence d'utilisation et l'élegance générale d'utilisation.
Mais pour information, JavaCC ayant passé par les mains de Sun, je dois dire que c'est lui qui est le plus populaire.

Enfin, il est utile de se documenter sur la notation BNF, car la description de la grammaire des langages se fait souvent dans un format qui s'en rapproche.