// **************************************************************************
//                  все, что имеет отношение к ядру
//
// **************************************************************************

// **************************************************************************
//                 фраза с обычным глаголом
// **************************************************************************
@Перевод
{
   @Структура ядро_повест( см_глагола S1 ) = 
	      гр_сущ( &Число, &Лицо ) !сказуемое( &S1 ) ;
   @Структура ядро_повест =
	      гр_сущ( &Число, &Лицо, %И, &Род ) !сказуемое( Лицо, Число, Род ) ;
   table_lizo( Лицо )
   table_chislo( Число )
}
@Перевод
{  @Выбор     ядро_вопрос1a( см_глагола S1 ) =
	      !ядро_вопрос_модальное( &S1 )
	      !ядро_вопрос	    ( &S1 )
              ;
   @Выбор     ядро_вопрос1a =
	      !ядро_вопрос_модальное( %Нет )
	      !ядро_вопрос( %Нет )      
              ;
}
@Перевод
{
   @Структура ядро_вопрос1( см_глагола S1 ) = 
              Вопрос_к_подлежащему     !сказуемое( &S1 ) ;
   @Структура ядро_вопрос1 = 
              Вопрос_к_подлежащему(%И) !сказуемое( %3е, %Ед, %М ) ;
}
@Перевод
{
   @Структура ядро_вопрос2( см_глагола S1 ) = 
              Вопрос_к_обстоятельству  !ядро_вопрос1a( &S1 ) ;
   @Структура ядро_вопрос2 = 
              Вопрос_к_обстоятельству  !ядро_вопрос1a ;
}
// ---------------- ядро --------------------------------------------------
@Перевод
{
   @Выбор     ядро( см_глагола S1 ) =
	      !ядро_модальное       ( &S1 )
              !ядро_повест          ( &S1 )
	      !ядро_вопрос_модальное( &S1 )
	      !ядро_вопрос          ( &S1 )
	      !ядро_вопрос1         ( &S1 )
	      !ядро_вопрос2         ( &S1 )
	      !ядро_повелит         ( &S1 )
	      ;
   @Выбор     ядро =
	      !ядро_модальное
              !ядро_повест
	      !ядро_вопрос_модальное( %Нет )
	      !ядро_вопрос( %Нет )
	      !ядро_вопрос1
	      !ядро_вопрос2
	      !ядро_повелит ;
}
@Перевод
{
   @Выбор     ядро_прид( см_глагола S1 ) =
              !ядро_повест   ( &S1 )
	      !ядро_модальное( &S1 )
	      ;
   @Выбор     ядро_прид =
              !ядро_повест
	      !ядро_модальное
	      ;
}
// ----------- фраза обычная ------------------------------
@Перевод
{
   @Структура фраза_а = ядро( &S1 ) хвост_а ;
   @Структура фраза_а = ядро        хвост_а ;
}
@Перевод
{
   @Структура фраза_б = ядро( %восприятия ) все_все ;
   @Структура фраза_б = ядро                все_все ;
}
@Перевод
{
   @Структура фраза_вопрос3 = 
              Вопрос_к_подлежащему  ядро_вопрос1a( &S1 )  хвост_а  Предлог ;
   @Структура фраза_вопрос3 = 
              Предлог( &Падеж ) Вопрос_к_подлежащему(Падеж) ядро_вопрос1a хвост_а ;
}
@Перевод
{
   @Выбор     фраза_0 = фраза_пп фраза_have_пп фраза_а фраза_б фраза_вопрос3 ;
   @Выбор     фраза_0 = фраза_пп фраза_have_пп фраза_а фраза_б фраза_вопрос3 ;
}
@Перевод
{
   @Структура фраза   = _пред_обстоятельство  фраза_0  _обстоятельство ;
   @Структура фраза   = _пред_обстоятельство  фраза_0  _обстоятельство ;
}
// ---------- фраза придаточная ----------------------------
@Перевод
{
   @Структура фраза_а_прид = ядро_прид( &S1 ) хвост ;
   @Структура фраза_а_прид = ядро_прид        хвост ;
}
@Перевод
{
   @Структура фраза_б_прид = ядро_прид( %восприятия ) все_все ;
   @Структура фраза_б_прид = ядро_прид                все_все ;
}
@Перевод
{
   @Выбор     фраза_прид1 = 
              фраза_прид_пп
	      фраза_have_прид_пп
	      фраза_а_прид
	      фраза_б_прид ;
   @Выбор     фраза_прид1 = 
              фраза_прид_пп
	      фраза_have_прид_пп
	      фраза_а_прид
	      фраза_б_прид ;
}
// **************************************************************************
//            фраза с глаголом have
//            а вот между прочим нету ядро_вопрос2
// **************************************************************************
@Перевод
{
   @Выбор     ядро_have =
              ядро_have_модальное
	      ядро_have_вопрос_модальное
              ядро_повест_have
	      ядро_вопрос_have
	      ядро_вопрос_have1
	      ;
   @Выбор     ядро_have( число &Число, род &Род, падеж Падеж ) =
              ядро_have_модальное       ( Число, Род, &Падеж )
	      ядро_have_вопрос_модальное( %Нет )
              ядро_повест_have          ( Число, Род, &Падеж )	      
	      ядро_вопрос_have
	      ядро_вопрос_have1         ( Число, Род, &Падеж )
	      ;
}
@Перевод
{
   @Выбор     ядро_have_прид =
              ядро_повест_have
	      ;
   @Выбор     ядро_have_прид( число &Число, род &Род, падеж Падеж ) =
              ядро_повест_have( Число, Род, &Падеж )
	      ;
}
@Перевод
{
   @Структура фраза_have1 = 
              _пред_обстоятельство ядро_have хвост_have ;
   @Структура фраза_have1 = 
              _пред_обстоятельство ядро_have( Число, Род, &Падеж ) хвост_have( &Число, Падеж, &Род ) ;
}
// ---------------------------------------------------------
@Перевод
{
   @Выбор    фраза_have = 
             фраза_have1
	     фраза_вопрос_have2
	     ;
   @Выбор    фраза_have = 
             фраза_have1
	     фраза_вопрос_have2
	     ;
}
@Перевод
{
   @Структура фраза_have_прид = ядро_have_прид хвост_have ;
   @Структура фраза_have_прид = ядро_have_прид( Число, Род, &Падеж ) хвост_have( &Число, Падеж, &Род ) ;
}
// **************************************************************************
//                 фраза с глаголом be
// **************************************************************************
@Перевод
{
   @Структура ядро_be_прид =
	      гр_сущ( &Число, &Лицо ) !сказуемое_be0 ;
   @Структура ядро_be_прид( число Число, род Род ) =
	      гр_сущ( &Число, &Лицо, %И, &Род ) !сказуемое_be0( Лицо, Число, Род ) ;
   table_lizo( Лицо )
   table_chislo( Число )
}
/*
@Перевод
{
   @Структура ядро_повест1_be =
	      гр_сущ( &Число, &Лицо ) сказуемое_be ;
   @Структура ядро_повест1_be( число Число, род Род ) =
	      гр_сущ( &Число, &Лицо, %И, &Род ) сказуемое_be( Лицо, Число, Род ) ;
   table_lizo( Лицо )
   table_chislo( Число )
}
*/
@Перевод
{
   @Структура ядро_вопрос_be1 = Вопрос_к_подлежащему     !сказуемое_be0 ;
   @Структура ядро_вопрос_be1 = Вопрос_к_подлежащему(%И) !сказуемое_be0( %3е, %Ед, %М ) ;
}
@Перевод
{
   @Структура ядро_вопрос_be2 = Вопрос_к_обстоятельству !ядро_вопрос_be ;
   @Структура ядро_вопрос_be2 = Вопрос_к_обстоятельству !ядро_вопрос_be( %Нет ) ;
}
// ---------------- ядро be ----------------------------------------------
@Перевод
{
   @Выбор     ядро_be =
              !ядро_be_модальное
              !ядро_be_прид
	      !ядро_вопрос_be_модальное
	      !ядро_вопрос_be
	      !ядро_вопрос_be1
	      !ядро_вопрос_be2
	      !ядро_повелит_be
	      ;
   @Выбор     ядро_be( число Число, род Род ) =
              !ядро_be_модальное
              !ядро_be_прид( &Число, &Род )
	      !ядро_вопрос_be_модальное( %Да )
	      !ядро_вопрос_be( %Да )
	      !ядро_вопрос_be1
	      !ядро_вопрос_be2
	      !ядро_повелит_be
	      ;
}
// -----------------------------------------------------------------------
@Перевод
{
   @Структура1 фраза_be_пп = ядро_be                  хвост_be_a ;
   @Структура1 фраза_be_пп = ядро_be( &Число, &Род )  хвост_be_a( Число, Род, %Н, %И ) ;

   @Таблица( @Выбор = число Число )
   {  @0 = Ед ;  }
   @Таблица( @Выбор = род Род )
   {  @0 = М ;   }
}
@Перевод
{
   @Структура1 фраза_be_прид_пп = ядро_be_прид                  хвост_be_a ;
   @Структура1 фраза_be_прид_пп = ядро_be_прид( &Число, &Род )  хвост_be_a( Число, Род, %Н, %И ) ;

   @Таблица( @Выбор = число Число )
   {  @0 = Ед ;  }
   @Таблица( @Выбор = род Род )
   {  @0 = М ;   }
}
@Перевод
{
   @Структура1 фраза_be_whether_пп = ядро_be_whether                  хвост_be_a ;
   @Структура1 фраза_be_whether_пп = ядро_be_whether( &Число, &Род )  хвост_be_a( Число, Род, %Н, %И ) ;

   @Таблица( @Выбор = число Число )
   {  @0 = Ед ;  }
   @Таблица( @Выбор = род Род )
   {  @0 = М ;   }
}
// ------ фраза be+constant ------------------------------------
@Перевод
{
   @Структура2 фраза_be1_пп = ;
   @Структура2 фраза_be1_пп = ;
}
@Перевод
{
   @Структура2 фраза_be1_прид_пп = ;
   @Структура2 фраза_be1_прид_пп = ;
}
@Перевод
{
   @Структура2 фраза_be1_whether_пп = ;
   @Структура2 фраза_be1_whether_пп = ;
}
// --------------------------------------------------------------
@Перевод
{
   @Выбор     фраза_be_а = фраза_be_пп фраза_be1_пп ;
   @Выбор     фраза_be_а = фраза_be_пп фраза_be1_пп ;
}
@Перевод
{
   @Структура фраза_be =  _пред_обстоятельство  фраза_be_а  _обстоятельство ;
   @Структура фраза_be =  _пред_обстоятельство  фраза_be_а  _обстоятельство ;
}
@Перевод
{
   @Структура фраза_be_предлог = 
                            гр_сущ( &Число, &Лицо ) !сказуемое_be0    
			    гр_квази_наречия  _хвост_квази_наречия  _обстоятельство Предлог ;
   @Структура фраза_be_предлог = 
              Предлог( &П ) гр_сущ( &Число, &Лицо, П, &Род ) !сказуемое_be0( Лицо, Число, Род ) 
	                    гр_квази_наречия  _хвост_квази_наречия  _обстоятельство ;
}
// **************************************************************************
//                 фраза с there_is
// **************************************************************************

@Перевод
{
   @Структура ядро_вопрос_there2 = Вопрос_к_обстоятельству ядро_вопрос_there ;
   @Структура ядро_вопрос_there2( число &Число, род &Род ) = 
              Вопрос_к_обстоятельству ядро_вопрос_there( Число, Род, %Нет ) ;
}
// --------------------------------------------------------
@Перевод
{
   @Выбор     ядро_there =
	      ядро_повест_there
	      ядро_вопрос_there
	      ядро_вопрос_there2
	      ;
   @Выбор     ядро_there( число &Число, род &Род, падеж Падеж ) =
	      ядро_повест_there( Число, Род, &Падеж, %Нет )
	      ядро_вопрос_there( Число, Род, %Нет )
	      ядро_вопрос_there2(Число, Род )
	      ;
}
@Перевод
{
   @Структура  фраза_there = 
              _пред_обстоятельство  ядро_there  хвост_there_a  _обстоятельство ;
   @Структура  фраза_there =
              _пред_обстоятельство
               ядро_there( Число, Род, &Падеж ) 
	       хвост_there_a( &Число, Падеж, &Род ) 
	      _обстоятельство ;
   // ------- грубое хакерство -----------
   @Таблица( @Выбор = падеж Падеж )
   {  @0 = И ;
   }
}
@Перевод
{
   @Структура  фраза_there_прид = ядро_повест_there  хвост_there_a  _обстоятельство ;
   @Структура  фраза_there_прид = 
               ядро_повест_there( Число, Род, &Падеж, %Нет ) 
	       хвост_there_a( &Число, Падеж, &Род ) 
	      _обстоятельство ;
   // ------- грубое хакерство -----------
   @Таблица( @Выбор = падеж Падеж )
   {  @0 = И ;
   }
}
// **************************************************************************
//                 фраза It is квазинаречие + that_фраза
// **************************************************************************
@Перевод
{
   @Структура фраза_квазинаречие = 
              @0[it] сказуемое_be     
	      _No  гр_квази_наречия  _хвост_квази_наречия  _обстоятельство ;
   @Структура фраза_квазинаречие = 
              сказуемое_be( %3е, %Ед, %С ) 
	      _No  гр_квази_наречия  _хвост_квази_наречия  _обстоятельство ;
}

// -------------------------------------------------------------------------
@Перевод
{  // на самом деле придаточная
   @Выбор     фраза_повест =
              фраза_прид1
	      фраза_have_прид
	      фраза_there_прид
	      фраза_прид_пп
	      фраза_be_прид_пп
	      фраза_be1_прид_пп
	      фраза_have_прид_пп
	      ;
   @Выбор     фраза_повест =
              фраза_прид1
	      фраза_have_прид
	      фраза_there_прид
	      фраза_прид_пп
	      фраза_be_прид_пп
	      фраза_be1_прид_пп
	      фраза_have_прид_пп
	      ;
}
@Перевод
{
   @Структура понять_значит_упростить = 
              _пред_обстоятельство  to_inf<1>( &S1 )   @0[is]     to_inf<2>( &S2 ) ;
   @Структура понять_значит_упростить = 
              _пред_обстоятельство  to_inf<1>(%Ед, %М) @0[значит] to_inf<2>(%Ед, %М) ;
}
@Перевод
{
   @Структура  понять_значит_упростить2 = 
              _пред_обстоятельство  глагол<1>( &S1, %Ing )  @0[is] глагол<2>( &S2, %Ing ) ;
   @Структура  понять_значит_упростить2 = 
              _пред_обстоятельство
	       глагол<1>( %Сов,%Inf,@0,@0,@0,@0,%Актив,@0 ) 
               @0[значит]
	       глагол<2>( %Сов,%Inf,@0,@0,@0,@0,%Актив,@0 ) ;
}
