*$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 ('Вот и сказке конец,') ('кто слушал - молодец!')>; }