* формат обращения - <Adds (e.s) (e.1) e.2 >
* e.s - основание системы счисления,
* e.1 , e.2 - слагаемые - последовательности макроцифр
* для отладочного пуска
$ENTRY Go {
= <Prout <Adds 10 ( 1 9 9 9 )
1 9 9 9
> > ;
}
Addss { e1 = <UBR <Adds e1 >> ;}
UBR { e1 s2 s3 = s2 s3 ; }
Adds { e1 = <Adds1 0 e1 > ; }
Adds1 {
s.Per ss (e1 s2) e3 s4 =
<Adds2 ( <N s.Per ss s2 s4 > )
ss (e1) e3 >;
0 ss ( ) = ;
s.Per ss ( ) e3 = <Adds1 0 ss ( s.Per) e3>;
s.Per ss ( e1 ) = <Adds1 0 ss (e1) s.Per >;
}
N { s.Per ss s2 s4, <Add (s2) s4 >: s5,
<Add (s5) s.Per>: s6,
<Divmod (s6) ss>:e7
= e7 ;
}
Adds2 { ( (sQ) sR ) e1 = <Adds1 sQ e1 > sR ; }