Translit ->
Arg Dest : &String, Src : String,
    . : STR_RESTORE_CYRILLIC

A = < `DEC_A_CYR, `DEC_A_LAT > ..; - Spaces >A<
B = < `DEC_B_CYR, `DEC_B_LAT > ..; - Spaces >B<
C = < `DEC_C_CYR, `DEC_C_LAT > ..; - Spaces >C<
D = < `DEC_D_CYR, `DEC_D_LAT > ..; - Spaces >D<

Dest <- Src, STR_LOWER_CASE

T = A = B = C = D = .

Do 4
 Cyrillic <- T.1 ' '
 Translit <- T.2 ' '

 - T 'Dest' Translit Cyrillic

 T = A = B = C = D = .
;

/

T Translit ->
Arg Text : ^&String, Translit, Cyrillic : Array : String

Do T 'Text' Translit Cyrillic Token_length
Where Token_length = `DEC_MAX_TOKEN_LENGTH to 1 step -1

/

T T Translit ->
Arg Text : ^&String, Translit, Cyrillic : Array : String, Token_length : Integer

Do Text <- Text, Translit.i, Cyrillic.i 
   [ Translit.i._ = Token_length ]
Where i = 1 to Translit._

/