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

⟦931c1bef5⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Parse, seg_02f363

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 Lex;
--use Lex;
with Text_Io;
package body Parse is

    procedure Error is
    begin
        Text_Io.Put ("Error ...");
        Text_Io.Put_Line (" ");
    end Error;


    procedure Value is
    begin
        case Lex.Get_Token is
            when (Lex.Id) =>
                Lex.Next;
            when Lex.Token'(Lex.Int) =>
                Lex.Next;  
            when Lex.Token'(Lex.Hour) =>
                Lex.Next;
            when others =>
                Error;
        end case;
    end Value;


    procedure Factor;


    procedure Term is
    begin
        Factor;
        while Lex.Current_Token_Is (Lex.'*') loop
            Lex.Next;
            Factor;
        end loop;
    end Term;


    procedure Expression is  
        use Lex;
    begin
        Term;
        while (Lex.Current_Token_In ((Lex.'+', Lex.'-'))) loop
            case Lex.Get_Token is
                when Lex.'+' =>
                    Lex.Next;
                    Term;
                when Lex.Token'(Lex.'-') =>
                    Lex.Next;
                    Term;  
                when others =>
                    Error;
            end case;
        end loop;  
    end Expression;



    procedure Factor is
        S1, S2 : Lex.Token;
    begin  
        S1 := Lex.Get_Token;
        S2 := Lex.'(';
        if Lex."=" (S1, Lex.'(') then
            Lex.Next;
            Expression;
            if (Lex.Get_Token = Lex.Token'(Lex.')')) then
                Lex.Next;
            else
                Error;
            end if;
        else
            Value;
        end if;
    end Factor;



    procedure Affect is
    begin
        if (Lex.Get_Token = Lex.Token'(Lex.Id)) then
            Lex.Next;
            if (Lex.Get_Token = Lex.Token'(Lex.Let)) then
                Lex.Next;
                Expression;
            else
                Error;
            end if;  
        else
            Error;
        end if;
    end Affect;

    procedure Liste is
    begin
        while (Lex.Get_Token /= Lex.Token'(Lex.'}')) loop
            Affect;
        end loop;
    end Liste;

    procedure Corps is
    begin
        if (Lex.Get_Token = Lex.Token'(Lex.'{')) then
            Lex.Next;
            Liste;
            if (Lex.Get_Token = Lex.Token'(Lex.'}')) then
                Lex.Next;
            else
                Error;
            end if;
        end if;
    end Corps;

    procedure Start is
    begin
        Lex.Next;
        Expression;

    end Start;

end Parse;

E3 Meta Data

    nblk1=4
    nid=2
    hdr6=6
        [0x00] rec0=31 rec1=00 rec2=01 rec3=012
        [0x01] rec0=29 rec1=00 rec2=04 rec3=01c
        [0x02] rec0=23 rec1=00 rec2=03 rec3=000
        [0x03] rec0=26 rec1=00 rec2=04 rec3=000
    tail 0x215284312848c789b49f6 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 0e 80 07 6f 6b 65 6e 20 69 73 07 00 01  ┆      oken is   ┆