// **************************************************************************
//   Описание англицкого языка в меру моих слабых сил
//   Левосторонняя оборотная версия
//   Протранслируйте меня с помощью команды g++ -E -o lang.txt -I. lang.cpp
// **************************************************************************

@Версия 00_00_00

# define verb_param   совершенность &S, форма &Ф, число &Ч, время &В, род &Р, \
                              залог &З, падеж &П

// **************************************************************************
//    Описание атомов
// **************************************************************************
@Атомы_источника
{  // ----------------- английский язык --------------------
   @Параметр число   {  Ед,Мн  };
   @Параметр род     {  М,Ж,С  };
   @Параметр степень {  простая,сравнительная,превосходная  };
   @Параметр лицо    {  1е,2е,3е  };
   @Параметр форма   {  Смысл,Inf,FormS,Form2,Form3,Ing  }; // форма глагола

   @Параметр смысл_наречия {  степени, времени, пространства, частоты, прочее  }; // нс нв нп нч .
   @Параметр смысл_прил    {  мораль, эмоции, прочее  }; // пм пэ .
   @Параметр см_глагола    {  восприятия, прочее  }; // m .

   @Часть_речи глагол ( см_глагола &Смысл, форма Форма ) ;
   @Часть_речи мод_глагол ( форма Форма  ) ;
   @Часть_речи связка ( форма Форма  ) ;
   @Часть_речи сущ ( число Число  );
   @Часть_речи прил ( смысл_прил &Смысл );
   @Часть_речи прил_сравн ;
   @Часть_речи прил11( смысл_прил &Смысл ); // правое определение
   @Часть_речи квази_прил ( смысл_прил &Смысл ); // существительное->прилагательное
   @Часть_речи наречие( смысл_наречия &Смысл );
   @Часть_речи числительное ;
   @Часть_речи числ_порядковое ;
   @Часть_речи вопрос ;
   @Часть_речи мест_сущ1 ( род &Род, лицо &Лицо, число &Число ); // подлежащее
   @Часть_речи мест_сущ2 ;                                       // дополнение
   @Часть_речи мест_сущ3 ( род &Род, лицо &Лицо, число &Число ); // подлежащее или дополнение
   @Часть_речи мест_прил ;
   @Часть_речи мест_числ ;
   @Часть_речи предлог ;
   @Часть_речи частица ( форма &Форма ) ;

   @Структура2 союз = ;
   @Структура2 вопрос_к_подлежащему_пп = ;
   @Структура2 вопрос_к_обстоятельству_пп = ;
   @Структура2 вопрос_к_to_be_пп = ;
   @Структура2 вопрос_к_прил_пп = ;
   @Структура2 вопрос_союз_пп = ;
   @Структура2 все_все_сп = ;
   @Структура2 обстоятельство_пп = ;

   @Структура1 гр_сущ_п0 ( число Число ) = сущ( &Число ) ;
   @Структура1 гр_прил_п0 = @1 ;
   
   @Структура1 гр_сущ_п1 ( число Число ) = @1 сущ( &Число ) ;
   @Структура1 гр_сущ_п2 ( число Число ) = сущ( &Число ) @1 ;
   @Структура1 гр_сущ_п3 ( число Число ) = сущ( &Число ) @1 гр_сущ_а ;
   @Структура1 гр_сущ_п4 ( число Число ) = @1 сущ( &Число ) @1 ;

   @Структура1 гр_прил_п1 = @1 сущ( &Число ) ;
   @Структура1 гр_прил_п2 = @1 глагол( &S1, %Inf ) ;

   @Структура2 гр_глагола_пп( форма Ф ) = ;
   @Структура2 гр_have_пп( форма Ф ) = ;
   @Множество  множ = сущ( &Ч ) прил( &S ) глагол( &S,&F ) наречие( &S ) ;
   @Множество  @знаковые_части_речи = 
               сущ( &Ч ) прил( &S ) глагол( &S,&F ) наречие( &S ) междометие ;
  
   # include <format_a.h>

   @Файлы глагол           формат1  { dicts/zform/english/en_verb_r };
   @Файлы мод_глагол       формат5  { dicts/zform/english/en_modal };
   @Файлы частица          формат1_2{ dicts/zform/english/en_tiny  };
   @Файлы связка           формат1_3{ dicts/zform/english/en_be  };
   @Файлы сущ              формат2  { dicts/zform/english/en_sub_r };
}
// *************************************************************************
//
// *************************************************************************
@Атомы_приемника
{  // ------------------------- русский язык ------------------
   @Параметр падеж   {  И,Р,Д,В,Т,П  };
   @Параметр число   {  Ед,Мн  };
   @Параметр род     {  М,Ж,С,Мн  };
   @Параметр степень {  сравнительная,превосходная  };
   @Параметр лицо    {  1е,2е,3е  };
   @Параметр время   {  прошлое,настоящее,будущее  };
   @Параметр залог   {  Актив,Пассив,Повелит  };
   @Параметр совершенность {  Сов,Несов  };
   @Параметр форма   {  Inf,глагол,причастие,деепричастие  };
   @Параметр вид     {  личное,возвратное  }; // вид местоимения
   @Параметр присутствие { Да,Нет };
   @Параметр душа    {  О,Н  };
   @Параметр ч_падеж {  Уступаю,Р,РВсе };
   @Параметр ч_число {  Ед,Мн,ЕдИ  };

   @Часть_речи глагол ( совершенность СС, форма Форма, лицо Лицо, 
                        число Число, время Время, род Род, залог Залог,
			    падеж Падеж ) ;
   @Часть_речи мод_глагол ( совершенность СС, форма Форма, лицо Лицо,
                            число Число, время Время, род Род ) ;
   @Часть_речи связка ( совершенность СС, форма Форма, лицо Лицо,
                            число Число, время Время, род Род  ) ;
//   @Часть_речи сущ  ( род &Род, падеж Падеж, число Число );
   @Часть_речи сущ  ( род &Род, душа &Душа, падеж Падеж, число Число );
   @Часть_речи прил ( род  Род, душа  Душа, падеж Падеж, число Число );
   @Часть_речи прил_сравн ;
   @Часть_речи прил11 ; // правое определение
   @Часть_речи квази_прил ( род  Род, душа &Душа, падеж Падеж, число Число ); // существительное->прилагательное
   @Часть_речи наречие ;
   @Часть_речи числительное( ч_падеж &ЧПадеж, ч_число &ЧЧисло, падеж Падеж ) ;
   @Часть_речи числ_порядковое( падеж Падеж ) ;

   @Часть_речи вопрос(  род Род, падеж Падеж, число Число );
   @Часть_речи мест_сущ1 ( род &Род, лицо &Лицо, число &Число, падеж Падеж ); // подлежащее
   @Часть_речи мест_сущ2 ( падеж Падеж ) ;                                    // дополнение
   @Часть_речи мест_сущ3 ( род &Род, лицо &Лицо, число &Число, падеж Падеж ); // подлежащее или дополнение
   @Часть_речи мест_прил ( род  Род, падеж Падеж, число Число );
   @Часть_речи мест_числ ; // должно быть число
   @Часть_речи предлог ( падеж &Падеж ) ;
   @Часть_речи частица ( присутствие Присутствие ) ;

   @Структура2 союз = ;
   @Структура2 вопрос_к_подлежащему_пп /*( падеж &П )*/ = ;
   @Структура2 вопрос_к_обстоятельству_пп = ;
   @Структура2 вопрос_к_to_be_пп = ;
   @Структура2 вопрос_к_прил_пп( род &Р, падеж &П, число &Ч ) = ;
   @Структура2 вопрос_союз_пп = ;
   @Структура2 все_все_сп = ;
   @Структура2 обстоятельство_пп = ;

   @Структура1 гр_сущ_п0( род Род, душа Душа, падеж &Падеж, число &Число ) =
               сущ( &Род, &Душа, Падеж, Число ) ;
   @Структура1 гр_прил_п0( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
               прил( Род, Душа, Падеж, Число ) ;

   @Структура1 гр_сущ_п1( род Род, душа Душа, падеж &Падеж, число &Число ) =
               прил( Род,  Душа, Падеж, Число )
	       сущ( &Род, &Душа, Падеж, Число ) ;
   @Структура1 гр_сущ_п2( род Род, душа Душа, падеж &Падеж, число &Число ) =
	       сущ( &Род, &Душа, Падеж, Число )
	       @1 ;
   @Структура1 гр_сущ_п3( род Род, душа Душа, падеж &Падеж, число &Число ) =
               прил( Род,  Душа, Падеж, Число )
	       сущ( &Род, &Душа, Падеж, Число )
	       @1 ;
   @Структура1 гр_сущ_п4( род Род, душа Душа, падеж &Падеж, число &Число ) =
               прил( Род,  Душа, Падеж, Число )
               прил( Род,  Душа, Падеж, Число )
	       сущ( &Род, &Душа, Падеж, Число ) ;
   @Структура1 гр_сущ_п5( род Род, душа Душа, падеж &Падеж, число &Число ) =
	       сущ( &Род, &Душа, Падеж, Число )	       
	       гр_сущ_а( &Падеж1 ) ;
   @Структура1 гр_сущ_п6( род Род, душа Душа, падеж &Падеж, число &Число ) =
               прил( Род,  Душа, Падеж, Число )
	       сущ( &Род, &Душа, Падеж, Число )
	       сущ( &Род1, &Душа1, &Падеж1, Число ) ;
   @Структура1 гр_сущ_п7( род Род, душа Душа, падеж &Падеж, число &Число ) =
               прил( Род,  Душа, Падеж, Число )
	       сущ( &Род, &Душа, Падеж, Число )
	       @1
	       сущ( &Род1, &Душа1, &Падеж1, Число ) ;
   @Структура1 гр_сущ_п8( род Род, душа Душа, падеж &Падеж, число &Число ) =
	       сущ( &Род, &Душа, Падеж, Число )
	       @1
	       гр_сущ_а( &Падеж1 );
   @Структура1 гр_сущ_п9( род Род, душа Душа, падеж &Падеж, число &Число ) =
	       @1
	       прил( Род,  Душа, Падеж, Число )
	       сущ( &Род, &Душа, Падеж, Число ) ;
   @Структура1 гр_сущ_п10( род Род, душа Душа, падеж &Падеж, число &Число ) =
	       сущ( &Род, &Душа, Падеж, Число )
	       прил( Род,  Душа, Падеж, Число ) ;

   @Структура1 гр_прил_п1( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
               прил( Род, Душа, Падеж, Число )
	       @1 ;
   @Структура1 гр_прил_п2( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
               прил( Род, Душа, Падеж, Число )
	       гр_сущ_а( &Падеж1 ) ;
   @Структура1 гр_прил_п3( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
               прил( Род, Душа, Падеж, Число )
	       @1
	       сущ( &Род1, Душа1, &Падеж1, &Число1 ) ;
   @Структура1 гр_прил_п4( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
   	       @1
               прил( Род, Душа, Падеж, Число )
	       @1 ;
   @Структура1 гр_прил_п5( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
   	       прил( Род, Душа, Падеж, Число )
               прил( Род, Душа, Падеж, Число ) ;
   @Структура1 гр_прил_п6( род &Род, душа &Душа, падеж &Падеж, число &Число ) =
   	       @1
               прил( Род, Душа, Падеж, Число );

   @Структура1 гр_глагола_П1( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) хвост_а ;
   @Структура1 гр_глагола_П2( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) @1 хвост_а ;
   @Структура1 гр_глагола_П3( verb_param ) =
               @1 глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) хвост_а ;
   @Структура1 гр_глагола_П4( verb_param ) =
               @1 глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) @1 хвост_а ;

   @Структура1 гр_глагола_п1( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) ;
   @Структура1 гр_глагола_п2( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) @1 ;
   @Структура1 гр_глагола_п3( verb_param ) =
               @1 глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) ;
   @Структура1 гр_глагола_п4( verb_param ) =
               @1 глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) @1 ;
   @Структура1 гр_глагола_п5( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) гр_сущ_а( &Падеж1 ) ;
   @Структура1 гр_глагола_п6( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) @1 гр_сущ_а( &Падеж1 ) ;
   @Структура1 гр_глагола_п7( verb_param ) =
               глагол( S,Ф,@0,Ч,В,Р,%Актив,П ) гр_сущ_а( &Падеж1 ) @1 ;
   @Структура2 гр_глагола_пп( verb_param ) = ;
   @Структура2 гр_have_пп( verb_param ) = ;	       

   # include <format_r.h>

   @Файлы  глагол           формат1   { dicts/zform/russkij/ru_verb_r  };
   @Файлы  мод_глагол       формат1a  { dicts/zform/russkij/ru_modal };
   @Файлы  сущ              формат2   { dicts/zform/russkij/ru_sub_r };
   @Файлы  прил             формат3_1 { dicts/zform/russkij/ru_adj_r };
   @Файлы  квази_прил       формат3_1 { dicts/zform/russkij/ru_adj_r };
   @Файлы  вопрос           формат3   { dicts/zform/russkij/ru_quest };
   @Файлы  мест_сущ1        формат4_1 { dicts/zform/russkij/ru_pronoun_1 };
   @Файлы  мест_сущ2        формат4_2 { dicts/zform/russkij/ru_pronoun_2 };
   @Файлы  мест_сущ3        формат4_3 { dicts/zform/russkij/ru_pronoun_3 };      
   @Файлы  мест_прил        формат3   { dicts/zform/russkij/ru_pronoun_4 };
   @Файлы  частица          формат5   { dicts/zform/russkij/ru_tiny };
   @Файлы  числительное     формат4   { dicts/zform/russkij/ru_num  };
   @Файлы  числ_порядковое  формат3   { dicts/zform/russkij/ru_num2 };
}
/***************************************************************************/
//    Описание словарей перевода
/***************************************************************************/
@Словари_перевода
{
   @Формат_перевод формат1
   {  //@Псевдоним  m  М
      @Псевдоним  нс степени
      @Псевдоним  нв времени 
      @Псевдоним  нп пространства
      @Псевдоним  нч частоты
      @Псевдоним  пм мораль
      @Псевдоним  пэ эмоции
      @Псевдоним  .  прочее
      @Псевдоним  m  восприятия
         
      @Части_речи_источника
      {
	 v  глагол ;
	 m  мод_глагол ;
	 b  связка ;
	 s  сущ    ;
	 a  прил   ;
	 a1 прил_сравн ;
	 a2 прил   ;
	 AB прил11 ;
	 as квази_прил ;
	 d  наречие ;
	 i  числительное ;
	 ia числ_порядковое ;
	 I  гр_числ2 ;
	 c  союз ;
	 q  вопрос ;
         o1 мест_сущ1 ;
         o2 мест_сущ2 ;
         o3 мест_сущ3 ;
	 RR мест_сущ2 ; // потом поменять на нормальное
         oa мест_прил ;
         on мест_числ ;
	 p  предлог ;
	 zz междометие ;

	 PP предлог_п ;
	 DD гр_наречие_пп ;
	 AD квази_наречие_пп ;

	 S0 гр_сущ_п0 ;
	 S1 гр_сущ_п1 ;
	 S2 гр_сущ_п2 ;
	 S3 гр_сущ_п3 ;
	 S4 гр_сущ_п4 ;
	 Sb гр_сущ_пп ;

	 A0 гр_прил_п0 ;
	 A1 гр_прил_п1 ;
	 A2 гр_прил_п2 ;
	 AA гр_прил_пп ;
	 	 
 	 SS гр_сущ_а ;
	 TT хвост_а ;
	 TB хвост_be_a ;
	 F  фраза_повест ;
	 F1 фраза_повест ;
	 FF все_все_сп ;
	 D1 обстоятельство_пп ;
	 
	 // ------ фразовые глаголы -----------
	 V1 фраза_пп ;
	 V2 фраза_прид_пп ;
	 V3 фраза_whether_пп ;
	 V4 гр_глагола_пп ;

	 v1 ядро ;
	 v2 ядро_повест ;
	 v3 ядро_whether ;
	 v4 глагол ;

         // ------ фразы со связками -----------
	 L1 фраза_be_пп ;
	 L2 фраза_be_прид_пп ;
	 L3 фраза_be_whether_пп ;
	 L4 гр_be_пп ;

         // ------ фразы типа be+const ---------
	 B1 фраза_be1_пп ;
	 B2 фраза_be1_прид_пп ;
	 B3 фраза_be1_whether_пп ;
	 B4 гр_be1_пп ;

	 b1 ядро_be ;
	 b2 ядро_be_прид ;
	 b3 ядро_be_whether ;
	 b4 связка ;

         // ------ фразы типа have+const ---------
	 H1 фраза_have_пп ;
	 H2 фраза_have_прид_пп ;
	 H3 фраза_have_whether_пп ;
	 H4 гр_have_пп ;

	 h1 ядро_have1 ;
	 h2 ядро_have1_повест ;
	 h3 ядро_have1_whether ;
	 h4 связка ;

	 QS вопрос_к_подлежащему_пп ;
	 QV вопрос_к_обстоятельству_пп ;
	 QB вопрос_к_to_be_пп ;
	 QA вопрос_к_прил_пп ;
	 QC вопрос_союз_пп ;
      }
      @Части_речи_приемника
      {
	 v  глагол ;
	 m  мод_глагол ;
	 b  связка ;
	 s  сущ    ;
	 a  прил   ;
	 a1 прил_сравн ;
	 a2 прил   ;
	 AB прил11 ;
	 as квази_прил ;
	 d  наречие ;
	 i  числительное ;
	 ia числ_порядковое ;
	 I  гр_числ2 ;
	 c  союз ;
	 q  вопрос ;
         o1 мест_сущ1 ;
         o2 мест_сущ2 ;
         o3 мест_сущ3 ;
	 RR мест_сущ2 ; // потом поменять на нормальное
         oa мест_прил ;
         on мест_числ ;
	 p  предлог ;
	 zz междометие ;
	 t  частица ;

	 PP предлог_п ;
	 DD гр_наречие_пп ;
	 AD квази_наречие_пп ;

	 S0 гр_сущ_п0 ;
	 S1 гр_сущ_п1 ;
	 S2 гр_сущ_п2 ;
	 S3 гр_сущ_п3 ;
	 S4 гр_сущ_п4 ;
	 S5 гр_сущ_п5 ;
	 S6 гр_сущ_п6 ;
	 S7 гр_сущ_п7 ;
	 S8 гр_сущ_п8 ;
	 S9 гр_сущ_п9 ;
	 SA гр_сущ_п10 ;
	 Sb гр_сущ_пп ;

	 A0 гр_прил_п0 ;
	 A1 гр_прил_п1 ;
	 A2 гр_прил_п2 ;
	 A3 гр_прил_п3 ;
	 A4 гр_прил_п4 ;
	 A5 гр_прил_п5 ;
 	 A6 гр_прил_п6 ;
	 AA гр_прил_пп ;

	 SS гр_сущ_а ;
	 TT хвост_а ;
	 TB хвост_be_a ;
	 F  фраза_повест ;
	 F1 фраза_повест ;
	 FF все_все_сп ;
	 D1 обстоятельство_пп ;

	 // ------ фразовые глаголы -----------
	 V1 фраза_пп ;
	 V2 фраза_прид_пп ;
	 V3 фраза_whether_пп ;
	 V4 гр_глагола_пп ;

         VA гр_глагола_П1 ;
	 VB гр_глагола_П2 ;
	 VC гр_глагола_П3 ;
	 VD гр_глагола_П4 ;
	    
	 Va гр_глагола_п1 ;
	 Vb гр_глагола_п2 ;
	 Vc гр_глагола_п3 ;
	 Vd гр_глагола_п4 ;
	 Ve гр_глагола_п5 ;
	 Vf гр_глагола_п6 ;
	 Vg гр_глагола_п7 ;
	 
	 v1 ядро ;
	 v2 ядро_повест ;
	 v3 ядро_whether ;
	 v4 глагол ;

         // ------ фразы со связками -----------
	 L1 фраза_be_пп ;
	 L2 фраза_be_прид_пп ;
	 L3 фраза_be_whether_пп ;
	 L4 гр_be_пп ;

         // ------ фразы типа be+const ---------
	 B1 фраза_be1_пп ;
	 B2 фраза_be1_прид_пп ;
	 B3 фраза_be1_whether_пп ;
	 B4 гр_be1_пп ;

	 b1 ядро_be ;
	 b2 ядро_be_прид ;
	 b3 ядро_be_whether ;
	 b4 глагол ;

         // ------ фразы типа have+const ---------
	 H1 фраза_have_пп ;
	 H2 фраза_have_прид_пп ;
	 H3 фраза_have_whether_пп ;
	 H4 гр_have_пп ;

	 h1 ядро_have1 ;
	 h2 ядро_have1_повест ;
	 h3 ядро_have1_whether ;
	 h4 глагол ;

	 QS вопрос_к_подлежащему_пп ;
	 QV вопрос_к_обстоятельству_пп ;
	 QB вопрос_к_to_be_пп ;
	 QA вопрос_к_прил_пп ;
	 QC вопрос_союз_пп ;
      }
   }
   @Файлы_препроцессоров  формат1 {  dicts/english_russian/base_pre  };
   @Файлы_переводов       формат1 {  dicts/english_russian/base_enru1 
                                     dicts/english_russian/base_enru
                        	     dicts/english_russian/base_fverb_be 
				     dicts/english_russian/base_fverb  };
   @Файлы_постпроцессоров формат1 {  dicts/english_russian/base_post  };
}
@Словари_человека
{
   @Формат_словаря  формат1 
   {  @Разделитель  = ;
      @Сортировка   0 ;
   }   
   @Файлы_словарей  формат1 { dicts/english_russian/muller  };
}


# define table_chislo( A )       \
   @Таблица( число A = число A ) \
   {  Ед  = Ед ;                 \
      Мн = Мн ;                  \
   }
# define table_lizo( A )       \
   @Таблица( лицо A = лицо A ) \
   {  1е = 1е ;                \
      2е = 2е ;                \
      3е = 3е ;                \
   }
# define table_rod( A )      \
   @Таблица( род A = род A ) \
   {  М = М ;                \
      Ж = Ж ;                \
      С = С ;                \
   }
