ЕЛЕМЕНТИ СИНТАКСИЧНОГО АНАЛІЗУ
Якщо в програмі є взаємно рекурсивні підпрограми, то за правилами мови Паскаль спочатку в блоці охоплюючої їх програми (підпрограми) записуються лише заголовки кількох із них (зокрема, однієї), а замість їх блоків пишеться слово forward, тобто, "попереду". Решту підпрограм розміщують так, щоб вони містили виклики підпрограм, чиї заголовки (разом із блоком чи словом forward) уже записано вище. Підпрограми, записані спочатку без блоку, розміщаються в кінці зі скороченим заголовком вигляду
procedure <ім'я>; або function <ім'я>.
Список параметрів, дужки й тип функції в скороченому заголовку відсутні. У даному прикладі процедури E, T, F не мають параметрів, тому скорочені заголовки не відрізняються від повних.
Запишемо програму аналізу арифметичних виразів, вважаючи, що вираз набирається на клавіатурі, а читання його символів задається процедурою getc із модуля Inbuf (розділ 20):
program Aexan ( input, output );
uses Inbuf;
var ch : char;
ok : boolean;
procedure error;
begin ok := false; ch := finch end;
procedure E; { тут повний заголовок }
forward;
procedure F;
… E … { виклик процедури E }
end;
procedure T;
… F … { виклик процедури F }
end;
procedure E; { тут скорочений заголовок }
… T … { виклик процедури T }
end;
begin
ok := true; ch := getc;