DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦fd76dc227⟧ TextFile

    Length: 56306 (0xdbf2)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦ee43423bb⟧ 
            └─⟦this⟧ 

TextFile

with Text_Io, expression, Attribute, Field_Identifier_Array, Objet,
     The_Order, The_Hero, The_Place, Identifier, Moving_String, Detail,
     Group_Array, Complement, Complement_Array, Enumeration_Array;
use Text_Io, expression;
procedure Test_expression is


    D1 : Detail.Object;
    A1, A2, A3, A4 : Attribute.Object;
    Ob : Objet.Object;
    Id : Identifier.Object;
    Index : Natural;
    Ok : Boolean;
f,r,l : object;

use expression.visible;
begin

    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("fermee"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("ouverte"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("rouge"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("jaune"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("vert"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("bleu"), Ok);
    Enumeration_Array.Show;

    Field_Identifier_Array.Put (Identifier.From_String ("vie"));  
    Field_Identifier_Array.Put (Identifier.From_String ("nord"));  
    Field_Identifier_Array.Put (Identifier.From_String ("sud"));
    Field_Identifier_Array.Put (Identifier.From_String ("age"));
    Field_Identifier_Array.Put (Identifier.From_String ("nom"));
    Field_Identifier_Array.Put (Identifier.From_String ("couleur"));
    Field_Identifier_Array.Put (Identifier.From_String ("description"));
    Field_Identifier_Array.Show;

    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("gaston"), Ok);
    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("table"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("courir"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("aller"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("de"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nord"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("est"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("sud"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("ouest"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("vie"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("age"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nom"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("couleur"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("description"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("porte"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("trou"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("cuisine"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("chambre"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("salon"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), 13, Ok);  
    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), 10, Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Ok);
    Index := Enumeration_Array.Enum ("couleur");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Index,
        Enumeration_Array.Literal (Index, "rouge"), Ok);

    Complement_Array.Put_Place (Complement_Array.Index ("gaston"),
                                Complement_Array.Index ("cuisine"), Ok);
    Complement_Array.Put_Place (Complement_Array.Index ("table"),
                                Complement_Array.Index ("cuisine"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle cuisine"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle et grande chambre"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est un grand salon"), Ok);
   

    Complement_Array.Put_Exit (Complement_Array.Index ("salon"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"), Ok);

    Identifier.Put (Id, "salle");
    Group_Array.Put (Id, Complement_Array.Index ("chambre"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("salon"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("cuisine"), Ok);
    Group_Array.Show;

    Identifier.Put (Id, "nombre");
    Group_Array.Put (Id, Complement_Array.Index ("vie"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("age"), Ok);
    Group_Array.Show;

Complement_Array.Show;

    The_Order.Put_Complement (Moving_String.From_String ("cuisine"),
                              Moving_String.From_String ("aller"),
                              Moving_String.From_String ("nord"),
                              Moving_String.From_String ("de"),
                              Moving_String.From_String ("cuisine"));
    The_Order.Show;

    The_Hero.Put (Complement_Array.Index ("gaston"));
    Put_Line ("index the hero : " & Natural'Image (The_Hero.Index));
    The_Hero.Show;

    The_Place.Put (Complement_Array.Index ("cuisine"));
    Put_Line ("index the place : " & Natural'Image (The_Place.Index));
    The_Place.Show;

    Objet.Create_Real (Ob, Complement_Array.Index ("gaston"));
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("age"));
    Attribute.Put (A1, Ob, D1);
    Attribute.Show (A1);

    Objet.Create_Group (Ob, 5);
    Detail.Create_Group (D1, 3);
    Attribute.Put (A2, Ob, D1);
    Attribute.Show (A2);

    Objet.Create_Hero (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("vie"));
    Attribute.Put (A3, Ob, D1);
    Attribute.Show (A3);

    Objet.Create_Place (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("description"));
    Attribute.Put (A4, Ob, D1);
    Attribute.Show (A4);

put_line("show vide");
show(r);

create(r,10);
put_line("evaluate : " & integer'image(evaluate(r));
put_line("is number : " & boolean'image(is_a_number(r));
put_line("is enumerate : " & boolean'image(is_a_number(r));
put_line("enumeration : " & natural'image(enumeration(r));
put_line("litteral : " & natural'image(literal(r));
show(r);

create(l,enumeration_array;enum("couleur"),enumeration_array.literal(
enumeration_array.enum("couleur"),"rouge"));
put_line("evaluate : " & integer'image(evaluate(l));
put_line("is number : " & boolean'image(is_a_number(l));
put_line("is enumerate : " & boolean'image(is_a_number(l));
put_line("enumeration : " & natural'image(enumeration(l));
put_line("litteral : " & natural'image(literal(l));
show(l);

create(l,5);
put_line("evaluate : " & integer'image(evaluate(l));
create(f,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'image(evaluate(f));
show(f);
create(f,*,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'image(evaluate(f));
create(f,-,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'image(evaluate(f));
create(f,/,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'imagee(valuate(f));
create(r,0);
create(f,/,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'image(evaluate(f));

create(l,a1)
put_line("evaluate : " & integer'image(evaluate(l));
put_line("is number : " & boolean'image(is_a_number(l));
put_line("is enumerate : " & boolean'image(is_a_number(l));
put_line("enumeration : " & natural'image(enumeration(l));
put_line("litteral : " & natural'image(literal(l));
show(l);

create(r,a2)
put_line("evaluate : " & integer'image(evaluate(r));
put_line("is number : " & boolean'image(is_a_number(r));
put_line("is enumerate : " & boolean'image(is_a_number(r));
put_line("enumeration : " & natural'image(enumeration(r));
put_line("litteral : " & natural'image(literal(r));
show(r);

create(f,*,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'image(evaluate(f));
put_line("is number : " & boolean'image(is_a_number(f));
put_line("is enumerate : " & boolean'image(is_a_number(f));
put_line("enumeration : " & natural'image(enumeration(f));
put_line("litteral : " & natural'image(literal(f));
show(f);

create(l,a2)
put_line("evaluate : " & integer'image(evaluate(l));
put_line("is number : " & boolean'image(is_a_number(l));
put_line("is enumerate : " & boolean'image(is_a_number(l));
put_line("enumeration : " & natural'image(enumeration(l));
put_line("litteral : " & natural'image(literal(l));
show(l2);

create(f,*,l,r,ok);
put_line("ok : " & boolean'image(ok));

create(l,25);
create(r,a);
create(f1,/,l,r);
put_line("ok : " & boolean'image(ok));
create(f,-,f,f1);
put_line("ok : " & boolean'image(ok));
put_line("evaluate : " & integer'image(evaluate(f));

end;


with Text_Io, affectation, Attribute, Field_Identifier_Array, Objet,
     The_Order, The_Hero, The_Place, Identifier, Moving_String, Detail,
     Group_Array, Complement, Complement_Array, Enumeration_Array,expression;
use Text_Io, affectation;
procedure Test_affectation is

o:object;
    D1 : Detail.Object;
    A1, A2, A3, A4 : Attribute.Object;
    Ob : Objet.Object;
    Id : Identifier.Object;
    Index : Natural;
    Ok : Boolean;
f1,f2,f3,f4 : expression.object;

begin

    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("fermee"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("ouverte"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("rouge"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("jaune"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("vert"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("bleu"), Ok);
    Enumeration_Array.Show;

    Field_Identifier_Array.Put (Identifier.From_String ("vie"));  
    Field_Identifier_Array.Put (Identifier.From_String ("nord"));  
    Field_Identifier_Array.Put (Identifier.From_String ("sud"));
    Field_Identifier_Array.Put (Identifier.From_String ("age"));
    Field_Identifier_Array.Put (Identifier.From_String ("nom"));
    Field_Identifier_Array.Put (Identifier.From_String ("couleur"));
    Field_Identifier_Array.Put (Identifier.From_String ("description"));
    Field_Identifier_Array.Show;

    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("alfred"), Ok);
    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("gaston"), Ok);
    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("table"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("courir"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("aller"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("de"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nord"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("est"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("sud"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("ouest"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("vie"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("age"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nom"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("couleur"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("description"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("porte"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("trou"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("cuisine"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("chambre"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("salon"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), 13, Ok);  
    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), 10, Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Ok);
    Index := Enumeration_Array.Enum ("couleur");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Index,
        Enumeration_Array.Literal (Index, "rouge"), Ok);

    Complement_Array.Put_Place (Complement_Array.Index ("gaston"),
                                Complement_Array.Index ("cuisine"), Ok);
    Complement_Array.Put_Place (Complement_Array.Index ("table"),
                                Complement_Array.Index ("cuisine"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle cuisine"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle et grande chambre"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est un grand salon"), Ok);
   

    Complement_Array.Put_Exit (Complement_Array.Index ("salon"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"), Ok);

    Identifier.Put (Id, "salle");
    Group_Array.Put (Id, Complement_Array.Index ("chambre"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("salon"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("cuisine"), Ok);
    Group_Array.Show;

    Identifier.Put (Id, "nombre");
    Group_Array.Put (Id, Complement_Array.Index ("vie"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("age"), Ok);
    Group_Array.Show;

Complement_Array.Show;

    The_Order.Put_Complement (Moving_String.From_String ("cuisine"),
                              Moving_String.From_String ("aller"),
                              Moving_String.From_String ("nord"),
                              Moving_String.From_String ("de"),
                              Moving_String.From_String ("cuisine"));
    The_Order.Show;

    The_Hero.Put (Complement_Array.Index ("gaston"));
    Put_Line ("index the hero : " & Natural'Image (The_Hero.Index));
    The_Hero.Show;

    The_Place.Put (Complement_Array.Index ("cuisine"));
    Put_Line ("index the place : " & Natural'Image (The_Place.Index));
    The_Place.Show;

    Objet.Create_Real (Ob, Complement_Array.Index ("gaston"));
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("age"));
    Attribute.Put (A1, Ob, D1);
    Attribute.Show (A1);

    Objet.Create_Group (Ob, 5);
    Detail.Create_Group (D1, 3);
    Attribute.Put (A2, Ob, D1);
    Attribute.Show (A2);

    Objet.Create_Hero (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("couleur"));
    Attribute.Put (A3, Ob, D1);
    Attribute.Show (A3);

    Objet.Create_Place (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("description"));
    Attribute.Put (A4, Ob, D1);
    Attribute.Show (A4);.

expression.create(f4,enumeration_array;enum("normal"),enumeration_array.literal(
enumeration_array.enum("normal"),"ouverte"));
put_line("evaluate f4 : " & integer'image(evaluate(f4));
expression.show(f4);

expression.create(l,5);
expression.create(r,8);
expression.create(f1,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate f1 : " & integer'image(evaluate(f1));
expression.show(f1);

expression.create(f2,-,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate f2 : " & integer'image(evaluate(f2));
expression.show(f2);

expression.create(l,a3)
expression.create(r,3)
expression.create(f3,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate f3 : " & integer'image(evaluate(f3));
expression.show(f3);

put_line("show vide");
show(o);

create_attribute(o,a1,f4,ok);
put_line("1 ok : " & boolean'image(ok));

create_attribute(o,a1,f1,ok);     -- integer
put_line("2 ok : " & boolean'image(ok));
show(o);
run(o);
show(o);\f

create_attribute(o,a1,f2,ok);     -- integer
put_line("3 ok : " & boolean'image(ok));
show(o);
run(o);
show(o);

create_attribute(o,a1,f3,ok);   
put_line("4 ok : " & boolean'image(ok));
show(o);
run(o);
show(o);


    Detail.Create_Real (D1, Field_Identifier_Array.Index ("alfred"));
create_hero(o,d1);
show(o);
run(o);
show(o);

    Detail.Create_Real (D1, Field_Identifier_Array.Index ("chambre"));
create_place(o,d1);
show(o);
run(o);
show(o);

complement_array.show;

end;

with Text_Io, condition, Attribute, Field_Identifier_Array, Objet,
     The_Order, The_Hero, The_Place, Identifier, Moving_String, Detail,
     Group_Array, Complement, Complement_Array, Enumeration_Array,expression;
use Text_Io, condition;
procedure Test_condition is

o,o1,o2,o3 : object;
    D1 : Detail.Object;
    A1, A2, A3, A4 : Attribute.Object;
    Ob : Objet.Object;
    Id : Identifier.Object;
    Index : Natural;
    Ok : Boolean;
f1,f2,f3,f4  : expression.object;

use condition.visible;expression.visible

    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("fermee"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("ouverte"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("rouge"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("jaune"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("vert"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("bleu"), Ok);
    Enumeration_Array.Show;

    Field_Identifier_Array.Put (Identifier.From_String ("vie"));  
    Field_Identifier_Array.Put (Identifier.From_String ("nord"));  
    Field_Identifier_Array.Put (Identifier.From_String ("sud"));
    Field_Identifier_Array.Put (Identifier.From_String ("age"));
    Field_Identifier_Array.Put (Identifier.From_String ("nom"));
    Field_Identifier_Array.Put (Identifier.From_String ("couleur"));
    Field_Identifier_Array.Put (Identifier.From_String ("description"));
    Field_Identifier_Array.Show;

    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("gaston"), Ok);
Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("gaston"), Ok);    
Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("table"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("courir"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("aller"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("de"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nord"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("est"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("sud"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("ouest"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("vie"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("age"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nom"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("couleur"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("description"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("porte"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("trou"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("cuisine"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("chambre"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("salon"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

Complement_Array.put_place(Complement_Array.Index ("gaston"),Complement_Array.Index ("cuisine"),ok);

    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), 13, Ok);  
    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), 123, Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Ok);
    Index := Enumeration_Array.Enum ("couleur");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Index,
        Enumeration_Array.Literal (Index, "rouge"), Ok);

    Complement_Array.Put_Place (Complement_Array.Index ("gaston"),
                                Complement_Array.Index ("cuisine"), Ok);
    Complement_Array.Put_Place (Complement_Array.Index ("table"),
                                Complement_Array.Index ("cuisine"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle cuisine"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle et grande chambre"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est un grand salon"), Ok);
   

    Complement_Array.Put_Exit (Complement_Array.Index ("salon"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"), Ok);

    Identifier.Put (Id, "salle");
    Group_Array.Put (Id, Complement_Array.Index ("chambre"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("salon"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("cuisine"), Ok);
    Group_Array.Show;

    Identifier.Put (Id, "nombre");
    Group_Array.Put (Id, Complement_Array.Index ("vie"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("age"), Ok);
    Group_Array.Show;

Complement_Array.Show;

    The_Order.Put_Complement (Moving_String.From_String ("cuisine"),
                              Moving_String.From_String ("aller"),
                              Moving_String.From_String ("nord"),
                              Moving_String.From_String ("de"),
                              Moving_String.From_String ("cuisine"));
    The_Order.Show;

    The_Hero.Put (Complement_Array.Index ("gaston"));
    Put_Line ("index the hero : " & Natural'Image (The_Hero.Index));
    The_Hero.Show;

    The_Place.Put (Complement_Array.Index ("cuisine"));
    Put_Line ("index the place : " & Natural'Image (The_Place.Index));
    The_Place.Show;

    Objet.Create_Real (Ob, Complement_Array.Index ("gaston"));
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("age"));
    Attribute.Put (A1, Ob, D1);
    Attribute.Show (A1);

Objet.Create_Real (Ob, Complement_Array.Index ("gaston"));
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("nord"));
    Attribute.Put (A5, Ob, D1);
    Attribute.Show (A5);

    Objet.Create_Group (Ob, 5);
    Detail.Create_Group (D1, 3);
    Attribute.Put (A2, Ob, D1);
    Attribute.Show (A2);

    Objet.Create_Hero (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("couleur"));
    Attribute.Put (A3, Ob, D1);
    Attribute.Show (A3);

    Objet.Create_Place (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("nord"));
    Attribute.Put (A4, Ob, D1);
    Attribute.Show (A4);

expression.create(f4,enumeration_array;enum("normal"),enumeration_array.literal(
enumeration_array.enum("normal"),"ouverte"));
put_line("1 evaluate f4 : " & integer'image(evaluate(f4));
expression.show(f4);

expression.create(f5,enumeration_array;enum("normal"),enumeration_array.literal(
enumeration_array.enum("normal"),"fermee"));
put_line("2 evaluate f5 : " & integer'image(evaluate(f5));
expression.show(f5);

expression.create(l,5);
expression.create(r,8);
expression.create(f1,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("3 evaluate f1 : " & integer'image(evaluate(f1));
expression.show(f1);

expression.create(f2,-,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("4 evaluate f2 : " & integer'image(evaluate(f2));
expression.show(f2);

expression.create(l,a3)
expression.create(r,3)
expression.create(f3,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("5 evaluate f3 : " & integer'image(evaluate(f3));
expression.show(f3);

expression.create(l,3);
expression.create(r,10);
expression.create(f,+,l,r,ok);

put_line("ok : " & boolean'image(ok));
create_compare(o2,a1,equal,f,ok);    -- vrai
put_line("6 ok : " & boolean'image(ok));
show(o2);
put_line("7 is right: " & boolean'image(is_right(o2));

expression.create(l,10);
expression.create(r,20);
expression.create(f,+,l,r,ok);

put_line("show vide");
show(o);
put_line("8 is right vide : " & boolean'image(is_right(o));

create_compare(o,a1,less,f,ok);
put_line("ok : " & boolean'image(ok));
show(o);
put_line("9 is right: " & boolean'image(is_right(o));

create_compare(o1,a4,equal,f4,ok);   -- faux
put_line("ok : " & boolean'image(ok));
show(o1);
put_line("10 is right: " & boolean'image(is_right(o1));
 
create_compare(o1,a4,not_equal,f4,ok);   -- vrai
put_line("ok : " & boolean'image(ok));
show(o1);
put_line("11 is right: " & boolean'image(is_right(o1));

create_compare(o1,a4,less,f4,ok);   -- ok : faux
put_line("ok : " & boolean'image(ok));
show(o1);
put_line("12 is right: " & boolean'image(is_right(o1));

create_compare(o,a4,equal,f5,ok);
put_line("ok : " & boolean'image(ok));
show(o);
put_line("13 is right: " & boolean'image(is_right(o));

create_compare(o,a1,greater,f,ok);
put_line("ok : " & boolean'image(ok));
show(o);
put_line("14 is right: " & boolean'image(is_right(o));

create_compare(o,a1,less_equal,f,ok);
put_line("ok : " & boolean'image(ok));
show(o);
put_line("15 is right: " & boolean'image(is_right(o));

create_compare(o,a1,greater_equal,f,ok);
put_line("ok : " & boolean'image(ok));
show(o);
put_line("16 is right: " & boolean'image(is_right(o));

create_compare(o,a1,greater_equal,f4,ok);  -- enumere
put_line("ok : " & boolean'image(ok));
show(o);
put_line("17 is right: " & boolean'image(is_right(o));

create_compare(o,a2,not_equal,f,ok);    --enumere
put_line("ok : " & boolean'image(ok));
show(o);
put_line("18 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("gaston"));
create_hero(o,d1);
show(o);
put_line("19 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("alfred"));
create_hero(o,d1
show(o);
put_line("20 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("chambre"));
create_place(o,d1);
show(o);
put_line("21 is right: " & boolean'image(is_right(o));

        Detail.Create_Real (D1, complement_Array.Index ("cuisine");
create_place(o,d1);
show(o);
put_line("22 is right: " & boolean'image(is_right(o));

create_actions(o,3);
show(o);
put_line("23 is right: " & boolean'image(is_right(o));

create_actions(o,4);
show(o);
put_line("24 is right: " & boolean'image(is_right(o));


    Detail.Create_Real (D1, complement_Array.Index ("gaston"));
create_meet(o,d1);
Field_show(o);
put_line("25 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("alfred"));
create_meet(o,d1);
show(o);
put_line("26 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("alfred"));
create_belong(o,ob,d1,no);  -- ob cuisine
show(o);
put_line("27 is right: " & boolean'image(is_right(o));


    Detail.Create_Real (D1, complement_Array.Index ("alfred"));
create_belong(o,ob,d1,no);  -- ob cuisine
show(o);
put_line("28 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("gaston"));
create_belong(o,ob,d1,yes);
show(o);
put_line("29 is right: " & boolean'image(is_right(o));

create_attribute_exist(o3,a3,yes);  -- vrai
show(o3);
put_line("30 is right: " & boolean'image(is_right(o3));

create_attribute_exist(o,a3,no);
show(o);
put_line("31 is right: " & boolean'image(is_right(o));

create_attribute_exist(o,a6,yes);
show(o);
put_line("32 is right: " & boolean'image(is_right(o));

create_attribute_exist(o,a4,yes);
show(o);
put_line("33 is right: " & boolean'image(is_right(o));

create_exits_exist(o,ob,yes);
show(o);
put_line("34 is right: " & boolean'image(is_right(o));

create_exits_exist(o,ob,no);
show(o);
put_line("35 is right: " & boolean'image(is_right(o));


Objet.Create_Real (Ob, Complement_Array.Index ("salon"));
create_exits_exist(o,ob,yes);
show(o);
put_line("36 is right: " & boolean'image(is_right(o));

Objet.Create_Real (Ob, Complement_Array.Index ("salon"));
create_exits_exist(o,ob,no);
show(o);
put_line("37 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("gaston"));
create_subject_exist(o,d1,yes);
show(o);
put_line("38 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("gaston"));
create_subject_exist(o,D1,no);
show(o);
put_line("39 is right: " & boolean'image(is_right(o));

    Detail.Create_Real (D1, complement_Array.Index ("alfred"));  -- place de alfred = 0 
create_subject_exist(o,d1,yes);
show(o);
put_line("40 is right: " & boolean'image(is_right(o));

put_line("o1 faux, o2 vrai, o3 vrai");
show(o1);
put_line("o1 is right : " & boolean'image(is_right(o1));
show(o2);
put_line("o2 is right : " & boolean'image(is_right(o2));
show(o3);
put_line("o3 is right : " & boolean'image(is_right(o3));

create(o,ou,o1,o2,);
show(o);
put_line("42 is right: " & boolean'image(is_right(o));

create(o,et,o,o3,);
show(o);
put_line("o3 et  (o1 ou o2) : " & boolean'image(is_right(o));

end;

with Text_Io, condition, index_list,view,view_list,affectation,instruction_list,Attribute, Field_Identifier_Array, Objet,
     The_Order, The_Hero, The_Place, Identifier, Moving_String, Detail,
     Group_Array, Complement, Complement_Array, Enumeration_Array,expression;
use Text_Io, instruction_list;
procedure Test_instruction_list is

i1,i2,i3 : objet;
ind_list : index_list.object;
vi : view.object;
vi_list : view_list.object;
af : affectation.object;
c1,c2,c3 : condition.object;
    D1 : Detail.Object;
    A1, A2, A3, A4 : Attribute.Object;
    Ob : Objet.Object;
    Id : Identifier.Object;
    Index : Natural;
    Ok : Boolean;
f1,f2,f3,f4  : expression.object;

use condition.visible;expression.visible

    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("fermee"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("normal"),
                                   Identifier.From_String ("ouverte"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("rouge"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("jaune"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("vert"), Ok);
    Enumeration_Array.Put_Literal (Identifier.From_String ("couleur"),
                                   Identifier.From_String ("bleu"), Ok);
    Enumeration_Array.Show;

    Field_Identifier_Array.Put (Identifier.From_String ("vie"));  
    Field_Identifier_Array.Put (Identifier.From_String ("nord"));  
    Field_Identifier_Array.Put (Identifier.From_String ("sud"));
    Field_Identifier_Array.Put (Identifier.From_String ("age"));
    Field_Identifier_Array.Put (Identifier.From_String ("nom"));
    Field_Identifier_Array.Put (Identifier.From_String ("couleur"));
    Field_Identifier_Array.Put (Identifier.From_String ("description"));
    Field_Identifier_Array.Show;

    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("xavier"), Ok);
    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("fred"), Ok);
    Complement_Array.Put (Complement.animate_Object,
                          Identifier.From_String ("gedeon"), Ok);
    Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("gaston"), Ok);
Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("gaston"), Ok);    
Complement_Array.Put (Complement.Entity_Object,
                          Identifier.From_String ("table"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("courir"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Verb (Identifier.From_String ("aller"),
                               Identifier.From_String ("aller"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("de"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nord"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("est"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("sud"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("ouest"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("vie"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("age"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("nom"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("couleur"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("description"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("porte"), Ok);
    Complement_Array.Put_Word (Identifier.From_String ("trou"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("cuisine"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("chambre"), Ok);
    Complement_Array.Put (Complement.Place_Object,
                          Identifier.From_String ("salon"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("nord"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Ok);
    Index := Enumeration_Array.Enum ("normal");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("sud"), Index,
        Enumeration_Array.Literal (Index, "fermee"), Ok);

Complement_Array.put_place(Complement_Array.Index ("gaston"),Complement_Array.Index ("cuisine"),ok);

Complement_Array.put_movement("gedeon",Complement_Array.Index ("cuisine"));
Complement_Array.put_movement("gedeon",Complement_Array.Index ("salon"));
Complement_Array.put_movement("gedeon",Complement_Array.Index ("chambre"));
Complement_Array.put_movement("gedeon",Complement_Array.Index ("chambre"));
Complement_Array.put_movement("gedeon",Complement_Array.Index ("cuisine"));
Complement_Array.put_movement("gedeon",Complement_Array.Index ("chambre"));

animate_list;put(Complement_Array.Index ("gedeon"), ok);  -- a tester
animate_list.show;

    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("age"), 13, Ok);  
    Complement_Array.Create_Number_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), Ok);
    Complement_Array.Field_Put_Number
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("vie"), 123, Ok);

    Complement_Array.Create_Enumerate_Field
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Ok);
    Index := Enumeration_Array.Enum ("couleur");
    Complement_Array.Field_Put_Enumerate
       (Complement_Array.Index ("gaston"),
        Field_Identifier_Array.Index ("couleur"), Index,
        Enumeration_Array.Literal (Index, "rouge"), Ok);

    Complement_Array.Put_Place (Complement_Array.Index ("gaston"),
                                Complement_Array.Index ("cuisine"), Ok);
    Complement_Array.Put_Place (Complement_Array.Index ("table"),
                                Complement_Array.Index ("cuisine"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("cuisine"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle cuisine"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("chambre"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est une belle et grande chambre"), Ok);

    Complement_Array.Put_Exit (Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("porte"),
                               Complement_Array.Index ("chambre"),
                               Complement_Array.Index ("sud"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("nord"), Ok);

    Complement_Array.Create_Sentence_Field
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"), Ok);
    Complement_Array.Field_Put_Sentence
       (Complement_Array.Index ("salon"),
        Field_Identifier_Array.Index ("description"),
        Identifier.From_String ("C'est un grand salon"), Ok);
   

    Complement_Array.Put_Exit (Complement_Array.Index ("salon"),
                               Complement_Array.Index ("trou"),
                               Complement_Array.Index ("salon"),
                               Complement_Array.Index ("est"),
                               Complement_Array.Index ("cuisine"),
                               Complement_Array.Index ("ouest"), Ok);

    Identifier.Put (Id, "salle");
    Group_Array.Put (Id, Complement_Array.Index ("chambre"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("salon"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("cuisine"), Ok);
    Group_Array.Show;

    Identifier.Put (Id, "nombre");
    Group_Array.Put (Id, Complement_Array.Index ("vie"), Ok);
    Group_Array.Put (Id, Complement_Array.Index ("age"), Ok);
    Group_Array.Show;

Complement_Array.Show;

    The_Order.Put_Complement (Moving_String.From_String ("cuisine"),
                              Moving_String.From_String ("aller"),
                              Moving_String.From_String ("nord"),
                              Moving_String.From_String ("de"),
                              Moving_String.From_String ("cuisine"));
    The_Order.Show;

    The_Hero.Put (Complement_Array.Index ("gaston"));
    Put_Line ("index the hero : " & Natural'Image (The_Hero.Index));
    The_Hero.Show;

    The_Place.Put (Complement_Array.Index ("cuisine"));
    Put_Line ("index the place : " & Natural'Image (The_Place.Index));
    The_Place.Show;

    Objet.Create_Real (Ob, Complement_Array.Index ("gaston"));
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("age"));
    Attribute.Put (A1, Ob, D1);
    Attribute.Show (A1);

Objet.Create_Real (Ob, Complement_Array.Index ("gaston"));
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("nord"));
    Attribute.Put (A5, Ob, D1);
    Attribute.Show (A5);

    Objet.Create_Group (Ob, 5);
    Detail.Create_Group (D1, 3);
    Attribute.Put (A2, Ob, D1);
    Attribute.Show (A2);

    Objet.Create_Hero (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("couleur"));
    Attribute.Put (A3, Ob, D1);
    Attribute.Show (A3);

    Objet.Create_Place (Ob);
    Detail.Create_Real (D1, Field_Identifier_Array.Index ("nord"));
    Attribute.Put (A4, Ob, D1);
    Attribute.Show (A4);

expression.create(f4,enumeration_array;enum("normal"),enumeration_array.literal(
enumeration_array.enum("normal"),"ouverte"));
put_line("evaluate f4 : " & integer'image(evaluate(f4));
expression.show(f4);

expression.create(f5,enumeration_array;enum("normal"),enumeration_array.literal(
enumeration_array.enum("normal"),"fermee"));
put_line("evaluate f5 : " & integer'image(evaluate(f5));
expression.show(f5);

expression.create(l,5);
expression.create(r,8);
expression.create(f1,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate f1 : " & integer'image(evaluate(f1));
expression.show(f1);

expression.create(f2,-,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate f2 : " & integer'image(evaluate(f2));
expression.show(f2);

expression.create(l,a3)
expression.create(r,3)
expression.create(f3,+,l,r,ok);
put_line("ok : " & boolean'image(ok));
put_line("evaluate f3 : " & integer'image(evaluate(f3));
expression.show(f3);


expression.create(l,3);
expression.create(r,10);
expression.create(f,+,l,r,ok);

put_line("ok : " & boolean'image(ok));
create_compare(o,a1,equal,f,ok);
put_line("ok : " & boolean'image(ok));
show(o);
put_line("is right: " & boolean'image(is_right(f));

expression.create(l,10);
expression.create(r,20);
expression.create(f,+,l,r,ok);
put_line("ok : " & boolean'image(ok));

condition.create_compare(c1,a1,equal,f,ok); -- faux
put_line("ok : " & boolean'image(ok));
put_line("is right vide : " & boolean'image(is_right(c1));

condition.create_compare(c2,a1,less,f,ok); -- vrai
put_line("ok : " & boolean'image(ok));
condition.show(o);
put_line("is right: " & boolean'image(is_right(c2));

condition.create_compare(c3,a4,equal,f4,ok);  -- faux
put_line("ok : " & boolean'image(ok));
condition.show(c3);
put_line("is right : " & boolean'image(condition.(is_right(c));


    Detail.Create_Real (D1, Field_Identifier_Array.Index ("alfred"));
affectation.create_hero(af,d1);
affectation.show(af);

    view.Create_Sentence (vi, Identifier.From_String ("Ca marche !!!"));
    view_list.put(vi_list,vi);
    view.Create_Number (vi, 2345);
      view_list.put(vi_list,vi); 
    view.Create_Attribute (vi, A1);
    view_list.put(vi_list,vi);
put("display vie list : " & );
view_list.display(vi_list);
new_line;

put("show i2 vide");
show(i1);
run(i1);
insert_change(i1,af);

put("show i1 affectation ");
show(i1);

insert_display(i1,vi_list);

put("show i1 affectation display ");
show(i1);

insert_next_line(i1);

put("show i1 affectation display next line");
show(i1);

insert_move(i1);

put("show i1 affectation display next line move");
show(i1);

run(i1);   -- pour tester le mouvement
run(i1);
run(i1);
run(i1);
run(i1);
run(i1);
run(i1);
run(i1);
run(i1);
run(i1);

index_list.put(ind_list,complement_array.index("xavier"),ok);   -- a tester 
index_list.put(ind_list,complement_array.index("fred"),ok);   -- a tester 
index_list.put(ind_list,complement_array.index("alfred"),ok);   -- a tester 
objet.create_place(complement_array.index("salon"));
insert_put(i1,ind_list,ob);

put("show i1 affectation display next line move put");
show(i1);

insert_go(i1,complement_array.index("nord"));
put("show i1 affectation display next line move put go");
show(i1);


run(i1);

--insert_erase(i1,ob);
--put("show i1 affectation display next line move put go");
--show(i1);

--insert_stop(i1);
--put("show i1 affectation display next line move put");
--show(i1);

i1:=null_object;
put("show i1vide");
show(i1);

insert_display(i2,vi_list);
insert_move(i2);

put("show i2 display move");
show(i2);

    view.Create_Sentence (vi, Identifier.From_String ("super");
    view_list.put(vi_list,vi);
    view.Create_Number (vi, 555);
      view_list.put(vi_list,vi); 

insert_display(i3,vi_list);

insert(i1,c,i2,i3);
show (i1);
run(i1);

complement_array.show;
end;