|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 2427 (0x97b)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
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;
end Arguments;