Changes between Version 10 and Version 11 of CaoCourseTme4
- Timestamp:
- Mar 7, 2007, 1:59:51 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CaoCourseTme4
v10 v11 37 37 On va se contenter d'introduire dans le parser les ''actions de compilation'' lui 38 38 permettant d'afficher sur le terminal, en utilisant la fonction printf(), le texte 39 correspondant aux différentes construct tions grammaticales reconnues.39 correspondant aux différentes constructions grammaticales reconnues. 40 40 On se limitera même à afficher les constructions grammaticales 41 41 correspondant à la partie {{{entity}}} du fichier analysé, puisque le but est simplement de vérifier … … 48 48 %token <type> TOKEN 49 49 }}} 50 * On rappelle que pour chaque token reconnu par le scaner, la chaîne de caractères correspondant à ce token est stockée dans un buffer pointé par la variable {{{yytext}}}, et que le scanner réutilise ce même buffer pour chaque nouveau token. Quand on souhaite que le scanner transmette cette chaîne au parser 50 * On rappelle que pour chaque token reconnu par le scaner, la chaîne de caractères correspondant à ce token est stockée dans un buffer pointé par la variable {{{yytext}}}, et que le scanner réutilise ce même buffer pour chaque nouveau token. Quand on souhaite que le scanner transmette cette chaîne au parser, il faut que le scanner recopie cette chaîne de caractères dans un '''autre''' buffer et transmette au parser un pointeur sur ce nouveau buffer (dans la variable {{{yylval}}} ). Il faut donc mofifier le fichier vst.l en conséquence. 51 51 * Les valeurs transmises dans la variable {{{yylval}}} ont des types différents, qui dépendent du type du token reconnu. On utilise donc une {{{union}}} pour définir le type génétal de la vatiable {{{yylval}}} dans le fichier ''vst.y'', qui doit donc être modifié en conséquence. 52 52 {{{ … … 67 67 char *NAME; 68 68 int TYPE; 69 69 } port_t; 70 70 }}} 71 71 72 '''Avertissement''' : Bison émet un avertissement "type clash on default action" 72 '''Avertissement''' : Bison émet un avertissement "type clash on default action", lorsque 73 73 l'action de compilation n'est pas définie. En effet, il effectue par défaut 74 74 l'opération {{{{$$ = $1}}}}, et il proteste lorsque les deux tokens n'ont pas le même type. … … 95 95 96 96 Les différents objets dont vous aurez besoin sont: 97 * {{{lofig}}} pour représenter l' \emph{entity} et les \emph{component}s;98 * {{{losig}}} pour représenter les \emph{signal}s;99 * {{{loins}}} pour représenter les \emph{instances};100 * {{{locon}}} pour représenter les \emph{port}s;97 * {{{lofig}}} pour représenter l'{{{entity}}} et les {{{component}}}s; 98 * {{{losig}}} pour représenter les {{{signal}}}s; 99 * {{{loins}}} pour représenter les {{{instance}}}s; 100 * {{{locon}}} pour représenter les {{{port}}}s; 101 101 * {{{chain}}} permet de construire des listes chaînées. 102 102 … … 107 107 struct chain *NEXT; 108 108 void *DATA; 109 } chain_list; 110 109 } chain_list; 111 110 }}} 112 111 113 112 Les différentes fonctions dont vous aurez besoin sont: 114 * {{{mbkenv}}} pour initialiser {{{Alliance}}} 113 * {{{mbkenv}}} pour initialiser {{{Alliance}}}. 115 114 * {{{addlofig() }}} pour créer l'{{{entity}}} et les {{{component}}}s; 116 115 * {{{getlofig() }}} qui renvoie un pointeur vers une figure désignée par son nom;