MOïRA est une méthode implémentée dans un outil. Son but est d'intégrer de façon optimale le traitement des données textuelles dans une application.Contact : alain.buhsing@free.frCette page compare le fonctionnement de YACC à celui de MOïRA.
Contenu de cette
page :
Ce qu'est YACC | |
Comparaison YACC & MOïRA | |
Conclusion | |
YACC (Yet Another Compiler of Compiler) est le constructeur syntaxique standard de UNIX. Il existe le produit GNU BISON qui reprend les mêmes spécifications, tout en étant plus efficace.
YACC est associé au constructeur lexical LEX. Le but d'un analyseur lexical est de constituer des mots qu'il va transmettre à l'analyseur syntaxique qui, lui va constituer des phrases.
Un constructeur lexical comme LEX permet de définir les différentes unités lexicales au moyen d'une pseudo-grammaire : mots clés du langage, séparateurs, expressions régulières lexicales (entiers, réels, identifieurs, chaines de caractères). C'est aussi dans LEX qu'on définit les commentaires du langage.
A titre d'exemple, on peut observer la traduction en YACC de la grammaire MOïRA des expressions arithmétiques. Il s'agit d'une traduction automatique produite par l'outil YACCA .Les instruction C qui décorent la grammaire YACC correspondent à des instructions de création d'un arbre abstrait.
L'exemple complet :
Premier exemple :Un élément de tableau s'écrit au moyen d'un identifieur suivi d'une expression délimitée par des crochets. En MOïRA, on écrit :
Tableau ::= Identifieur "[" expression "]" |
Traduite en YACC, cette règle devient :
%token SP_CROCG SP_CROCD
tableau : identifieur SP_CROCG expression SP_CROCD
|
Quelques remarques :
AppelFonction ::= Identifieur "(" { expression }*, ")" |
%token SP_PARG SP_PARD SP_VIRG
appel_fonction : identifieur SP_PARG {
create_list (); } L1_expression
|
Quelques remarques :
L'amalgame "grammaire" + "bout de programme" dans un même texte n'est pas forcément un gage de programmation efficace ou de lisibilité, sauf si l'on est à la fois bon programmeur et bon linguiste, ce qui est rare. Mais après tout, il y a bien des poissons volants …
Néanmoins, on l'a vu, on peut implémenter la méthode sémantique de MOïRA en s'appuyant sur YACC. Et même si l'outil peut paraître mois puissant qu'avec le constructeur/analyseur d'origine, il est quand même appréciable de mettre en oeuvre cette méthodologie.