Changes between Version 10 and Version 11 of CaoCourseTme4


Ignore:
Timestamp:
Mar 7, 2007, 1:59:51 PM (18 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme4

    v10 v11  
    3737On va se contenter d'introduire dans le parser les ''actions de compilation'' lui
    3838permettant d'afficher sur le terminal, en utilisant la fonction printf(), le texte
    39 correspondant aux différentes constructtions grammaticales reconnues.
     39correspondant aux différentes constructions grammaticales reconnues.
    4040On se limitera même à afficher les constructions grammaticales
    4141correspondant à la partie {{{entity}}} du fichier analysé, puisque le but est simplement de vérifier
     
    4848%token  <type> TOKEN
    4949}}}
    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.
     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.
    5151 *  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.
    5252{{{
     
    6767        char            *NAME;
    6868        int             TYPE;
    69         } port_t;
     69} port_t;
    7070}}}
    7171
    72 '''Avertissement''' : Bison émet un avertissement "type clash on default action" , lorsque
     72'''Avertissement''' : Bison émet un avertissement "type clash on default action", lorsque
    7373l'action de compilation n'est pas définie. En effet, il effectue par défaut
    7474l'opération {{{{$$ = $1}}}}, et il proteste lorsque les deux tokens n'ont pas le même type.
     
    9595
    9696Les 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;
    101101 *  {{{chain}}} permet de construire des listes chaînées.
    102102
     
    107107                 struct chain     *NEXT;
    108108                 void             *DATA;
    109               } chain_list;
    110 
     109 } chain_list;
    111110}}}
    112111
    113112Les différentes fonctions dont vous aurez besoin sont:
    114  * {{{mbkenv}}} pour initialiser {{{Alliance}}} .
     113 * {{{mbkenv}}} pour initialiser {{{Alliance}}}.
    115114 * {{{addlofig() }}} pour créer l'{{{entity}}} et les {{{component}}}s;
    116115 * {{{getlofig() }}} qui renvoie un pointeur vers une figure désignée par son nom;