Changes between Version 2 and Version 3 of CaoCourseTme4


Ignore:
Timestamp:
Feb 25, 2007, 6:53:00 PM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme4

    v2 v3  
    11{{{
    22#!html
    3 <h1>TME4 : Ecriture d'un parser lofig</h1>
     3<h1>TME4 : Ecriture d'un parser ''.vst'' vers ''lofig''</h1>
    44}}}
    55[[PageOutline]]
     
    77= Introduction =
    88
    9 Ce TME constitue la suite du TME3 sur lex et yacc.  Cette seconde partie a pour but de
    10 vous faire construire en mémoire la structure de données \emph{lofig} présentée en cours.
     9Ce TME constitue la suite du TME3 sur ''flex'' et ''bison''.  Cette seconde partie a pour but de
     10vous faire construire en mémoire la structure de données ''lofig'' présentée en cours.
    1111A chaque règle importante de la grammaire correspond la création d'un objet de la
    12 structure de données \emph{lofig}.
     12structure de données ''lofig''.
    1313
    14 Nous faisons l'hypothèse que le scanner et le parser du TME4 sont achevés.
    15 Vous êtes invités à utiliser vos propres fichiers vst.l et vst.y, mais vous pouvez également
    16 utiliser les fichiers vst.l et vst.y fournis avec ce TME. ces fichiers contiennent
    17 cependant quelques erreurs que vous devrez corriger afin de vous obliger à les comprendre.
     14Nous faisons l'hypothèse que l'analyseur lexical et l'analyseur syntaxique réalisés
     15dans le TME3 sont achevés et opérationnels.
     16Vous êtes donc  invités à utiliser vos propres fichiers vst.l et vst.y, mais vous pouvez également
     17utiliser les fichiers vst.l et vst.y fournis avec ce TME. '''Attention''' : ces fichiers contiennent
     18délibérement quelques erreurs que vous devrez corriger, afin de vous obliger à les comprendre.
    1819
    19 = Etape 1 : Communication entre le scanner et le parser =
     20= Etape 1 : Communication entre le scaner et le parser =
    2021
    21 Dans le TME3, portant sur l'analyse syntaxique du format .vst, le scanner transmettait au parser
     22Dans le TME3, portant sur l'analyse syntaxique du format ".vst", le scaner transmettait au parser
    2223des numéros de tokens définissant le type des tokens reconnus. cela a permis de vérifier que
    2324les règles de grammaire étaient correctement écrites, et que les constructions grammaticales
    2425du format .vst étaient correctement reconnues.
    2526
    26 Chaque fois que le scanner reconnait un token, il peut également transmettre au parser
     27Chaque fois que le scaner reconnait un token, il peut également transmettre au parser
    2728une valeur associée à ce token, en utilisant la variable globale yylval.
    2829Le type de la valeur associée à un token peut être différent suivant le token
     
    3132le type de la valeur qui sera stockée dans la variable yylval.
    3233
    33 Dans cette étape, on ne va pas directement construire la structure de données \emph{lofig},
    34 mais on va se contenter d'introduire dans le parser les \emph{actions de compilation} lui
    35 permettant d'afficher sur le terminal (en utilisant printf) le texte correspondant aux différentes
    36 constructtions grammaticales reconnues. Dans cette première étape, on se limitera même
    37 à afficher les constructions grammaticales correspondant à la partie {{{entity}}} du
    38 fichier analysé. Le but ici est simplement de vérifier le mécanisme de transmission
    39 de valeurs entre le scanner et le parser.
     34Dans cette étape, on ne va pas directement construire la structure de données ''lofig''.
     35On va se contenter d'introduire dans le parser les ''actions de compilation'' lui
     36permettant d'afficher sur le terminal, en utilisant la fonction printf(), le texte
     37correspondant aux différentes constructtions grammaticales reconnues.
     38Dans cette première étape, on se limitera même à afficher les constructions grammaticales
     39correspondant à la partie {{{entity}}} du fichier analysé. Le but ici est simplement de vérifier
     40le mécanisme de transmission de valeurs entre le scaner et le parser.
    4041
    4142Il faut pour cela modifier les deux fichiers vst.l et vst.y.
     
    4344 *  Déterminez quels tokens retournent une valeur significative
    4445    (les tokens n'ont pas tous une valeur).  Dans le fichier vst.y, typez
    45     les tokens qui doivent l'être en utilisant la construction \verb+%token
    46     <type> TOKEN+.
    47  *  On rappelle que pour chaque token reconnu par le parser, la chaîne de caractères
     46    les tokens qui doivent l'être en utilisant la construction
     47{{{
     48%token
     49    <type> TOKEN
     50}}}
     51 *  On rappelle que pour chaque token reconnu par le scaner, la chaîne de caractères
    4852    correspondant à ce token est stockée dans un buffer pointé par la variable
    4953    {{{yytext}}}, et que le scanner réutilise ce même buffer pour chaque nouveau token.