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

@Переводы
{
// ------------------------ перечислимые множества ------------------------ //
@Перевод {  @Выбор ____КОНСТАНТЫ____ = ; @Выбор КОНСТАНТЫ = ;  }
@Перевод
{  @Выбор _have = !@0[have] !@0[has] ;
   @Выбор _have = @0[1] @0[2] ;
}
@Перевод
{  @Выбор _will = @0[will] @0[shall] ;
   @Выбор _will = @0[1] @0[2] ;
}
@Перевод
{  @Выбор _would = @0[would] @0[should] ;
   @Выбор _would = @0[1] @0[2] ;
}
@Перевод
{  @Выбор _do = @0[do] @0[does] ;
   @Выбор _do = @0[1]  @0[2] ;
}
@Перевод
{  @Выбор __do = @0[do] @0[does] @00 ;
   @Выбор __do = @0[1]  @0[2]    @00 ;
}
@Перевод
{  @Выбор _was = @0[was] @0[were] ;
   @Выбор _was = @0[1]   @0[2] ;
}
@Перевод
{  @Выбор _No  = @0[no] @0[not] @00 ;
   @Выбор _No  = @0[не] @0[не]  @00 ;
}
@Перевод
{  @Выбор _No_p                  = @0[no] @0[not] @00 ;
   @Выбор _No_p( падеж &Падеж )  = @0[не] @0[не]  @00 ;
   
   @Таблица( @Выбор, = падеж Падеж )
   {  1 = Р ;
      2 = Р ;
      3 = И ;
   }
}
@Перевод
{  @Выбор _No1_p                 = @0[no]  @0[not] @00 ;
   @Выбор _No1_p( падеж &Падеж ) = @0[нет] @0[нет] @0[есть] ;

   @Таблица( @Выбор, = падеж Падеж )
   {  1 = Р ;
      2 = Р ;
      3 = И ;
   }
}
@Перевод 
{  @Выбор _Not = @00 @0[not] ;
   @Выбор _Not = @00 @0[не] ;
}
@Перевод 
{  @Выбор _Not1 = @00 @0[not] ;
   @Выбор _Not1 = @00 @0[разве_не] ;
}
@Перевод 
{  @Выбор _And = @00 @0[and] ;
   @Выбор _And = @00 @0[и] ;
}
@Перевод 
{  @Выбор _Got = @00 @0[got] ;
   @Выбор _Got = @00 @0[1] ;
}
@Перевод 
{  @Выбор  and_or = @0[and] @0[or]  @0[but]  ;
   @Выбор  and_or = @0[и]   @0[или] @0[но] ;
}
@Перевод 
{  @Выбор _and_or = @00 @0[and] @0[or]  @0[but] ;
   @Выбор _and_or = @00 @0[и]   @0[или] @0[но] ;
}
@Перевод
{  @Выбор _связка_is = @0[am] @0[are] @0[is] ;
   @Выбор _связка_is = @0[1]  @0[2]   @0[3]  ;
}
@Перевод
{  @Выбор _связка_was = @0[was] @0[were] ;
   @Выбор _связка_was = @0[1]   @0[2]    ;
}
@Перевод
{  @Выбор _Наречие =
          гр_наречие_пп( &Смысл )
	  наречие( &Смысл )
	  @00 ;
   @Выбор _Наречие =
          гр_наречие_пп 
	  наречие
	  @00 ;
}
@Перевод
{  @Выбор Наречие1( смысл_наречия Смысл ) =
          гр_наречие_пп( &Смысл )
	  наречие( &Смысл );
   @Выбор Наречие1 =
          гр_наречие_пп 
	  наречие ;
}
@Перевод
{  @Выбор _Наречие_степени =
          гр_наречие_пп( %степени )
	  наречие( %степени )
	  @00 ;
   @Выбор _Наречие_степени =
          гр_наречие_пп 
	  наречие
	  @00 ;
}

@Перевод {  @Выбор ____АТОМЫ________ = ; @Выбор АТОМЫ = ;  }
# include <atom.h>
@Перевод {  @Выбор ____СУЩ__________ = ; @Выбор СУЩ = ;  }
# include <num.h>
# include <sub.h>
@Перевод {  @Выбор ____ПРИЛ_________ = ; @Выбор ПРИЛ = ;  }
# include <adj.h>
@Перевод {  @Выбор ____НАРЕЧИЯ______ = ; @Выбор НАРЕЧИЯ = ;  }
# include <adv.h>
@Перевод {  @Выбор ____СКАЗУЕМЫЕ____ = ; @Выбор СКАЗУЕМЫЕ = ;  }
# include <verb.h>
# include <verb_be.h>
# include <verb_there_is.h>
# include <verb_have.h>
# include <verb_mod.h>
# include <verb_mod_be.h>
# include <verb_mod_have.h>
# include <verb_c.h>
@Перевод {  @Выбор ____ХВОСТЫ______ = ; @Выбор ХВОСТЫ = ;  }
# include <tail.h>
# include <tail_is.h>
# include <dis_quest.h>
@Перевод {  @Выбор ____WH_ФРАЗЫ____ = ; @Выбор WH_ФРАЗЫ = ;  }
# include <wh_frasa.h>
@Перевод {  @Выбор ____ЯДРО________ = ; @Выбор ЯДРО = ;  }
# include <core.h>
# include <next_chance.h>


@Перевод
{  @Структура2 междометие = ;
   @Структура2 междометие = ;
}
@Перевод
{  @Выбор     _междометие = междометие @00 ;
   @Выбор     _междометие = междометие @00 ;
}
@Перевод
{  @Структура @междометие = междометие _междометие ;
   @Структура @междометие = междометие _междометие ;
}

@Перевод
{
   @Выбор     все_все1 =
	      фраза
	      фраза_have
	      фраза_квазинаречие
	      фраза_be
	      фраза_be_предлог
	      фраза_there
	      понять_значит_упростить
	      понять_значит_упростить2
//	      подлежащее( &Лицо, &Число )
//	      числительное 
              ;
   @Выбор     все_все1 =
	      фраза
	      фраза_have
	      фраза_квазинаречие
	      фраза_be
	      фраза_be_предлог
	      фраза_there
	      понять_значит_упростить
	      понять_значит_упростить2
//	      подлежащее( &Лицо, &Число, &Род )
//	      числительное 
              ;
}

@Перевод
{  // -------- как-то похабно сделано
   @Выбор     заголовок_ман = @00 сущ( &Число) ;
   @Выбор     заголовок_ман = @00 сущ( &Род, &Д, %И, %Ед ) ;
}      
@Перевод
{
   @Структура все_все_для_ман = заголовок_ман все_все1 ;
   @Структура все_все_для_ман = заголовок_ман все_все1 ;
}   
@Перевод
{
   @Выбор     все_все =
              все_все1
	      все_все_сп
	      все_все_для_ман
              ;
   @Выбор     все_все =
              все_все1
	      все_все_сп
	      все_все_для_ман
              ;
}

}

