|
|
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: 3511 (0xdb7)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
separate (Parse)
procedure Parse_Changer (Ok : out Boolean;
The_Node : out Abstract_Tree.P_Node) is
Ok1 : Boolean := True;
Var_Node, Class_Node, Actor_Node : Abstract_Tree.P_Node;
Success : Boolean;
Table_Changed : Boolean := False;
begin
Ok := True;
Text_Io.Put_Line ("parse_changer");
if Lex.Get_Token = L_Changer then
Lex.Next;
if Lex.Get_Token = L_Ouvrante then
Lex.Next;
if Lex.Get_Token = L_Id then
if Symbol_Table.Is_Visible (Lex.Get_Value) then
declare
The_Class : Element.Class;
begin
Symbol_Table.Get_Class
(Lex.Get_Value, The_Class, Success);
Symbol_Table.Change_Current_Table (The_Class, Success);
Table_Changed := Success;
end;
Class_Node := Abstract_Tree.Make_Foliage
(L_Id, Lex.Get_Value);
else
Error.Found;
Class_Node := Abstract_Tree.Empty_Node;
end if;
Lex.Next;
if Lex.Get_Token = L_Point then
Lex.Next;
if Lex.Get_Token = L_Id then
if Symbol_Table.Is_Visible_Local (Lex.Get_Value) then
Actor_Node := Abstract_Tree.Make_Foliage
(L_Id, Lex.Get_Value);
Symbol_Table.Leave_Table (Success);
Table_Changed := False;
else
Error.Found;
Actor_Node := Abstract_Tree.Empty_Node;
end if;
Lex.Next;
if Lex.Get_Token = L_Virgule then
Lex.Next;
Parse_Variable (Ok1, Var_Node);
if not Ok1 then
Parse_Error (Variable_Follow);
else
The_Node := Abstract_Tree.Make_Node
(L_Changer, Class_Node,
Actor_Node, Var_Node);
end if;
if Lex.Get_Token = L_Fermante then
Lex.Next;
else
Ok := False;
end if;
else
Ok := False;
The_Node := Abstract_Tree.Empty_Node;
end if;
else
Ok := False;
The_Node := Abstract_Tree.Empty_Node;
end if;
else
Ok := False;
The_Node := Abstract_Tree.Empty_Node;
end if;
else
Ok := False;
The_Node := Abstract_Tree.Empty_Node;
end if;
else
Ok := False;
The_Node := Abstract_Tree.Empty_Node;
end if;
else
Ok := False;
The_Node := Abstract_Tree.Empty_Node;
end if;
if Table_Changed then
Symbol_Table.Leave_Table (Success);
end if;
end Parse_Changer;