Задача 2 Алгоритмическая подготовка

Задача 2

Решите на Паскале и/или JS Задачку №8 Урока 20, про расчет с помощью рекурсии выражений вида:

5*(3+4)-7*9+3*(2+(2-7))

с помощью рекурсии.

var stroka: string;
    p: integer;

function fun(a1,d1: integer; var b1: integer): integer;
begin
  result:=d1+a1*b1;
  b1:=1;
end;

function fun1(var i: integer; s: string): integer;
var str: string;
    a,b,d,k,code: integer;
    f:boolean;
begin
  str:='';
  b:=1;
  d:=0;
  k:=0;
  i:=i+1;
  while (i<=(length(s)+1)) do
  begin
    if (s[i]>='0') and (s[i]<='9') then
      str:=str+s[i]
    else
    begin
    val(str,a,code);
    str:='';
    if (s[i]=')') then
    begin
      result:=fun(a,d,b);
      exit;
    end
    else if (s[i]='(') then
    begin
      a:=fun1(i,s);
      i:=i+1;
    end;
    if (s[i]='*') then
      b:=fun(a,k,b)
    else if (s[i]='+') then
      d:=fun(a,d,b)
    else begin
      d:=fun(a,d,b);
      b:=b*(-1);
    end;
    end;
    i:=i+1;
  end;
  result:=d;
end;

begin
  writeln('vvedite posledovatelnost');
  readln(stroka);
  p:=0;
  writeln(fun1(p,stroka));
  readln();
end.