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

⟦03ccd8e5b⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Test_Scanner, seg_037e06

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 Bounded_String;
with Msg_Report;
with Scanner;
with Symbol_Table;
with Object;

procedure Test_Scanner is

    use Scanner;
    use Object;

    Num_Value : Integer := 1;

    Receive_Token : Scanner.Token;
    Receive_Value : Scanner.B_String;

    Name, Ident : Scanner.B_String;
    Content : Object.Reference;


begin
    Msg_Report.Tracing_On;
    Scanner.Open ("lex");
    Symbol_Table.Create;

    Scanner.Next;
    Receive_Token := Scanner.Symbol;
    Bounded_String.Copy (Receive_Value, Scanner.Value);
    Msg_Report.Continue ("Value : " & Bounded_String.Image (Receive_Value));

    while Receive_Token /= L_Eof loop

        case Receive_Token is
            when L_Identifier =>
                if Scanner.Value = "mettrei" then
                    Content := Object.Create (C_Integer, 20);
                    Bounded_String.Copy (Ident, "i");
                    Symbol_Table.Set_Info (Ident, Content);

                else
                    Bounded_String.Copy (Ident, Scanner.Value);
                    Symbol_Table.Insert (Ident, Object.Void_Reference);

                    if Scanner.Value = "i" then
                        Content := Object.Create (C_Integer, Num_Value);
                    end if;
                    if Scanner.Value = "chaine" then
                        Content := Object.Create (C_String, Num_Value);
                    end if;
                    if Scanner.Value = "tortue" then
                        Content := Object.Create (C_Turtle, Num_Value);
                    end if;
                    if Scanner.Value = "j" then
                        Content := Object.Create (C_Integer, Num_Value);
                    end if;
                    if Scanner.Value = "k" then
                        Content := Object.Create (C_Integer, Num_Value);
                    end if;

                    Symbol_Table.Set_Info (Ident, Content);

                    Num_Value := Num_Value + 1;
                end if;
            when L_Open_Bracket =>
                Symbol_Table.New_Enter (Name);

            when L_Close_Bracket =>
                Symbol_Table.Leave;

            when others =>
                null;

        end case;

        Scanner.Next;
        Receive_Token := Scanner.Symbol;
        Bounded_String.Copy (Receive_Value, Scanner.Value);
        Msg_Report.Continue ("Value : " & Bounded_String.Image (Receive_Value));

    end loop;

    Symbol_Table.Image_Table;

    Msg_Report.Information ("C'EST FINI !!!");

end Test_Scanner;

E3 Meta Data

    nblk1=4
    nid=0
    hdr6=8
        [0x00] rec0=29 rec1=00 rec2=01 rec3=018
        [0x01] rec0=01 rec1=00 rec2=02 rec3=072
        [0x02] rec0=17 rec1=00 rec2=03 rec3=008
        [0x03] rec0=18 rec1=00 rec2=04 rec3=000
    tail 0x2153130b884e58d3407a6 0x42a00088462060003