1.2.4

Интерпретатор
языка арифметических выражений 

 
Fact     {      
    0 =  1;
    sN  =  <MUL (sN) <Fact <SUB (sN) 1>>>;
}
     
Эта же функция с использованием интерпретатора Arex:
 
Fact     {  
    0 =  1;
    sN  =  <Arex sN '*' Fact(sN '-' 1)>;
}
 
Интерпретатор Arex:
 
Arex {
sN sN;
eX '+' eY <ADD (<Arex eX>) <Arex eY>>;
eX '-' eY '-' eZ  <Arex (eX '-' eY) '-' eZ>;
eX '-' eY <SUB (<Arex eX>) <Arex eY>>;
eX '*' eY <MUL (<Arex eX>) <Arex eY>>;
(eX) <Arex eX>;
sF (eX) <Apply sF <Arex eX>>;
}
 
Apply {
Fact eN   =  <Fact eN>;
...
}