Changes between Version 13 and Version 14 of CaoCourseTme3


Ignore:
Timestamp:
Feb 17, 2007, 2:47:41 PM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme3

    v13 v14  
    2020la construire en analysant la structure du fichier [wiki:CaoCourseTme3exemple exemple.vst].
    2121
    22 Vous pourrez également utiliser le fichier [wiki:CaoCourseTME3signal signal.vst] qui ne décrit pas un composant
    23 complet mais simplement une liste de déclarations de signaux.
     22Vous pourrez également utiliser le fichier [wiki:CaoCourseTME3signal signal.vst] qui ne décrit pas
     23un composant complet mais simplement une liste de déclarations de signaux.
    2424
    2525Ces deux fichiers sont disponibles dans le répertoire:
     
    6060On donne ci-dessous une partie du fichier ''vst.l'' que vous devez écrire. Comme vous pouvez le constater,
    6161ce fichier se termine par la définition du programme main() qui fait appel à la fonction yylex().
    62 La variable globale yyin est un pointeur sur le fichier à analyser.
     62La variable globale yyin est un pointeur sur le fichier à analyser. La variable globale yytext est un
     63pointeur sur la chaîne de caractère correspondant au token reconnu.
    6364{{{
    6465%{
    6566#include <string.h>
    6667#include <stdio.h>
    67 int yylineno = 1;             /* compteur de numero de ligne utilisé pour les messages d'erreur */
    68 #define YY_NO_UNPUT   /*
     68int yylineno = 1;             /* numero de ligne utilisé pour les messages d'erreur */
     69#define YY_NO_UNPUT 
    6970%}
    7071
    7172%%
    72 [ \t]              { /* Rien de rien */ }
     73[ \t]              {]                   
    7374\n                {yylineno++;}
    7475regle1          {printf("TOKEN1: %s\n", yytext);}
     
    100101La compilation du fichier ''vst.l'' s'effectue comme suit, à charge pour vous d'intégrer cela dans un Makefile:
    101102{{{
    102 flex -t vst.l > vst.yy.c
    103 gcc -Wall -Werror -o scanner vst.yy.c -lfl
     103$ flex -t vst.l > vst.yy.c
     104$ gcc -Wall -Werror -o scanner vst.yy.c -lfl
     105}}}
     106
     107Validez votre travail en lançant l'analyseur lexical sur les fichiers ''signal.vst'' et ''exemple.vst''.
     108{{{
     109$ scanner signal.vst
    104110}}}
    105111
     
    118124}}}
    119125  * Modifier la fonction main() pour qu'elle affiche le type des tokens reconnus. On rappelle que ''yylex'' retourne 0 lorsque la fin de fichier est lue.
     126  * Lancer cette nouvelle version de l'analyseur lexical sur les fichiers ''exemple.vst'' et ''signal.vst''.
    120127
    121128= Etape 3 : Analyseur syntaxique =
     
    131138(une liste de signaux dans notre cas).
    132139
    133   1. Définir les règles de grammaire correspondant a la déclaration des signaux en analysant le contenu du fichier ''signal.vst'' qui vous est fourni, et implanter ces règles dans le fichier ''vst.y''.
     140  1. Définir les règles de grammaire correspondant a la déclaration des signaux en analysant le contenu du fichier ''signal.vst'' qui vous est fourni, et implanter ces règles dans le fichier ''vst.y''. On définira successivement la règle décrivant un signal, puis la règle décrivant une liste de signaux.
    134141  1. Dans le fichier ''vst.y'', compléter la déclaration des différents token utilisés par le parser susceptibles d'être reconnus par le scanner.
    135142  1. Comme aucune action n'a été associée à chacune des règles de grammaire, vous utiliserez  le mode debug de '''bison''' pour vérifier que l'analyse se passe bien. Pour activer ce mode, il faut utiliser l'option -t sur la ligne de commande de '''bison''' et affecter une valeur non-nulle à la variable globale yydebug dans la fonction main().