APRES L'ANALYSE SYNTAXIQUE

ATTRIBUTS (SYNTHETISES)

Une méthode très utile pour spécifier les propriétés non-algébriques des programmes et leur traduction.

EXEMPLES

YACC/BISON

Yacc/Bison permet d'utiliser des attributs d'une façon très restreinte:
chaque noeud peut avoir un seul attribut!
dans les règles, l'attribut du symbole à gauche s'appelle $$ et ceux des symboles à droite s'appellent $1, $2 etc.
pour avoir plusieurs attributs il suffit de déclarer des types union
le programmeur doit décider l'ordre de calcul des attributs;
et les sommets de l'arbre sont traités dans l'ordre d'un parcours postfixe de l'arbre.

Comment utiliser BISON?

Format du fichier

un exemple:
%{
#define YYSTYPE int
#include <math.h>
%}

%token NUMBER POINTV ID

%%

statement : expression POINTV ;
expression : NUMBER | ID ;

%%

#include <ctype.h>
#include "lex.yy.c"

main()
{
    yyparse();
}

yyerror(char *s) {
    printf ("%s\n",s);
}


Communication avec l'analyse lexicale

Calcul des attributs
(et autres)

Chaque production de la grammaire peut être suivie d'instructions C (en accolades), par exemple des calculs des attributs: {$$ = $1 + $2;}




File translated from TEX by TTH, version 3.05.
On 1 Mar 2005, 11:23.