Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

23/10/2007

ANTLR: Alternative à LEX and YACC

Lex, Yacc, Flex, Bison... Mais de quoi donc parle-t-il là ? :-)

 

Pour ceux qui ne connaissent pas, Lex et Yacc sont deux outils fondamentaux pour quiconques veut créer son propre langage. Dans les grandes lignes, il s'agit donc de définir une syntaxe et une grammaire, permettant de créer un compilateur afin de transformer un texte en un code "executable" (la définition du terme éxécutable est vaste).

 

C'est parfois pratique de définir son propre langage, pour les besoins d'un script, ou pour des applications très spécifiques (Domain Specific Language).

 

Le problème, c'est que ç'est une tache qui devient vite obscure, pour ne pas dire barbare. Lex et Yacc ont été écrits il y a des années par des programmeurs du genre barbu fortement porté sur Unix et bien avant la moindre UI avancée...

 

Autrement dit, à moins d'être un expert dans l'exercice, c'est une tache qui comporte un risque non négligeable d'échec.

 

Intervient ANTLR, une alternative sensé être beaucoup plus "user friendly". Tout de suite, avoir un IDE, ça aide...

 

 

06ab25a8172b8d25cf1ae4117f9721a4.jpg

 

ANTLR, ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages.

 

ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.

 

ANTLR has a sophisticated grammar development environment called ANTLRWorks, written by Jean Bovet. 

 

[ ANTLR

Commentaires

Intéressant. Lorsque j'avais eu besoin d'une telle chose, il y a bientôt deux ans je crois, j'avais cherché un peu et j'étais tombé sur celui-ci :

http://codeworker.free.fr/index.html

Je me demande si je n'étais pas tombé sur ANTLR, mais ça ne semblait pas si avancé que ça l'est maintenant. La prochaine fois que j'ai besoin de ça, j'irai faire un petit essai.

Écrit par : Mokona | 23/10/2007

Ca fait une éternité que je n'ai pas fait ce genre d'exercice. Il faut dire que jusqu'à présent, j'ai toujours trouvé une solution pré existente...

Écrit par : Daz | 23/10/2007

A l'époque de Desperados on avait écrit notre propre langage de script à grand coup de flex & bison (ca fait plus hype que Lex & Yacc), avec en plus la machine virtuelle qui exécutait le bytecode généré par le compilateur. Au fur et à mesure on a fait la maintenance sur les jeux suivants en ajoutant des structures de controle, de l'API et la sérialisation des types natifs.

Au final j'ai appris beaucoup de choses... mais je le referrais plus... depuis j'intègre un langage style python est tous le monde est content :)

Écrit par : Whirly | 25/10/2007

Oui, c'est vraiment devenu un exercice de style plus qu'une réelle nécessité :-)

Honnétement, il me faudrait pas mal de temps avant d'être efficace avec ce type d'outils, d'autant plus que je ne l'ai jamais fait dans un cadre de production commercial... ^_^

Écrit par : Daz | 25/10/2007

On va dire que c'est typiquement le domaine où faut bien connaitre la théorie avant de passer à la pratique et ça peut rapidement devenir prise de tête.

C'est un peu comme la sérialisation, un truc simple à priori qui peut rapidement devenir un baton merdeux.

Écrit par : Whirly | 26/10/2007

Ah, la sérialisation !!!

J'ai eu un de mes plus grand moment de solitude à cause de ça. Je bossai à Argo, et en discutant avec un des programmeurs "senior", il m'a demandé ce que "serialization" voulait dire O_o

J'ai entendu mon coeur rater un battement... LOL ^_^

Écrit par : Daz | 26/10/2007

Les commentaires sont fermés.