2.4.1

Слияние двух проходов в один:
программа на Рефале


 
Fab     {    = ;
A ex   =   B <Fab ex >;
s ex   =   sa <Fab ex >;
}
Fbc     {   = ;
B ex   =   C <Fbс ex >;
sa ex   =   sa <Fbс ex >;
}
Fabc { ex   =   <Fbc <Fab ex>>;
}
 

Пример вычисления:
<Fabc A B D>
<Fbc <Fab A B D>>
<Fbc B <Fab B D>>
<Fbc B B <Fab D>>
<Fbc B B D <Fab>>
<Fbc B B D>
C <Fbc B D>
C C <Fbc D>
C C D <Fbc>
C C D