// **************************************************************************
//
//                   Описание группы существительного
//                   (правильное, но неупорядоченное)
// **************************************************************************

# define gr_sub_core_src \
	      гр_существительного( &Число )\
	      фраза_тот_что     \
	      фраза_whether     \
	      фраза_that        \
	      гр_числительного  \
	      гр_числительного_а

# define gr_sub_core_dst \
	      гр_существительного( &Род, Падеж, &Число )\
	      фраза_тот_что( Падеж )                  \
	      фраза_whether                           \
	      фраза_that                              \
	      гр_числительного( &Род, Падеж, &Число ) \
	      гр_числительного_а( Падеж, &Число )

// ---------- перечислимые типы --------------------------------------------
@Перевод
{
   @Структура заголовок11 = @0[not] @0[all] ;
   @Структура заголовок11 = @0[не_все] ;
}
@Перевод
{  // ------- то, что может стоять перед артиклем --------------------------
   // ------- приделать параметры к русской части
   @Выбор    _заголовок1 =
              @0[all] @0[both] @0[such]  @0[no]      @0[which]
	      заголовок11 @00 ;
   @Выбор    _заголовок1( род &Род, число &Число, падеж &Падеж ) =
              @0[все] @0[оба]  @0[такой] @0[никакой] @0[который]
	      заголовок11 @00 ;
}
@Перевод
{  // ------- добавить this that и пр
   @Выбор     _артикль =
              @0[a] @0[an] @0[the] @00 ;
   @Выбор     _артикль( род &Род, число &Число, падеж &Падеж ) =
              @00   @00    @00     @00 ;
}
// ---------- заголовки ----------------------------------------------------
@Перевод
{
   @Структура заголовок = _заголовок1 _артикль ;
   @Структура заголовок( род &Род, число &Число, падеж &Падеж ) =
              _заголовок1  ( Род, Число, Падеж )
	      _артикль      ( Род, Число, Падеж );
}
// ----------- определитель прилагательный ---------------------
@Перевод
{
   @Выбор      опр_прилагательный2 =
	       гр_прил_п 
               прил( &Смысл )
	       квази_прил( &Смысл )
	       мест_прил
	       гр_прил_п0
	       числ_порядковое
	       ;
   @Выбор      опр_прилагательный2( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
	       гр_прил_п ( Род, Душа, Падеж, Число )
               прил      ( Род, Душа, Падеж, Число )
	       квази_прил( Род, Душа, Падеж, Число )
	       мест_прил ( Род,       Падеж, Число )
	       гр_прил_п0( Род, Душа, Падеж, Число )
	       числ_порядковое( Падеж ) // сделано хреново (не учитывает составной случай)
	       ; 
}
@Перевод
{
   @Структура  опр_прилагательный1 =
              _Наречие_степени
               опр_прилагательный2 _and_or
	      _опр_прилагательный ;

   @Структура  опр_прилагательный1( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
              _Наречие_степени
               опр_прилагательный2( Род, Душа, Падеж, Число ) _and_or
              _опр_прилагательный ( Род, Душа, Падеж, Число ) ;
}
@Перевод
{
   @Выбор     _опр_прилагательный =
               опр_прилагательный1
	       @00 ;

   @Выбор     _опр_прилагательный( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
               опр_прилагательный1( Род, Душа, Падеж, Число )
               @00 ;
}
// ------------------- определитель правый ---------------------
@Перевод
{
   @Структура  опр_правый1 = прил11( &Смысл ) _And _опр_правый ;
   @Структура  опр_правый1 = прил11           _And _опр_правый ;
}
@Перевод
{
   @Выбор     _опр_правый  = опр_правый1 @00 ;
   @Выбор     _опр_правый  = опр_правый1 @00 ;
}
// ---------- хвосты существительного ---------------------------
@Перевод
{
   @Выбор     и__гр_сущ1 =
              мест_сущ1( &Род, &Лицо, &Число )
              мест_сущ2
	      мест_сущ3( &Род, &Лицо, &Число )
	      gr_sub_core_src
              ;
   @Выбор     и__гр_сущ1( падеж &Падеж ) =
              мест_сущ1( &Род, Лицо, &Число, Падеж )
              мест_сущ2( Падеж )
	      мест_сущ3( &Род, Лицо, &Число, Падеж )
	      gr_sub_core_dst
	      ;
}
@Перевод
{  @Структура и__гр_сущ2                 = and_or и__гр_сущ1 ;
   @Структура и__гр_сущ2( падеж &Падеж ) = and_or и__гр_сущ1( Падеж ) ;
}
@Перевод
{
   @Выбор    _и__гр_сущ                 = @00 и__гр_сущ2 ;
   @Выбор    _и__гр_сущ( падеж &Падеж ) = @00 и__гр_сущ2( Падеж ) ;
}

@Перевод
{  @Структура гр_сущ_рп = @0[of] гр_существительного( &Число ) ;
   @Структура гр_сущ_рп = гр_существительного( &Род, %Р, %Ед ) ;
}
@Перевод
{  @Структура of_фраза = @0[of] фраза_обстоятельство ;
   @Структура of_фраза =        фраза_обстоятельство ;
}
@Перевод
{  @Структура предлог_сущ = _Not Предлог           гр_сущ_а ;
   @Структура предлог_сущ = _Not Предлог( &Падеж ) гр_сущ_а( Падеж ) ;
}
@Перевод
{  // было _Not гр_глагола( &S1, Form3 ) ;
   @Структура причастие = _Not гр_глагола_а( &S1, Form3 ) ;
   @Структура причастие( род &Род, падеж &Падеж, число &Число ) = 
              _Not гр_глагола_а( %Сов,%причастие,Число,%прошлое,Род,%Пассив,Падеж ) ;
}
@Перевод
{
   @Выбор _хвост_сущ =
           гр_сущ_рп
	   причастие
	   чтобы_to_inf_akt( &S1 )
	   to_inf_akt      ( &S1 )
	   гр_inf_причастие( &S1 )
	   гр_ing1         ( &S1 )
	   for_фраза
	   предлог_сущ
	   союз_глагол     ( &S1 )
           фраза_that
           фраза_дополнение
           фраза_дополнение_сущ
	   of_фраза
	   @00 ;
   @Выбор _хвост_сущ( род &Род, падеж &Падеж, число &Число ) =
           гр_сущ_рп
	   причастие       ( Род, Падеж, Число )
	   чтобы_to_inf_akt
	   to_inf_akt
	   гр_inf_причастие( Род, Падеж, Число )
	   гр_ing1         ( Род, Падеж, Число )
	   for_фраза
	   предлог_сущ
	   союз_глагол
           фраза_that
           фраза_дополнение( Падеж )
           фраза_дополнение_сущ( Род, Падеж, Число )
	   of_фраза
	   @00 ;
}
@Перевод
{
   @Выбор _хвост_местоимения =
           гр_сущ_рп
	   @0[all]
	   гр_ing1        ( &S1 ) // по моему, все что ниже надо удалить
	   предлог_сущ
	   фраза_that
           фраза_дополнение
           фраза_дополнение_сущ
	   @00 ;
   @Выбор _хвост_местоимения( род &Род, падеж &Падеж, число &Число ) =
           гр_сущ_рп
	   @0[все]
	   гр_ing1( Род, Падеж, Число )
	   предлог_сущ
	   фраза_that
           фраза_дополнение( Падеж )
           фраза_дополнение_сущ( Род, Падеж, Число )
	   @00 ;
}
@Перевод
{  @Выбор     сущ1( число Число ) =
	      гр_сущ_п  ( &Число )
	      сущ       ( &Число )
	      гр_сущ_п01( &Число ) ;
   @Выбор     сущ1( род Род, душа Душа, падеж &Падеж, число &Число ) =
	      гр_сущ_п  ( &Род, &Душа, Падеж, Число )
	      сущ       ( &Род, &Душа, Падеж, Число )
	      гр_сущ_п01( &Род, &Душа, Падеж, Число ) ;
}

// ---------- существительное со всеми его определениями --------
@Перевод 
{
   @Структура гр_существительного( число Число ) =
             _Наречие_степени
	      заголовок
	     _опр_правый<1>
	     _опр_прилагательный
	     _опр_правый<2>
	      сущ1( &Число  )
	     _хвост_сущ ;
   @Структура гр_существительного( род Род, падеж &Падеж, число Число ) =
             _Наречие_степени
	      заголовок( Род, Число, Падеж )
	     _опр_прилагательный( Род, Душа, Падеж, Число )
	      сущ1( &Род, &Душа, Падеж, &Число )
	     _опр_правый<1>
	     _опр_правый<2>
	     _хвост_сущ( Род, Падеж, Число ) ;
   table_chislo( Число )
}
// ---------------------------------------------------------------
@Перевод
{  @Выбор     гр_мест( род Род, лицо Лицо, число Число ) =
              мест_сущ1( &Род, &Лицо, &Число )
	      мест_сущ3( &Род, &Лицо, &Число );
   @Выбор     гр_мест( род Род, лицо &Лицо, число Число, падеж &Падеж ) =
              мест_сущ1( &Род, Лицо, &Число, Падеж )
	      мест_сущ3( &Род, Лицо, &Число, Падеж );
}
@Перевод
{  @Выбор     гр_мест_a( род Род, лицо Лицо, число Число ) =
              мест_сущ2
	      мест_сущ3( &Род, &Лицо, &Число );
   @Выбор     гр_мест_a( род Род, лицо &Лицо, число &Число, падеж &Падеж ) =
              мест_сущ2( Падеж )
	      мест_сущ3( &Род, Лицо, Число, Падеж );
}
@Перевод
{
   @Структура  гр_местоимения( род Род, лицо Лицо, число Число ) =
	       гр_мест( &Род, &Лицо, &Число )
	      _хвост_местоимения ;
   @Структура  гр_местоимения( род Род, лицо &Лицо, число Число, падеж &Падеж ) =
	       гр_мест( &Род, Лицо, &Число, Падеж )
	      _хвост_местоимения( Род, Падеж, Число ) ;
}
@Перевод
{  // очень хочется стереть Лицо и Число, тем не менее этог не надо делать
   @Структура  гр_местоимения_а( род Род, лицо Лицо, число Число ) =
	       гр_мест_a( &Род, &Лицо, &Число )
	      _хвост_местоимения ;
   @Структура  гр_местоимения_а( род Род, лицо &Лицо, число Число, падеж &Падеж ) =
	       гр_мест_a( &Род, Лицо, &Число, Падеж )
	      _хвост_местоимения( Род, Падеж, Число ) ;
}
// ---------------- группа существительного ----------------------

@Перевод
{  // ------- подлежащее --------------
   @Выбор2    гр_сущ1( число Число, лицо Лицо ) =
              гр_местоимения( &Род, &Лицо ,&Число )
	      gr_sub_core_src
	      ;
   @Выбор2    гр_сущ1( число Число, лицо &Лицо, падеж &Падеж, род Род ) =
              гр_местоимения( &Род, Лицо, &Число, Падеж )
	      gr_sub_core_dst
	      ;
   @Таблица( @Выбор, лицо Лицо = лицо Лицо )
   {
      1  1е = 1е ;
      1  2е = 2е ;
      1  3е = 3е ;
      2  @0 = 3е ;
      3  @0 = 3е ;
      4  @0 = 3е ;
      5  @0 = 3е ;
      6  @0 = 3е ;
      7  @0 = 3е ;
      8  @0 = 3е ;
      9  @0 = 3е ;
   }
}
@Перевод
{  // ------- подлежащее модальных фраз --------
   @Выбор2    гр_сущ_м1( число Число, лицо Лицо ) =
              гр_местоимения( &Род, &Лицо ,&Число )
	      Вопрос_к_подлежащему
	      gr_sub_core_src
	      ;
   @Выбор2    гр_сущ_м1( число Число, лицо &Лицо, падеж &Падеж, род Род ) =
              гр_местоимения( &Род, Лицо, &Число, Падеж )
	      Вопрос_к_подлежащему  ( Падеж )
	      gr_sub_core_dst	      
	      ;
   @Таблица( @Выбор, лицо Лицо = лицо Лицо )
   {
      1  1е = 1е ;
      1  2е = 2е ;
      1  3е = 3е ;
      2  @0 = 3е ;
      3  @0 = 3е ;
      4  @0 = 3е ;
      5  @0 = 3е ;
      6  @0 = 3е ;
      7  @0 = 3е ;
      8  @0 = 3е ;
      9  @0 = 3е ;
     10  @0 = 3е ;
   }
}
@Перевод
{  // ------- это для всего остального ----------
   @Выбор2    гр_сущ_а1 =
              гр_местоимения_а( &Род, &Лицо ,&Число )
	      фраза_тот_что
	      gr_sub_core_src
	      ;
   @Выбор2    гр_сущ_а1( число Число, лицо Лицо, падеж &Падеж, род Род ) =
              гр_местоимения_а( &Род, Лицо, &Число, Падеж )
	      фраза_тот_что( Падеж )
	      gr_sub_core_dst
	      ;
// с параметрами надо мудрить
// что-то тут с числом интересное
}
// ---------- все эти группы используются в других конструкциях -----------
@Перевод
{  // ------- подлежащее ---------
   @Структура гр_сущ( число Ч, лицо Л ) = 
              гр_сущ1( &Ч, &Л )  _и__гр_сущ ;
   @Структура гр_сущ( число Ч, лицо Л, падеж &Падеж, род Р ) =
              гр_сущ1( &Ч, &Л, Падеж, &Р )  _и__гр_сущ( Падеж ) ;
}
@Перевод
{  // ------- подлежащее модальных фраз ---------
   @Структура гр_сущ_м( число Ч, лицо Л ) = 
              гр_сущ_м1( &Ч, &Л )  _и__гр_сущ ;
   @Структура гр_сущ_м( число Ч, лицо Л, падеж &Падеж, род Р ) =
              гр_сущ_м1( &Ч, &Л, Падеж, &Р )  _и__гр_сущ( Падеж ) ;
}
@Перевод
{  // ------- это для дополнения 
   @Структура гр_сущ_а = 
              гр_сущ_а1  _и__гр_сущ ;
   @Структура гр_сущ_а( падеж &Падеж ) =
              гр_сущ_а1( &Ч, Л, Падеж, &Р )  _и__гр_сущ( Падеж ) ;
}
@Перевод
{  // ------- это для подлежащего придаточных фраз
   @Структура гр_сущ_б = 
              гр_сущ_а1  _и__гр_сущ ;
   @Структура гр_сущ_б( число Ч, лицо &Л, падеж &Падеж, род Р ) =
              гр_сущ_а1( &Ч, Л, Падеж, &Р )  _и__гр_сущ( Падеж ) ;
}
@Перевод
{  // ------- это для хвоста_is
   @Структура гр_сущ_в = 
              гр_сущ_а1  _и__гр_сущ ;
   @Структура гр_сущ_в( число Ч, падеж &Падеж, род Р ) =
              гр_сущ_а1( &Ч, Л, Падеж, &Р )  _и__гр_сущ( Падеж ) ;
}
