DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦0a827edaf⟧ Ada Source

    Length: 45056 (0xb000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Syntaxique_Analyzer, seg_03e7f0

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Lexical_Analyzer, Text_Io;


package body Syntaxique_Analyzer is

    use Lexical_Analyzer;



    -- ************  VIE DU MONDE  ************
  
    function Nom_Variable return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Identifier) then
            Lexical_Analyzer.Next;
            while (Lexical_Analyzer.Get_Token = De) loop
                Lexical_Analyzer.Next;
                if (Lexical_Analyzer.Get_Token = Identifier) then
                    Lexical_Analyzer.Next;
                else return (error_id_excpected);
                end if;
            end loop;
        else return(error_variable_neme_excepted);
        end if; 
         return(no_error);
    end Nom_Variable; 
    

    function Expression return code_error;
    --le corps est declare apres la 5ieme procedure ci-dessous


    function  Facteur return code_error is  
    the_error : code_error;
    begin
        case (Lexical_Analyzer.Get_Token) is
            when Left_Bracket =>
                Lexical_Analyzer.Next;
                the_error := Expression; 
                if (the_error = no_error) then
                    if (Lexical_Analyzer.Get_Token = Right_Bracket) then
                       Lexical_Analyzer.Next;
                    else return(error_right_bracket_excepted);
                    end if;
                else return (the_error);
                end if;

            when Non =>
                Lexical_Analyzer.Next;
                return (Facteur);

            when Identifier =>
                return (nom_Variable);

            when Complement_Or_Verbe | Complement1 | Complement2 =>
                Lexical_Analyzer.Next; 

            when Integer_Number | String_Of_Characters =>
                Lexical_Analyzer.Next;

            when others =>
                return(error_facteur_excepted);
        end case;  
        return(no_error);
    end Facteur;


    function Terme return code_error is 
    the_error : code_error;
    begin
        the_error := Facteur;
        if (the_error = no_error ) then
           while ((Lexical_Analyzer.Get_Token = Multiplication) or
               (Lexical_Analyzer.Get_Token = Division) or
               (Lexical_Analyzer.Get_Token = Et)) loop
              Lexical_Analyzer.Next;
              the_error := Facteur;
              if (the_error /= no_error) then return (the_error);
           end loop; 
        else return(no_error);
        end if;  
         return(no_error);
    end Terme;


    function Liste_Mots_Du_Vocabulaire return code_error is
    begin
        while ((Lexical_Analyzer.Get_Token = Complement_Or_Verbe) or
               (Lexical_Analyzer.Get_Token = Complement1) or
               (Lexical_Analyzer.Get_Token = Complement2)) loop
            Lexical_Analyzer.Next;
        end loop;
        return(no_error);
    end Liste_Mots_Du_Vocabulaire;


    function Signe return code_error is
    begin
        if ((Lexical_Analyzer.Get_Token = Plus) or
            (Lexical_Analyzer.Get_Token = Minus)) then
            Lexical_Analyzer.Next;
        end if;          
        return(no_error);
    end Signe;


    function Expression_Simple return code_error is 
    the_error : code_error;
    begin
        the_error := Signe;
        if (the_error = no_error) then
            the_error := Terme;
            if (the_error = no_error) then
                 while ((Lexical_Analyzer.Get_Token = Plus) or
                     (Lexical_Analyzer.Get_Token = Minus) or
                      (Lexical_Analyzer.Get_Token = Ou)) loop
                     Lexical_Analyzer.Next;
                     the_error := Terme; 
                     if (the_error /= no_error) then return (the_error);
                 end loop;
            else return(the_error);
            end if;
        else return(the_error);
        end if;
        return(no_error);
    end Expression_Simple;


    function Expression return code_error is
    the_error : code_error ;
    begin
        the_error := Expression_Simple;
        if (the_error = no_error) then
            while ((Lexical_Analyzer.Get_Token /= Devient) and
                   (Lexical_Analyzer.Get_Token /= Complement_Or_Verbe) and
                   (Lexical_Analyzer.Get_Token /=  Complement1) and 
                    (Lexical_Analyzer.Get_Token /=  Complement2))loop
                 case (Lexical_Analyzer.Get_Token) is

                    when Equal | Less | Less_Equal | Different |
                         More | More_Equal | Dans =>
                         Lexical_Analyzer.Next;
                         the_error := Expression_Simple;
                         if (the_error /= no_error) then return 
                         
                         
                         bug dans expression

                    when others =>
                    null;
                    -- erreur une expresssion doit etre du type....
                    -- donner toute les formes des expression (math et logique)

                  end case;
             end loop;

            case (Lexical_Analyzer.Get_Token) is
                when Devient =>
                    Lexical_Analyzer.Next;
                    Expression_Simple;

                when First_Un_Mot_Du_Vocabulaire =>
                --Complement_Or_Verbe | Complement1 | Complement2 =>
                Liste_Mots_Du_Vocabulaire;

                 when others =>
                   null;
                -- erreur  une expresssion doit etre du type....
                -- donner toute les formes des expression (math et logique)
            end case;
         else return(the_error);
         end if;
         return(no_error);
    end Expression;


    function Liste_Actions return code_error;
    -- le corps de cette function est declare au dessus de la function vie_du_monde


    function Clause_Sinon return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Sinon) then
            Liste_Actions;
        end if;
    end Clause_Sinon;


    function Action_Conditionnelle return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Si) then
            Lexical_Analyzer.Next;
            Expression;
            if (Lexical_Analyzer.Get_Token = Alors) then
                Lexical_Analyzer.Next;
                Liste_Actions;
                Clause_Sinon;
                if (Lexical_Analyzer.Get_Token = Fsi) then
                    Lexical_Analyzer.Next;
                    --else erreur le test conditionnel doit etre termine par fsi
                end if;
                -- else erreur il faut declarer un alors ici
            end if;
        end if;
    end Action_Conditionnelle;


    --function nom_variable est declaree au debut de ce fichier


    function Un_Mot_Du_Vocabulaire return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = First_Un_Mot_Du_Vocabulaire) then
            Lexical_Analyzer.Next;
            --else erreur il faut declarer un mot du voca, sachant que c'est '...' ou comp1 ou comp2
        end if;
    end Un_Mot_Du_Vocabulaire;


    function Liste_Arguments return code_error  is
    begin
        if (Lexical_Analyzer.Get_Token = First_Argument) then
            Lexical_Analyzer.Next;
            -- else erreur il faut au moins un argument
        end if;
        while (Lexical_Analyzer.Get_Token = First_Argument) loop
            Lexical_Analyzer.Next;
        end loop;
    end Liste_Arguments;


    function Appel return code_error is
    begin
        case (Lexical_Analyzer.Get_Token) is

            when Ecrire =>
                Lexical_Analyzer.Next;
                Liste_Arguments;

            when Retirer =>
                Lexical_Analyzer.Next;
                Un_Mot_Du_Vocabulaire;
                if (Lexical_Analyzer.Get_Token = A) then
                    Lexical_Analyzer.Next;
                    Nom_Variable;
                    --else erreur : il manque la particule "A" : donner 1 exemple de syntaxe
                end if;

            when Ajouter =>
                Lexical_Analyzer.Next;
                Un_Mot_Du_Vocabulaire;
                if (Lexical_Analyzer.Get_Token = A) then
                    Lexical_Analyzer.Next;
                    Nom_Variable;
                    --else erreur : il manque la particule "A" : donner 1 exemple de syntaxe
                end if;

            when Vider =>
                Lexical_Analyzer.Next;
                Nom_Variable;

            when others =>
                null;
                -- erreur : les operations predefinies sont ...
        end case;
    end Appel;


    function Action return code_error is
    begin

        case (Lexical_Analyzer.Get_Token) is

            when (First_Action_Conditionnelle) =>
                Action_Conditionnelle;  
                if (Lexical_Analyzer.Get_Token = Terminator) then
                    Lexical_Analyzer.Next;
                    --else erreur il manque un . pour finir cette ligne d'instruction
                end if;

            when (First_Appel) =>
                Appel;  
                if (Lexical_Analyzer.Get_Token = Terminator) then
                    Lexical_Analyzer.Next;
                    --else erreur il manque un . pour finir cette ligne d'instruction
                end if;

            when (First_Expression) =>
                Expression;
                if (Lexical_Analyzer.Get_Token = Terminator) then
                    Lexical_Analyzer.Next;
                    --else erreur il manque un . pour finir cette ligne d'instruction
                end if;

            when others =>
                null;
                -- erreur il faut definir une action sachant qu'1 action peut etre
                -- 1 action conditionnelle, une utilisation d'une operation predefinie, ou une
                -- expression

        end case;
    end Action;


    function Liste_Actions return code_error is
    begin
        the_error := Action.parse; 
        if (the_error = error.no) then
          while (action.is_First(Lexical_Analyzer.Get_Token) loop
            the_error := Action;
            if (the_error /= error.no) then
                  return(the_error);
            end if;
          end loop;
        else return(the_error);
        end if;
        return(error.no);
    end Liste_Actions;


    function Vie_Du_Monde return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Vie) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Est) then
                Lexical_Analyzer.Next;
                return (Liste_Actions.parse);
            else return (error.est_expected);
            end if;
         else return(error.decl_vie_expected);
         -- ou verifier qu'il n'y a pas erreur de declaration de la section precedent vie est.
        end if;
    end Vie_Du_Monde;


               
    
    
 --IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII   
    
    
    

    -- ............. Defintion_Vocabulaire  .............

    function Liste_Id return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Identifier) then
            Lexical_Analyzer.Next;
            while (Lexical_Analyzer.Get_Token = Identifier) loop
                Lexical_Analyzer.Next;
            end loop;
            --else erreur, il faut au moins declarer un mot du langage lorsque vous declarer la liste de verbes ou de complements
        end if;
    end Liste_Id;


    function Definition_Complements return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Complements) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Sont) then
                Lexical_Analyzer.Next;
                Liste_Id;
                if (Lexical_Analyzer.Get_Token = Terminator) then
                    Lexical_Analyzer.Next;
                    --else erreur, il faut au terminer la declaration de la liste des complements par un .
                end if;
                -- else  erreur le mots cle complements doit etre suivit de sont pour declarer la liste de complements
            end if;
            --else ok car liste de complements est optionnelle
        end if;
    end Definition_Complements;


    function Definition_Verbes return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Verbes) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Sont) then
                Lexical_Analyzer.Next;
                Liste_Id;
                if (Lexical_Analyzer.Get_Token = Terminator) then
                    Lexical_Analyzer.Next;
                    --else erreur, il faut au terminer la declaration de la liste de verbes par un .
                end if;
                -- else  erreur le mots cle verbes doit etre suivit de sont pour declarer la liste de verbes
            end if;
            --else ok car liste de verbes est optionnelle
        end if;
    end Definition_Verbes;


    function Definition_Vocabulaire return code_error is
    begin
        Definition_Verbes;
        Definition_Complements;
    end Definition_Vocabulaire;


    -- ............. Initialisation simple .............

    function Affectation_Ou_Appel return code_error is
    the_error : code_error;
    begin
        if (Lexical_Analyzer.Get_Token = First_Appel) then
            the_error := Appel;
            if (the_error = ERROR.NO) then
               if (Lexical_Analyzer.Get_Token = Terminator) then
                    Lexical_Analyzer.Next;
               else return(error_point_excepted);
               end if;
             else return(the_error);
             end if;

        else
            if (Lexical_Analyzer.Get_Token = First_Expression) then
                the_error := Expression;
                if (the_error = ERROR.NO) then
                   if (Lexical_Analyzer.Get_Token = Terminator) then
                       Lexical_Analyzer.Next;
                    else return(error_point_excepted);
                    end if;
                 else return(the_error);
             else return(error_intitialisation_false);
            end if;
        end if; 
        return(no_error);
    end Affectation_Ou_Appel;


    function Liste_Affectations return code_error  is  
    the_error : code_error;
    begin  
        the_error := Affectation_Ou_Appel;  
        if (the_error = no_error) then 
            while (Lexical_Analyzer.Get_Token = ecrire) or (Lexical_Analyzer.Get_Token = retirer) 
                  or (Lexical_Analyzer.Get_Token = ajouter) or (Lexical_Analyzer.Get_Token = vider) or 
                  (Lexical_Analyzer.Get_Token = quitter) or (Lexical_Analyzer.Get_Token = plus) or
                  (Lexical_Analyzer.Get_Token = ...)loop  
                 the _error := Affectation_Ou_Appel;
                 if (the_error /= no_error) then return(the_error);
             end loop;
         else return(the_error);
         end if;
          return(no_error);
    end Liste_Affectations;


    function Intialisation_Simple return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Initialisations) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Sont) then
                Lexical_Analyzer.Next;
                return (Liste_Affectations);
            else return (error_sont_excepted);
            end if;
        else return (no_error);
        end if;
    end Intialisation_Simple;



    -- ............. Definition des variables .............

    function Liste_Valeurs return code_error;

    function Valeur return code_error is
    the_error : code_error;
    begin
        case (Lexical_Analyzer.Get_Token) is

            when Left_Bracket =>
                Lexical_Analyzer.Next;
                the_error := Liste_Valeurs;
                if (the_error = no_error) then
                   if (Lexical_Analyzer.Get_Token = Right_Bracket) then
                       Lexical_Analyzer.Next;
                   else return (valeur);                
                   end if; 
                 else return(the_error);

            when String_Of_Characters | Integer_Number =>
                Lexical_Analyzer.Next; 

            when others => 
                return(error_decl_valeur_excepted);
        end case;
         return(no_error);
    end Valeur;


    function Liste_Valeurs return code_error is  
    the_error : code_error;
    begin
        the_error := Valeur;  
        if (the_error = no_error) then
           while (Lexical_Analyzer.Get_Token = Left_Bracket) or
                 (Lexical_Analyzer.Get_Token = String_Of_Characters) or
                 (Lexical_Analyzer.Get_Token = Integer_Number) loop
                 the _error := Valeur; 
                 if (the_error /= no_error) then return(the_error); end if;
            end loop;
        else return(the_error); 
        end if;
        return(no_error);
    end Liste_Valeurs;


    function Initialisation_Par_Agregats return code_error is 
     the_error : code_error;
    begin
        if (Lexical_Analyzer.Get_Token = Left_Bracket) then
            Lexical_Analyzer.Next;
            the_error := Liste_Valeurs;
            if (the_error = no_error) then
              if (Lexical_Analyzer.Get_Token = Right_Bracket) then
                  Lexical_Analyzer.Next;
              else return(error_right_bracket_excepted);
               end if;
            else return (the_error);
            end if;
        else return (no_error);
        end if; 
         return(no_error);
    end Initialisation_Par_Agregats;


    function Nom_Famille return code_error  is
    begin
        case (Lexical_Analyzer.Get_Token) is

            when Identifier =>  
                Lexical_Analyzer.Next;

            when Entier | Chaine =>
                Lexical_Analyzer.Next;

            when others => 
                 return(error_type_unknown);
        end case;  
        return(no_error);
    end Nom_Famille;


    function Variable return code_error is
    the_error : code_error;
    begin
        if (Lexical_Analyzer.Get_Token = Identifier) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Comme) then
                Lexical_Analyzer.Next;
                the_error := Nom_Famille;   
                if (the_error = no_error) then 
                   the_error := Initialisation_Par_Agregats; 
                   if (the_error = no_error) then
                       if (Lexical_Analyzer.Get_Token = Terminator) then
                           Lexical_Analyzer.Next; 
                       else return (error_point_excepted);
                       end if; 
                   else return (the_error);
                   end if;
                else return (the_error); 
                end if;
            else return(error_comme_excepted);
            end if;
        else return(error_decl_variable_excepted);
        end if; 
       return(no_error)
    end Variable;


    function Liste_Variables return code_error is  
    the_error : code_error;
    begin
        the_error := Variable;
        if (the_error = no_error) then
            while (Lexical_Analyzer.Get_Token = Identifier) loop
                the_error := Variable;  
                if (the_error /= no_error) then
                    return (the_error);
                end if;
            end loop;
        else return (the_error);
        end if; 
        return(no_error);
    end Liste_Variables;


    function Definition_Variables return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Variables) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Sont) then
                Lexical_Analyzer.Next;
                return (Liste_Variables);  
            else return (error_sont_excepted);
            end if;
        else return(no_error);
        end if; 
    end Definition_Variables;



    -- ............. Definition des Types .............

    function Mot_Cle_Chaine_Ou_Entier return code_error is
    begin
        if (Lexical_Analyzer.Get_Token = Chaine) or
           (Lexical_Analyzer.Get_Token = Entier) then
            Lexical_Analyzer.Next;
        else return(error_decl_type_simple_excepted); 
        end if;   
        return(no_error)
    end Mot_Cle_Chaine_Ou_Entier;



    function Champs  return code_error is
        Token : Tokens;
        the_error : code_error;
    begin
        Token := Lexical_Analyzer.Get_Token;
        case (Token) is

            when Ensemble =>
                Lexical_Analyzer.Next;
                if (Lexical_Analyzer.Get_Token = De) then
                    Lexical_Analyzer.Next;
                    if (Lexical_Analyzer.Get_Token = Identifier) then
                        Lexical_Analyzer.Next; 
                    else return(error_id_excepted);
                    end if;
                else return(error_de_excepted);
                end if;

            when Identifier =>
                Lexical_Analyzer.Next;
                if (Lexical_Analyzer.Get_Token = Left_Bracket) then
                    Lexical_Analyzer.Next;
                    the_error := Mot_Cle_Chaine_Ou_Entier;
                    if (the_error = no_error) then
                       if (Lexical_Analyzer.Get_Token = Right_Bracket) then
                           Lexical_Analyzer.Next;
                        else return(error_right_bracket_excepted);
                       end if;
                    else return(the_error);
                    end if;
                else  return(error_left_bracket_excepted);
                end if;

            when Heritage =>
                Lexical_Analyzer.Next;
                if (Lexical_Analyzer.Get_Token = De) then
                    Lexical_Analyzer.Next;
                    if (Lexical_Analyzer.Get_Token = Identifier) then
                        Lexical_Analyzer.Next; 
                    else return(error_id_excepted);
                    end if;
                else return(error_de_excepted);
                end if;

            when others => 
                 return(error_decl_champs_excepted);
        end case;
        return(no_error)
    end Champs;


    function Liste_Champs return code_error is 
    the_error : code_error;
    begin
        the _error := Champs;  
        if (the_error = no_error) then
            while (Lexical_Analyzer.Get_Token = Et) loop
               Lexical_Analyzer.Next;  
               the_error := Champs;
               if (the_error /= no_error) then
                 return (the_error);  
                 end if;
            end loop;
        else return (the_error);
        end if;  
        return(no_error);
    end Liste_Champs;


    function Famille return code_error is 
    the_error : code_error;
    begin  
        if (Lexical_Analyzer.Get_Token = Identifier) then  
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Avec) then
                Lexical_Analyzer.Next;
                the_error := Liste_Champs; 
                if (the_error = no_error) then 
                   if (Lexical_Analyzer.Get_Token = Terminator) then
                       Lexical_Analyzer.Next; 
                    else return(error_point_excepted);
                   end if;
                else return (the_error);
                end if;
            else return (error_avec_excepted);
            end if;
         else return(error_decl_famille_excepted);
        end if;                               
        return(no_error);
    end Famille;


    function Liste_Familles return code_error is 
    the_error : code_error;
    begin  
        the_error := Famille;
        if (the_error = no_error) then
           while (Lexical_Analyzer.Get_Token = Identifier) loop   
               the_error := Famille;
               if (the_error /= no_error) then
                   return(the_error);
                end if;
           end loop; 
        else return (the_error);
        end if;      
        return(no-error);
    end Liste_Familles;


    function Definition_Types return code_error is 
    begin
        if (Lexical_Analyzer.Get_Token = Familles) then
            Lexical_Analyzer.Next;
            if (Lexical_Analyzer.Get_Token = Sont) then
                Lexical_Analyzer.Next;
                return (Liste_Familles);
            else return (error_sont_excpected);
            end if;
        else return(no_error);
        end if;            
    end Definition_Types;




    -- ************  DEDFINITION DU MONDE  ************

    function Definition_Du_Monde  return code_error is
    the_error : code_error;  
    begin
        the_error := Definition_Types;
        if (the_error = no_error) then
           the_error := Definition_Variables;
           if (the_error = no_error) then
               the_error := Initialisation_Simple;
               if (the_error = no_error) then
                    return(Defintion_Vocabulaire)
                end if;
            end if; 
         end if;
    end Definition_Du_Monde;



    -- ************  DEDFINITION DU SCENARIO  ************

    function  Scenario return code_error is 
    the_error : code_error;    
    begin 
        the_error :=Definition_Du_Monde ;
        if (the_error = no_error) then
            return (Vie_Du_Monde);
        else return (the_error);   
        end if;
    end Scenario;


-- ******************************************************************
-- **                            PARSE                             **
-- ******************************************************************


    function Parse (File_Name : String) return code_error is
    the _error : code_error;
    begin
        Lexical_Analyzer.Open (File_Name);
        Lexical_Analyzer.Next;  
        the_error := scenario;
        Lexical_Analyzer.close (File_Name);
        return (the_error);
    end Parse;



end Syntaxique_Analyzer;

E3 Meta Data

    nblk1=2b
    nid=1a
    hdr6=38
        [0x00] rec0=25 rec1=00 rec2=01 rec3=036
        [0x01] rec0=1d rec1=00 rec2=09 rec3=00e
        [0x02] rec0=1d rec1=00 rec2=15 rec3=02a
        [0x03] rec0=1d rec1=00 rec2=24 rec3=02c
        [0x04] rec0=1a rec1=00 rec2=26 rec3=006
        [0x05] rec0=1d rec1=00 rec2=0b rec3=00c
        [0x06] rec0=1e rec1=00 rec2=14 rec3=03e
        [0x07] rec0=20 rec1=00 rec2=23 rec3=02a
        [0x08] rec0=1d rec1=00 rec2=0c rec3=028
        [0x09] rec0=1a rec1=00 rec2=08 rec3=014
        [0x0a] rec0=1f rec1=00 rec2=22 rec3=02a
        [0x0b] rec0=1d rec1=00 rec2=21 rec3=022
        [0x0c] rec0=19 rec1=00 rec2=12 rec3=054
        [0x0d] rec0=1c rec1=00 rec2=06 rec3=01c
        [0x0e] rec0=1b rec1=00 rec2=27 rec3=050
        [0x0f] rec0=16 rec1=00 rec2=11 rec3=018
        [0x10] rec0=1f rec1=00 rec2=25 rec3=066
        [0x11] rec0=1e rec1=00 rec2=13 rec3=020
        [0x12] rec0=22 rec1=00 rec2=20 rec3=04a
        [0x13] rec0=1b rec1=00 rec2=1b rec3=010
        [0x14] rec0=1f rec1=00 rec2=0e rec3=064
        [0x15] rec0=1e rec1=00 rec2=10 rec3=054
        [0x16] rec0=15 rec1=00 rec2=1f rec3=05e
        [0x17] rec0=22 rec1=00 rec2=03 rec3=034
        [0x18] rec0=1b rec1=00 rec2=18 rec3=01a
        [0x19] rec0=21 rec1=00 rec2=04 rec3=028
        [0x1a] rec0=21 rec1=00 rec2=1e rec3=034
        [0x1b] rec0=07 rec1=00 rec2=1d rec3=000
        [0x1c] rec0=00 rec1=00 rec2=00 rec3=000
        [0x1d] rec0=04 rec1=00 rec2=00 rec3=000
        [0x1e] rec0=00 rec1=10 rec2=00 rec3=000
        [0x1f] rec0=00 rec1=00 rec2=00 rec3=000
        [0x20] rec0=8c rec1=00 rec2=00 rec3=000
        [0x21] rec0=00 rec1=00 rec2=15 rec3=7cf
        [0x22] rec0=00 rec1=00 rec2=00 rec3=000
        [0x23] rec0=00 rec1=00 rec2=00 rec3=01a
        [0x24] rec0=dc rec1=fe rec2=42 rec3=400
        [0x25] rec0=00 rec1=01 rec2=00 rec3=6b7
        [0x26] rec0=3f rec1=d0 rec2=a0 rec3=000
        [0x27] rec0=00 rec1=40 rec2=10 rec3=5f8
        [0x28] rec0=36 rec1=9c rec2=a2 rec3=650
        [0x29] rec0=00 rec1=09 rec2=82 rec3=0bf
        [0x2a] rec0=06 rec1=d3 rec2=97 rec3=3c5
    tail 0x2153787108600914deab4 0x42a00088462060003
Free Block Chain:
  0x1a: 0000  00 0a 03 fc 80 11 7a 65 72 2e 47 65 74 5f 54 6f  ┆      zer.Get_To┆
  0xa: 0000  00 1c 03 fc 00 22 20 20 20 20 65 6e 64 20 4c 69  ┆     "    end Li┆
  0x1c: 0000  00 17 03 f9 80 0b 28 6e 6f 5f 65 72 72 6f 72 29  ┆      (no_error)┆
  0x17: 0000  00 19 03 fc 80 26 20 20 63 61 73 65 20 28 4c 65  ┆     &  case (Le┆
  0x19: 0000  00 28 03 fc 00 00 00 00 37 20 20 20 20 66 75 6e  ┆ (      7    fun┆
  0x28: 0000  00 02 00 26 80 20 20 64 65 63 6c 61 72 65 65 20  ┆   &   declaree ┆
  0x2: 0000  00 29 03 fc 80 4d 20 6c 65 20 63 6f 72 70 73 20  ┆ )   M le corps ┆
  0x29: 0000  00 0d 00 15 80 09 64 65 5f 65 72 72 6f 72 3b 09  ┆      de_error; ┆
  0xd: 0000  00 2a 03 fc 80 02 20 7c 02 00 30 20 20 20 20 20  ┆ *     |  0     ┆
  0x2a: 0000  00 05 00 39 80 36 20 20 20 20 20 20 20 20 20 20  ┆   9 6          ┆
  0x5: 0000  00 07 03 fc 80 17 74 65 5f 4d 6f 74 73 5f 44 75  ┆      te_Mots_Du┆
  0x7: 0000  00 0f 02 7a 00 3f 20 20 20 20 20 20 20 20 77 68  ┆   z ?        wh┆
  0xf: 0000  00 2b 03 f9 80 22 73 65 20 28 4c 65 78 69 63 61  ┆ +   "se (Lexica┆
  0x2b: 0000  00 16 00 38 80 1c 46 61 63 74 65 75 72 20 72 65  ┆   8  Facteur re┆
  0x16: 0000  00 00 00 27 80 24 72 65 75 72 20 3a 20 6d 61 6e  ┆   ' $reur : man┆