with ada.integer_text_io; use ada.integer_text_io;
with P_pile;
procedure evalue is
package pile_int is new P_pile(integer); use pile_int;
function post_fix return integer is
type Tvect is array (integer range <>) of character;
vect:Tvect:=('4',' ','2','5','+');
p:Tpile;
d1,d2:integer;
nb:integer:=0;
resultat:integer:=0;
begin
creer(p);
for I in vect'range
loop
if (vect(I)/='+' and vect(I)/='-' and vect(I)/='*' and vect(I)/='/')
then
if vect(I)>='0' and vect(I)<='9'
then
-- nb:=nb*10+vect'pos(vect(I)-vect'pos('0'));
nb:=nb*10+(character'pos(vect(I))-character'pos('0'));
else
empile(p,nb);
nb:=0;
end if;
else
--
empile(p,nb);
--
d1:=v_sommet(p);
depile(p);
d2:=v_sommet(p);
depile(p);
case vect(I) is
when '+' => resultat:=d1+d2;
when '-' => resultat:=d2-d1;
when '*' => resultat:=d1*d2;
when '/' => resultat:=d2/d1;
when others => null;
end case;
empile(p,resultat);
end if;
end loop;
return resultat;
end post_fix;
begin
put(post_fix);
end evalue;