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

⟦331d2dc7c⟧ Ada Source

    Length: 10240 (0x2800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Arguments, seg_037dce

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 Block_Class;
with Bounded_String;
with Custom;
with Errors;
with Trace;

package body Arguments is

    Valeur_Keyword : constant Scanner.Lexeme :=
       Bounded_String.Value ("VALEUR:", Custom.String_Max_Length);

    procedure Build_Id_List is
        Id_Lexeme : Scanner.Lexeme;
    begin  
        case Scanner.Get_Token is
            when Scanner.L_Id =>
                Id_Lexeme := Scanner.Get_Value;
                Scanner.Next_Token;
                Build_Id_List;
                Block_Class.Set_Keyword (Valeur_Keyword);
                Block_Class.Set_Argument (Id_Lexeme);
            when Scanner.L_Dot =>
                Scanner.Next_Token;
            when others =>
                raise Errors.Expecting_Other_Id_Or_Dot;
        end case;
    end Build_Id_List;

    procedure Build_Keyw_Id_List is
        Id_Lexeme, Keyw_Lexeme : Scanner.Lexeme;
    begin
        case Scanner.Get_Token is
            when Scanner.L_Keyw =>
                Keyw_Lexeme := Scanner.Get_Value;
                Scanner.Next_Token;
                case Scanner.Get_Token is
                    when Scanner.L_Id =>
                        Id_Lexeme := Scanner.Get_Value;
                        Scanner.Next_Token;
                        Build_Keyw_Id_List;
                        Block_Class.Set_Argument (Id_Lexeme);  
                        Block_Class.Set_Keyword (Keyw_Lexeme);
                    when others =>
                        raise Errors.Expecting_Id_After_Keyword;
                end case;
            when Scanner.L_Dot =>
                Scanner.Next_Token;
            when others =>
                raise Errors.Expecting_Other_Keyword_Or_Dot;
        end case;
    end Build_Keyw_Id_List;

    procedure Parse is
    begin
        Trace.Display ("parsing Arguments");
        case Scanner.Get_Token is
            when Scanner.L_Avec =>
                Block_Class.New_Arg_List;
                Block_Class.New_Symbols_Table;
                Scanner.Next_Token;
                case Scanner.Get_Token is
                    when Scanner.L_Id =>
                        Build_Id_List;
                    when Scanner.L_Keyw =>
                        Build_Keyw_Id_List;
                    when others =>
                        raise Errors.Expecting_Id_Or_Keyword;
                end case;
            when others =>
                null;
        end case;
    end Parse;

    function Is_First (T : Scanner.Token) return Boolean is
        use Scanner;
    begin
        return T = Scanner.L_Avec;
    end Is_First;

end Arguments;


E3 Meta Data

    nblk1=9
    nid=3
    hdr6=6
        [0x00] rec0=22 rec1=00 rec2=01 rec3=040
        [0x01] rec0=1a rec1=00 rec2=07 rec3=004
        [0x02] rec0=18 rec1=00 rec2=05 rec3=000
        [0x03] rec0=14 rec1=00 rec2=02 rec3=000
        [0x04] rec0=10 rec1=00 rec2=04 rec3=000
        [0x05] rec0=42 rec1=61 rec2=33 rec3=648
        [0x06] rec0=8d rec1=90 rec2=00 rec3=01f
        [0x07] rec0=e8 rec1=4c rec2=26 rec3=3c9
        [0x08] rec0=21 rec1=2f rec2=80 rec3=003
    tail 0x21531290884e58d3b29aa 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 04 03 fc 80 1d 65 78 65 6d 65 20 3a 20 54 69  ┆      exeme : Ti┆
  0x4: 0000  00 02 00 31 00 11 20 20 20 20 65 6e 64 20 49 73  ┆   1      end Is┆
  0x2: 0000  00 08 03 fc 80 02 3d 3e 02 00 31 20 20 20 20 20  ┆      =>  1     ┆
  0x8: 0000  00 06 03 80 80 1d 65 78 65 6d 65 20 3a 20 54 69  ┆      exeme : Ti┆
  0x6: 0000  00 09 03 fc 80 0f 20 77 68 65 6e 20 6f 74 68 65  ┆       when othe┆
  0x9: 0000  00 00 00 19 80 16 20 20 20 20 20 20 20 20 20 20  ┆                ┆