/****************************************************************************/ // Сделать сокращенный словарь // Оставить в словаре переводов только те слова, которые есть в заданном тексте /****************************************************************************/ # include # include # include # include # include # include # include t_Slowo3 Macro ; // словарь английских сокращений t_Slowo3 DicConst ; // словарь английских constant t_Slowo3 Perevod ; t_Slowo2 *SlowoF,*SlowoT ; short *i_FormatT ; // соответствие часть речи -> SlowoT short *i_FormatF ; // соответствие часть речи -> SlowoF t_Core Core ; /***************************************************************************/ // прочесть все данные /***************************************************************************/ char read_grammar( void ) { t_File *F ; long i,N ; char Filename[200] ; char Dir[]="../dicts/" ; char r ; try { r=Grammar.make_all( "../grammar/lang.txt" ); if( r<0 ) return r ; File_Error=Fopen("mercury.err","w+"); Macro.read( "../dicts/en_macro", &(Grammar.format1()[0]) ); // make_dic_const( ); // ---------------- прочитать словари источника -------------------- t_Lang &From=Grammar.from(); N=From.File.j ; SlowoF =(t_Slowo2 *)Calloc( N,sizeof(t_Slowo2) ); i_FormatF=(short *)Calloc( From.Part.j,sizeof(t_Slowo2) ); for( i=0 ; iFileName[0] ); SlowoF[i].read( Filename, &From, &From.Format[F->i_format] ); SlowoF[i].freverce(); i_FormatF[F->i_part]=i ; } // ---------------- прочитать словари приемника -------------------- t_Lang &To=Grammar.to(); N=To.File.j ; SlowoT =(t_Slowo2 *)Calloc( N,sizeof(t_Slowo2) ); i_FormatT=(short *)Calloc( To.Part.j,sizeof(t_Slowo2) ); for( i=0 ; iFileName[0] ); SlowoT[i].read( Filename, &To, &To.Format[F->i_format] ); SlowoT[i].freverce(); i_FormatT[F->i_part]=i ; } // -------------- прочитать словари перевода --------------- Perevod.read( &Grammar ); Fclose( File_Error ); // if( Read_Error==0 ) f_data_read=1 ; return Read_Error ; // если тут 0, то все в порядке } catch( int E ) { Fclose( File_Error ); return -1 ; } } /***************************************************************************/ // /***************************************************************************/ int main( void ) { FILE *fr ; long i,i1,i2,i3,L,N,N1 ; char *Present,**PresentF,**PresentT ; char *Mass,*Str,*Str1 ; long Ant1[20] ; short part[20] ; t_Form Form[20] ; t_longList Ant2 ; read_grammar( ); // ---- прочесть файл --------------------- fr=Fopen( "../bin/tst/test.txt","r" ); L=FileLength( fr ); Mass=(char *)Calloc( L,sizeof(char) ); Fread( Mass,L,sizeof(char),fr ); Lexer.clr_breaker( ); Lexer.set_breaker( (unsigned char *)".,!?;:#$%^=+-*/(){}<>[]\"\\" ); Lexer.init( Mass,L ); Lexer.remark(); Lexer.make_words(); // ---- захватить массивы присутсвия --------------------- t_Lang &From=Grammar.from(); t_Lang &To =Grammar.to(); Present=(char *)Calloc( Perevod.n_record(),sizeof(char) ); PresentF=(char **)Calloc( From.File.j,sizeof(char *) ); for( i=0 ; ii_part, &Ant2 ); for( i3=0 ; i3