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>; | ||||||
... | |||||||
} |