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

⟦ca50eb279⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Regle, seg_046cf7, seg_046d3f, seg_046db0, seg_04842f

Derivation

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

E3 Source Code



with Lex;
with Liste_Des_Antecedents;
with Regles_Ou_Instructions;
with Follow;
with Synchro;
with Error;
with Traduction_Scenario;
with Condition;
package body Regle is

    procedure Sinon (Ok : out Boolean) is
        use Lex;
        Correct : Boolean;
    begin
        case Lex.Get_Token is
            when L_Sinon =>
                Traduction_Scenario.Break_Sinon;
                Lex.Next;
                Regles_Ou_Instructions.Parse (Correct);
            when others =>
                Correct := True;
        end case;
        Ok := Correct;
    end Sinon;

    procedure Parse (Ok : out Boolean) is
        use Lex;  
        Correct : Boolean;
        Value : Condition.T_Condition;
    begin  
        case Lex.Get_Token is

            when L_Si =>
                Lex.Next;  
                Traduction_Scenario.Make_Regle;
                Liste_Des_Antecedents.Parse (Correct, Value);
                Traduction_Scenario.Add_The_New_Condition (Value);
                if Correct then
                    if not (Lex.Get_Token = L_Alors) then
                        Synchro.Is_On (Error.Alors, Follow.Alors);
                    else  
                        Lex.Next;
                    end if;
                    Regles_Ou_Instructions.Parse (Correct);
                    if Correct then
                        Sinon (Correct);
                        if Correct then  
                            if Lex.Get_Token = L_Finsi then  
                                Lex.Next;
                                Correct := True;
                            else
                                Synchro.Is_On (Error.Finsi, Follow.Finsi);
                            end if;
                        else
                            Correct := True;
                        end if;
                    end if;  
                end if;
                Traduction_Scenario.Break_Finsi;
            when others =>
                Correct := False;

        end case;
        Ok := Correct;
    end Parse;

end Regle;



E3 Meta Data

    nblk1=4
    nid=2
    hdr6=6
        [0x00] rec0=26 rec1=00 rec2=01 rec3=048
        [0x01] rec0=17 rec1=00 rec2=03 rec3=012
        [0x02] rec0=0a rec1=00 rec2=04 rec3=000
        [0x03] rec0=0b rec1=00 rec2=03 rec3=000
    tail 0x21749a31286523c02d0c4 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 8f 80 0e 77 68 65 6e 20 6f 74 68 65 72  ┆      when other┆