|
|
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: 2616 (0xa38)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Pile;
with Text_Io;
package body Pile_Lex is
type Cellule_Mem is
record
Name : Pointeur_Chaine;
Letoken : Token;
At_End : Boolean;
Col : Text_Io.Positive_Count;
Line : Text_Io.Positive_Count;
end record;
package Pile_Lx is new Pile (Item => Cellule_Mem);
Stack : Pile_Lx.Object (1000);
E : Cellule_Mem;
procedure Charge_Programme_Dans_Pile_Lex (Afile : Text_Io.File_Type) is
Error_Pile_Lx : exception;
begin
-- while not Text_Io.End_Of_File (Afile) loop
while Lex_Get_Token1 /= L_Eof loop
Lex_Next_Token1 (Afile);
if Lex_Get_Value1 /= null then
E.Name := Lex_Get_Value1;
end if;
E.Letoken := Lex_Get_Token1;
E.At_End := Lex_At_End1 (Afile);
E.Col := Text_Io.Col (Afile);
E.Line := Text_Io.Line (Afile);
Pile_Lx.Empiler (Stack, E);
end loop;
exception
when Constraint_Error =>
raise Error_Pile_Lx;
end Charge_Programme_Dans_Pile_Lex;
function Col (Afile : Text_Io.File_Type) return Text_Io.Positive_Count is
begin
return E.Col;
end Col;
function Line (Afile : Text_Io.File_Type) return Text_Io.Positive_Count is
begin
return E.Line;
end Line;
function Lex_Get_Value return Pointeur_Chaine is
begin
return E.Name;
end Lex_Get_Value;
function Lex_Get_Value_Float return Float is
Ch : constant Pointeur_Chaine := Lex_Get_Value;
I : constant Integer := Integer'Value (Ch.all);
begin
return Float (I);
end Lex_Get_Value_Float;
function Lex_Get_Token return Token is
begin
return E.Letoken;
end Lex_Get_Token;
procedure Lex_Open (Afile : Text_Io.File_Type) is
begin
Lex_Open1 (Afile);
end Lex_Open;
function Lex_At_End (Afile : Text_Io.File_Type) return Boolean is
begin
return E.At_End;
end Lex_At_End;
procedure Lex_Next_Token (Afile : Text_Io.File_Type) is
begin
Pile_Lx.Avance (Stack);
Pile_Lx.Lire (Stack, E);
--Text_Io.Put_Line ("tok :" & Token'Image (Lex_Get_Token));
end Lex_Next_Token;
procedure Prg_Iterateur_A_Position (Posi : Natural) is
begin
Pile_Lx.Iterateur_A_Position (Stack, Posi);
end Prg_Iterateur_A_Position;
procedure Prg_Lire_Posi_Iterateur (Posi : out Natural) is
begin
Pile_Lx.Lire_Posi_Iterateur (Stack, Posi);
end Prg_Lire_Posi_Iterateur;
end Pile_Lex;