anchor.diff:          end else if (Op.Simbol = '(') then begin
             Stack.Push(Op.Simbol);
           end else if (Op.Simbol = ')') then begin
  -//          If the token is a right parenthesis:
  -//            Until the token at the top of the stack is a left parenthesis, pop operators off the stack onto the output queue.
  -//            Pop the left parenthesis from the stack, but not onto the output queue.
  -//            If the token at the top of the stack is a function token, pop it onto the output queue.
  -//            If the stack runs out without finding a left parenthesis, then there are mismatched parentheses.
             SawParenthesis := False;
             while (Stack.HasNext and (Stack.Peek <> '(')) do begin
               Output.Push(Stack.Pop);
  -            if (Output.Peek = '(') then
  -              SawParenthesis := True;
             end;
             if (Stack.Peek = '(') then begin
               SawParenthesis := True;
  
positive.code:   expr := 'sin(pi / 2)';
    expr := 'sin(-pi / 2)';
    expr := 'srt(4)';
              
    Writeln(Expr + '=' + EvalExpr(expr));
    Readln(expr);
  
negative.code:           Term1 := StrToFloat(Stack.Pop);
            Term2 := StrToFloat(Stack.Pop);
            Value := Power(Term2, Term1);
            Stack.Push(Value);
          end else if (LowerCase(Symbol) = 'sum') then begin
            Value := StrToFloat(Stack.Pop) + StrToFloat(Stack.Pop) + StrToFloat(Stack.Pop);
            Stack.Push(Value);
          end
            else begin
  