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 - downloadIndex: ┃ B T ┃
Length: 10084 (0x2764) Types: TextFile Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧
with Text_Io; package body Nodes is package Int_Io is new Text_Io.Integer_Io (Integer); function Mkactivernode (Id1, Id2 : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Activer); Ptrnode.Thetype := Activer; Ptrnode.Act_Id1 := Id1; Ptrnode.Act_Id2 := Id2; return Ptrnode; end Mkactivernode; function Mkdesactivernode (Id1, Id2 : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Desactiver); Ptrnode.Thetype := Desactiver; Ptrnode.Des_Id1 := Id1; Ptrnode.Des_Id2 := Id2; return Ptrnode; end Mkdesactivernode; function Mkmodifiernode (Id1, Id2, Expr : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Modifier); Ptrnode.Thetype := Modifier; Ptrnode.Mod_Id1 := Id1; Ptrnode.Mod_Id2 := Id2; Ptrnode.Mod_Expr := Expr; return Ptrnode; end Mkmodifiernode; function Mkevoluernode (Id1, Id2, Expr1, Expr2 : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Evoluer); Ptrnode.Thetype := Evoluer; Ptrnode.Evo_Id1 := Id1; Ptrnode.Evo_Id2 := Id2; Ptrnode.Evo_Expr1 := Expr1; Ptrnode.Evo_Expr2 := Expr2; return Ptrnode; end Mkevoluernode; function Mkexprnode (Term, Exprprime : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Expression); Ptrnode.Thetype := Expression; Ptrnode.Exp_Exprprime := Exprprime; Ptrnode.Exp_Term := Term; return Ptrnode; end Mkexprnode; function Mkexprprimenode (Term, Exprprime : Pnode; Anoperator : Operator) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Expressionprime); Ptrnode.Thetype := Expressionprime; Ptrnode.Expp_Exprprime := Exprprime; Ptrnode.Expp_Term := Term; Ptrnode.Expp_Op := Anoperator; return Ptrnode; end Mkexprprimenode; function Mktermnode (Fact, Termprime : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Terme); Ptrnode.Thetype := Terme; Ptrnode.Ter_Termprime := Termprime; Ptrnode.Ter_Fact := Fact; return Ptrnode; end Mktermnode; function Mktermprimenode (Fact, Termprime : Pnode; Anoperator : Operator) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Termeprime); Ptrnode.Thetype := Termeprime; Ptrnode.Terp_Termprime := Termprime; Ptrnode.Terp_Fact := Fact; Ptrnode.Terp_Op := Anoperator; return Ptrnode; end Mktermprimenode; function Mkfactnode (Anode : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Facteur); Ptrnode.Thetype := Facteur; Ptrnode.Fac_Node := Anode; return Ptrnode; end Mkfactnode; function Mkidnode (Val : Lexical.Lexeme) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Id); Ptrnode.Thetype := Id; Ptrnode.Id_Val := Val; return Ptrnode; end Mkidnode; function Mknbnode (Val : Integer) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Nombre); Ptrnode.Thetype := Nombre; Ptrnode.Nb_Val := Val; return Ptrnode; end Mknbnode; function Mkaffectnode (Id, Expr : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Affect); Ptrnode.Thetype := Affect; Ptrnode.Aff_Id := Id; Ptrnode.Aff_Expr := Expr; return Ptrnode; end Mkaffectnode; function Mkfairenode (Id1, Id2 : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Faire); Ptrnode.Thetype := Faire; Ptrnode.Fai_Id1 := Id1; Ptrnode.Fai_Id2 := Id2; return Ptrnode; end Mkfairenode; function Mkrepeternode (Expr, Instr : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Repeter); Ptrnode.Thetype := Repeter; Ptrnode.Rep_Expr := Expr; Ptrnode.Rep_Instr := Instr; return Ptrnode; end Mkrepeternode; function Mksinode (Cond, Instr, Sinon : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Si); Ptrnode.Thetype := Si; Ptrnode.Si_Cond := Cond; Ptrnode.Si_Instr := Instr; Ptrnode.Si_Sinon := Sinon; return Ptrnode; end Mksinode; function Mksinonnode (Instr : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Sinon); Ptrnode.Thetype := Sinon; Ptrnode.Sin_Instr := Instr; return Ptrnode; end Mksinonnode; function Mkautempsnode (Expr, Instr : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Autemps); Ptrnode.Thetype := Autemps; Ptrnode.Aut_Expr := Expr; Ptrnode.Aut_Instr := Instr; return Ptrnode; end Mkautempsnode; function Mkattendrenode (Expr : Pnode) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Attendre); Ptrnode.Thetype := Attendre; Ptrnode.Att_Expr := Expr; return Ptrnode; end Mkattendrenode; function Mkcondnode (Expr1, Expr2 : Pnode; Anoprel : Op_Rel) return Pnode is Ptrnode : Pnode; begin Ptrnode := new Node (Condition); Ptrnode.Thetype := Condition; Ptrnode.Con_Expr1 := Expr1; Ptrnode.Con_Expr2 := Expr2; Ptrnode.Con_Op := Anoprel; return Ptrnode; end Mkcondnode; function Nbgetvalue (Anbnode : Pnode) return Integer is begin return Anbnode.Nb_Val; end Nbgetvalue; function Idgetlex (Aidnode : Pnode) return Lexical.Lexeme is begin return Aidnode.Id_Val; end Idgetlex; function Conditionistrue (Acondnode : Pnode) return Boolean is begin return Acondnode.Con_Val; end Conditionistrue; procedure Idsetvalue (Aidnode : Pnode; Aval : Lexical.Lexeme) is begin Aidnode.Id_Val := Aval; end Idsetvalue; procedure Printid (Ptr : Pnode) is begin Text_Io.Put ("Id"); Text_Io.Put (' '); end Printid; procedure Printexpr (Ptr : Pnode) is begin Text_Io.Put ("Exp_Val"); Text_Io.Put (' '); end Printexpr; procedure Printfaire (Ptr : Pnode) is begin Text_Io.Put ("-> Faire "); Printid (Ptr.Fai_Id1); Printid (Ptr.Fai_Id2); Text_Io.New_Line; end Printfaire; procedure Printactiver (Ptr : Pnode) is begin Text_Io.Put (" -> Activer "); Printid (Ptr.Act_Id1); Printid (Ptr.Act_Id2); Text_Io.New_Line; end Printactiver; procedure Printdesactiver (Ptr : Pnode) is begin Text_Io.Put (" -> Desactiver "); Printid (Ptr.Des_Id1); Printid (Ptr.Des_Id2); Text_Io.New_Line; end Printdesactiver; procedure Printmodifier (Ptr : Pnode) is begin Text_Io.Put (" -> Modifier "); Printid (Ptr.Mod_Id1); Printid (Ptr.Mod_Id2); Printexpr (Ptr.Mod_Expr); Text_Io.New_Line; end Printmodifier; procedure Printevoluer (Ptr : Pnode) is begin Text_Io.Put (" -> Evoluer "); Printid (Ptr.Evo_Id1); Printid (Ptr.Evo_Id2); Printexpr (Ptr.Evo_Expr1); Printexpr (Ptr.Evo_Expr2); Text_Io.New_Line; end Printevoluer; procedure Printrepeter (Ptr : Pnode) is begin Text_Io.Put (" -------> Repeter "); Printexpr (Ptr.Rep_Expr); Text_Io.New_Line; Printtree (Ptr.Rep_Instr); Text_Io.New_Line; Text_Io.Put_Line (" -------> fin Repeter "); end Printrepeter; procedure Printsinon (Ptr : Pnode) is begin Text_Io.Put ("--------> Sinon "); Printtree (Ptr.Sin_Instr); Text_Io.New_Line; end Printsinon; procedure Printcond (Ptr : Pnode) is begin Text_Io.Put (Boolean'Image (Ptr.Con_Val)); end Printcond; procedure Printsi (Ptr : Pnode) is begin Text_Io.Put ("--------> Si "); Printcond (Ptr.Si_Cond); Text_Io.Put (" alors "); Text_Io.New_Line; Printtree (Ptr.Si_Instr); if Ptr.Si_Sinon /= null then Printsinon (Ptr.Si_Sinon); end if; Text_Io.Put_Line ("-------> fin Si "); end Printsi; procedure Printautemps (Ptr : Pnode) is begin Text_Io.Put ("--------> Autemps "); Printexpr (Ptr.Aut_Expr); Text_Io.New_Line; Printtree (Ptr.Aut_Instr); Text_Io.New_Line; Text_Io.Put_Line ("-------> fin Autemps "); end Printautemps; procedure Printattendre (Ptr : Pnode) is begin Text_Io.Put ("--------> Attendre "); Printexpr (Ptr.Att_Expr); Text_Io.New_Line; end Printattendre; procedure Printtree (Anode : Pnode) is Ptr : Pnode; begin Ptr := Anode; while Ptr /= null loop case Ptr.Thetype is when Faire => Printfaire (Ptr); when Activer => Printactiver (Ptr); when Desactiver => Printdesactiver (Ptr); when Modifier => Printmodifier (Ptr); when Evoluer => Printevoluer (Ptr); when Repeter => Printrepeter (Ptr); when Si => Printsi (Ptr); when Autemps => Printautemps (Ptr); when Attendre => Printattendre (Ptr); when others => null; end case; Ptr := Ptr.Next; end loop; end Printtree; end Nodes;