Насколько я понимаю, программа должна определять правильность расстановки скобок?
Меня здесь смущает строчка
Код:
new(l);
(по-моему, вместо этого должно быть l := nil;)
и строчка
Код:
if s<>nil then t^.next:=s;
(в случае, когда s = nil, поле t^.next оказывается неинициализированным). Лучше просто
Код:
t^.next := s;
(т.е. убрать if).
И, таки да, напишите, в каких случаях не идёт Ваша программа.