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