*$MST_FROM_ENTRY;
$EXTRN Prout, Open, Putout;
$ENTRY Go {
= <Open 'w' 1 'skazka.txt'> <Nach > <Skazka > <End >;
}
Nach {
= <Out (' СКАЗКА ПРО РЕПКУ ') () ()>;
}
Skazka {
= <Begin> <Cikl
(('дедка')) ('бабка') ('внучка') ('Жучка') ('кошка') ('мышка')>;
}
Begin {
= <Out ('Посадил дед репку.')
('Выросла репка большая-пребольшая.')
('Стал дед репку тянуть.')
('Тянет-потянет - вытянуть не может.')
()>;
}
Cikl {
(e.1) (e.2) e.3 = <Out <Cikl1 (e.1) (e.2)> ()>
<Cikl (e.1 (e.2)) e.3>;
(e.1) = ;
}
Cikl1 {
(e.1 (e.2)) (e.3) = (<Pozval (e.2) (e.3)>)
('дедка за репку')
<Za e.1 (e.2) (e.3)>
(<Tjanut (e.3)>);
}
Pozval {
(e.1) (e.2) = 'Позвал' <Pozval1 e.1> ' ' e.1 ' ' <Y e.2> ':';
}
Pozval1 {
'дедка' = ;
e.1 = 'а';
}
Y {
e.1 s.a = e.1 'у';
}
Tjanut {
(e.1) = 'тянут-потянут - ' <Tjanut1 e.1>;
}
Tjanut1 {
'мышка' = 'вытянули репку.';
e.1 = 'вытянуть не могут.';
}
Za {
(e.1) (e.2) e.3 = (<Za1 (e.1) (e.2)>)
<Za (e.2) e.3>;
(e.1) = ;
}
Za1 {
(e.1) (e.2) = e.2 ' за ' <Y e.1> ',';
}
Out {
* (e.1) e.2 = <Prout ' ' e.1> <Out e.2>;
(e.1) e.2 = <Putout 1 ' ' e.1> <Out e.2>;
* (e.1) e.2 = <Putout 1 e.1> <Out e.2>;
= ;
}
End {
= <Out ('Вот и сказке конец,')
('кто слушал - молодец!')>;
}