|
|
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: 2511 (0x9cf)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
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;