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

⟦10cbb0a6a⟧ Ada Source

    Length: 18432 (0x4800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Compiler_Token, seg_048bff

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 Text_Io;
--with Compiler_Token;
--use Compiler_Token;

package body Compiler_Token is

    Ok : constant Boolean := True;
    Pas_Ok : constant Boolean := False;
    Debug : constant Boolean := True;

    -- Regles: (Rule), (Firsts), (Follows)     etc......
    Regles : The_Rules (1 .. 39) :=
       ((R_Le_Jeu, (L_Personnage, L_Heros, L_Unk, L_Unk,
                    L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Personnages, (L_Personnage, L_Heros, L_Unk, L_Unk,
                             L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Piece, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Personnages_Bis, (L_Personnage, L_Heros, L_Epsilon, L_Unk,
                                 L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Piece, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Personne, (L_Personnage, L_Heros, L_Unk, L_Unk,
                      L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Personnage, L_Heros, L_Piece, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Pieces, (L_Piece, L_Unk, L_Unk, L_Unk, L_Unk,
                        L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Pieces_Bis, (L_Piece, L_Epsilon, L_Unk, L_Unk, L_Unk,
                            L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Piece, (L_Piece, L_Unk, L_Unk, L_Unk, L_Unk,
                   L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Piece, L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Choses, (L_Chose, L_Epsilon, L_Unk, L_Unk, L_Unk,
                        L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Chose, (L_Chose, L_Unk, L_Unk, L_Unk, L_Unk,
                   L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Etats, (L_Etat, L_Epsilon, L_Unk, L_Unk, L_Unk,
                       L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Etat, (L_Etat, L_Unk, L_Unk, L_Unk, L_Unk,
                  L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Autre_Etat, (L_Comma, L_Epsilon, L_Unk, L_Unk, L_Unk,
                        L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Positions, (L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
                           L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Acces, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Positions_Bis, (L_Position_De, L_Epsilon, L_Unk, L_Unk,
                               L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Acces, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Position, (L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
                      L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Position_De, L_Acces, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Acces, (L_Acces, L_Unk, L_Unk, L_Unk, L_Unk,
                       L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Compteur, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Acces_Bis, (L_Acces, L_Epsilon, L_Unk, L_Unk, L_Unk,
                           L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Compteur, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Acces, (L_Acces, L_Unk, L_Unk, L_Unk, L_Unk,
                   L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Acces, L_Compteur, L_Action, L_Situation,
          L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Mode, (L_Ferme, L_Ouvert, L_Unk, L_Unk, L_Unk,
                  L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Visible, L_Invisible, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Visibilite, (L_Visible, L_Invisible, L_Unk, L_Unk,
                        L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Est, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Compteurs, (L_Compteur, L_Epsilon, L_Unk, L_Unk,
                           L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Compteur, (L_Compteur, L_Unk, L_Unk, L_Unk, L_Unk,
                      L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Compteur, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Le_Scenario, (L_Action, L_Situation, L_Toujours_Faire, L_Epsilon,
                         L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test_Toujours, (L_Toujours_Faire, L_Epsilon, L_Unk, L_Unk,
                           L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Tests, (L_Action, L_Situation, L_Epsilon, L_Unk,
                       L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test, (L_Action, L_Situation, L_Unk, L_Unk,
                  L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test_Sup, (L_Et, L_Epsilon, L_Unk, L_Unk, L_Unk,
                      L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Action, (L_Action, L_Unk, L_Unk, L_Unk, L_Unk,
                    L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Situation, (L_Situation, L_Unk, L_Unk, L_Unk, L_Unk,
                       L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test_Action, (L_Id, L_Unk, L_Unk, L_Unk, L_Unk,
                         L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test_Action_Bis, (L_Id, L_Epsilon, L_Unk, L_Unk, L_Unk,
                             L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Un_Complement, (L_Id, L_Epsilon, L_Unk, L_Unk, L_Unk,
                           L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test_Situation, (L_Id, L_Unk, L_Unk, L_Unk, L_Unk,
                            L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Test_Situation_Bis, (L_Id, L_Equal, L_Less, L_Great, L_Dans,
                                L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Les_Effets, (L_Faire, L_Epsilon, L_Unk, L_Unk, L_Unk,
                        L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Des_Effets, (L_Incrementer, L_Decrementer, L_Valeur,
                        L_Afficher, L_Commentaire, L_Fin_De_Jeu,
                        L_Changer, L_Positionner, L_Unk, L_Unk),
         (L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Des_Effets_Bis, (L_Incrementer, L_Decrementer, L_Valeur,
                            L_Afficher, L_Commentaire, L_Fin_De_Jeu,
                            L_Changer, L_Positionner, L_Epsilon, L_Unk),
         (L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
        (R_Effet, (L_Incrementer, L_Decrementer, L_Valeur,
                   L_Afficher, L_Commentaire, L_Fin_De_Jeu,
                   L_Changer, L_Positionner, L_Unk, L_Unk),
         (L_Incrementer, L_Decrementer, L_Valeur, L_Afficher,
          L_Commentaire, L_Fin_De_Jeu, L_Changer, L_Positionner, L_Action,
          L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk)),
        (R_Une_Position, (L_Dans, L_Epsilon, L_Unk, L_Unk, L_Unk,
                          L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
         (L_Incrementer, L_Decrementer, L_Valeur, L_Afficher, L_Commentaire,
          L_Fin_De_Jeu, L_Changer, L_Positionner, L_Action, L_Situation,
          L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk)));

    function Is_First (Un_Token : Token; Une_Regle : Rule) return Boolean is
        Pos_Regle : Integer := Regles'First;
        Pos_Token : Integer := Regles (Regles'First).First_Tokens'First;
    begin

        -- on se place sur la ligne de la bonne regle
        while Une_Regle /= Regles (Pos_Regle).A_Rule loop
            Pos_Regle := Pos_Regle + 1;
        end loop;
        -- on se place sur la colonne du bon Token
        while (Un_Token /= Regles (Pos_Regle).First_Tokens (Pos_Token)) and
                 (Pos_Token /= Regles (Regles'First).First_Tokens'Last) and
                 (L_Unk /= Regles (Pos_Regle).First_Tokens (Pos_Token)) loop
            Pos_Token := Pos_Token + 1;
        end loop;
        if Un_Token = Regles (Pos_Regle).First_Tokens (Pos_Token) and
           L_Unk /= Regles (Pos_Regle).First_Tokens (Pos_Token) then
            if Debug then
                Text_Io.Put_Line
                   (Token'Image (Un_Token) & " est un FIRST de " &
                    Rule'Image (Une_Regle)); -- ********DEBUG************);
            end if;
            return Ok;
        else  
            if Debug then
                Text_Io.Put_Line
                   (Token'Image (Un_Token) & " n'est PAS un FIRST de " &
                    Rule'Image (Une_Regle)); -- *********DEBUG***********);
            end if;
            return Pas_Ok;
        end if;

    end Is_First;

    function Is_Follow (Un_Token : Token; Une_Regle : Rule) return Boolean is
        Pos_Regle : Integer := Regles'First;
        Pos_Token : Integer := Regles (Regles'First).Follow_Tokens'First;
    begin
        -- on se place sur la ligne de la bonne regle
        while Une_Regle /= Regles (Pos_Regle).A_Rule loop
            Pos_Regle := Pos_Regle + 1;
        end loop;

        -- on se place sur la colonne du bon Token
        while (Un_Token /= Regles (Pos_Regle).Follow_Tokens (Pos_Token)) and
                 (Pos_Token /= Regles (Regles'First).Follow_Tokens'Last) and
                 (L_Unk /= Regles (Pos_Regle).Follow_Tokens (Pos_Token)) loop
            Pos_Token := Pos_Token + 1;
        end loop;

        if Un_Token = Regles (Pos_Regle).Follow_Tokens (Pos_Token) and
           L_Unk /= Regles (Pos_Regle).Follow_Tokens (Pos_Token) then  
            if Debug then
                Text_Io.Put_Line
                   (Token'Image (Un_Token) & " est un FOLLOW de " &
                    Rule'Image (Une_Regle)); -- ********DEBUG************);
            end if;
            return Ok;
        else  
            if Debug then
                Text_Io.Put_Line
                   (Token'Image (Un_Token) & " n'est PAS un FOLLOW de " &
                    Rule'Image (Une_Regle)); -- ********DEBUG************);
            end if;
            return Pas_Ok;
        end if;

    end Is_Follow;

end Compiler_Token;

E3 Meta Data

    nblk1=11
    nid=8
    hdr6=20
        [0x00] rec0=18 rec1=00 rec2=01 rec3=008
        [0x01] rec0=00 rec1=00 rec2=10 rec3=04e
        [0x02] rec0=0f rec1=00 rec2=0f rec3=06a
        [0x03] rec0=10 rec1=00 rec2=0d rec3=02c
        [0x04] rec0=0f rec1=00 rec2=0c rec3=02c
        [0x05] rec0=0f rec1=00 rec2=03 rec3=030
        [0x06] rec0=0f rec1=00 rec2=0e rec3=05e
        [0x07] rec0=0f rec1=00 rec2=02 rec3=00a
        [0x08] rec0=0e rec1=00 rec2=05 rec3=08c
        [0x09] rec0=0f rec1=00 rec2=07 rec3=016
        [0x0a] rec0=0e rec1=00 rec2=09 rec3=032
        [0x0b] rec0=0e rec1=00 rec2=0b rec3=060
        [0x0c] rec0=14 rec1=00 rec2=06 rec3=048
        [0x0d] rec0=18 rec1=00 rec2=0a rec3=06c
        [0x0e] rec0=17 rec1=00 rec2=11 rec3=03a
        [0x0f] rec0=08 rec1=00 rec2=04 rec3=000
        [0x10] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x2154618b0865a84931f93 0x42a00088462060003
Free Block Chain:
  0x8: 0000  00 00 00 51 80 08 20 50 61 73 5f 4f 6b 3b 08 00  ┆   Q   Pas_Ok;  ┆