process_seg() naprawione, 'lem -s kor -I kor' nie zawiesza sie
git-svn-id: svn://atos.wmid.amu.edu.pl/utt@46 e293616e-ec6a-49c2-aa92-f4a8b91c5d16
This commit is contained in:
parent
adb4c8d65b
commit
0e3df7e06a
5
app/TODO
5
app/TODO
@ -14,5 +14,8 @@ WAZNE:
|
|||||||
* Zadania zwiazane z rozbudowa ser (src/ser/TODO).
|
* Zadania zwiazane z rozbudowa ser (src/ser/TODO).
|
||||||
* Nowa funkcjonalność dla kot? con? - każde zdanie w nowym wierszu
|
* Nowa funkcjonalność dla kot? con? - każde zdanie w nowym wierszu
|
||||||
* opcja info w dgp powinna miec domyslna wartosc d lub h
|
* opcja info w dgp powinna miec domyslna wartosc d lub h
|
||||||
|
* podczas tworzenia dystrybucji pojawiaja sie komunikaty:
|
||||||
|
find: /home/to/work/utt/lang/dist/tarball/utt-0.9.2/share/utt/pl_PL.UTF-8/.svn: Nie ma takiego pliku ani katalogu
|
||||||
|
find: /home/to/work/utt/lang/dist/tarball/utt-0.9.2/share/utt/pl_PL.ISO-8859-2/.svn: Nie ma takiego pliku ani katalogu
|
||||||
|
* przyspieszyć process_seg() -> obliczanie prefiksów pól z opcji -s i -S raz na poczatku programu, a nie w kolko
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ FILE* failedf=stdout;
|
|||||||
bool copy_processed=0;
|
bool copy_processed=0;
|
||||||
bool one_field=false;
|
bool one_field=false;
|
||||||
bool one_line=false;
|
bool one_line=false;
|
||||||
char output_field_prefix[32];
|
char output_field_prefix[FIELD_PREFIX_MAXLEN];
|
||||||
char input_field_prefix[32];
|
char input_field_prefix[FIELD_PREFIX_MAXLEN];
|
||||||
|
|
||||||
extern int argc;
|
extern int argc;
|
||||||
extern char **argv;
|
extern char **argv;
|
||||||
@ -34,40 +34,6 @@ int expand_path(char* inpath, char* outpath)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
parameters:
|
|
||||||
-name - field name, long or short
|
|
||||||
+prefix - field name with ':' appended if long name
|
|
||||||
return value:
|
|
||||||
1 if correct field name, 0 otherwise
|
|
||||||
examples:
|
|
||||||
name prefix r.v.
|
|
||||||
lem lem: 1
|
|
||||||
@ @ 1
|
|
||||||
:: 'undef' 0
|
|
||||||
a,b 'undef' 0
|
|
||||||
*/
|
|
||||||
int fieldprefix(char *name, char *prefix)
|
|
||||||
{
|
|
||||||
if (ispunct(name[0]) && name[1]=='\0') // correct short name
|
|
||||||
{
|
|
||||||
strcpy(prefix, name); return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int i=0;
|
|
||||||
while(name[i]!='\0' && isalnum(name[i])) ++i;
|
|
||||||
|
|
||||||
if(name[i]=='\0' && i>0) // correct long name
|
|
||||||
{
|
|
||||||
sprintf(prefix,"%s:",name); return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// incorrect
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void set_program_name(char program_name[], char* argv0)
|
void set_program_name(char program_name[], char* argv0)
|
||||||
{
|
{
|
||||||
if (char* p_name = strrchr(argv0, '/'))
|
if (char* p_name = strrchr(argv0, '/'))
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#define INFIELD_SEP ':'
|
#define INFIELD_SEP ':'
|
||||||
#define MAXAUX 16
|
#define MAXAUX 16
|
||||||
#define FIELD_SEP " \t\n"
|
#define FIELD_SEP " \t\n"
|
||||||
|
#define FIELD_PREFIX_MAXLEN 32
|
||||||
|
|
||||||
|
|
||||||
// katalogi z plikami konfiguracyjnymi
|
// katalogi z plikami konfiguracyjnymi
|
||||||
@ -66,14 +67,11 @@ extern void process_config_files(gengetopt_args_info* args, char* argv0);
|
|||||||
|
|
||||||
extern int expand_path(char* inpath, char* outpath);
|
extern int expand_path(char* inpath, char* outpath);
|
||||||
|
|
||||||
extern int fieldprefix(char *name, char *prefix);
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* problems with casing */
|
* problems with casing */
|
||||||
// sprawdzenie wielkosci liter
|
// sprawdzenie wielkosci liter
|
||||||
// warto¶æ zwracana:
|
// warto¶æ zwracana:
|
||||||
// 0 - wszystkie ma³e litery
|
// 0 - wszystkie ma³e litery
|
||||||
// 1 - pierwsza wielka, reszta male
|
// 1 - pierwsza wielka, reszta male
|
||||||
// 2 - wszystkie wielkie
|
// 2 - wszystkie wielkie
|
||||||
// 3 - inne
|
// 3 - inne
|
||||||
@ -104,9 +102,9 @@ inline void tolowers(char* s, char* d)
|
|||||||
|
|
||||||
|
|
||||||
// przepisuje s do d
|
// przepisuje s do d
|
||||||
// nadajac wielko¶æ liter zgodnie z warto¶ci± casing
|
// nadajac wielko¶æ liter zgodnie z warto¶ci± casing
|
||||||
// casing - warto¶æ zwracana przez casing()
|
// casing - warto¶æ zwracana przez casing()
|
||||||
// je¶li casing==3 przepisuje bez zmian (za ma³o informacji)
|
// je¶li casing==3 przepisuje bez zmian (za ma³o informacji)
|
||||||
inline void restorecasing(char *s, char *d, int casing)
|
inline void restorecasing(char *s, char *d, int casing)
|
||||||
{
|
{
|
||||||
switch(casing)
|
switch(casing)
|
||||||
@ -185,10 +183,44 @@ inline int getfield(char* seg, const char* pref, char* val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
parameters:
|
||||||
|
-name - field name, long or short
|
||||||
|
+prefix - field name with ':' appended if long name
|
||||||
|
return value:
|
||||||
|
1 if correct field name, 0 otherwise
|
||||||
|
examples:
|
||||||
|
name prefix r.v.
|
||||||
|
lem lem: 1
|
||||||
|
@ @ 1
|
||||||
|
:: 'undef' 0
|
||||||
|
a,b 'undef' 0
|
||||||
|
*/
|
||||||
|
inline
|
||||||
|
int fieldprefix(char *name, char *prefix)
|
||||||
|
{
|
||||||
|
if (ispunct(name[0]) && name[1]=='\0') // correct short name
|
||||||
|
{
|
||||||
|
strcpy(prefix, name); return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
while(name[i]!='\0' && isalnum(name[i])) ++i;
|
||||||
|
|
||||||
|
if(name[i]=='\0' && i>0) // correct long name
|
||||||
|
{
|
||||||
|
sprintf(prefix,"%s:",name); return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// incorrect
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
bool process_seg(char* seg, gengetopt_args_info& args)
|
bool process_seg(char* seg, gengetopt_args_info& args)
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
char pref[FIELD_PREFIX_MAXLEN];
|
||||||
bool ret = !args.process_given;
|
bool ret = !args.process_given;
|
||||||
if(args.process_given)
|
if(args.process_given)
|
||||||
{
|
{
|
||||||
@ -204,11 +236,17 @@ bool process_seg(char* seg, gengetopt_args_info& args)
|
|||||||
if(ret==false) return false;
|
if(ret==false) return false;
|
||||||
|
|
||||||
for(int i=0; i<args.select_given; ++i)
|
for(int i=0; i<args.select_given; ++i)
|
||||||
if(! getfield(seg,args.select_arg[i],buf))
|
{
|
||||||
return false;
|
fieldprefix(args.select_arg[i],pref); // !!! ŁATKA - ZOPTYMALIZOWAĆ !!!
|
||||||
|
if(! getfield(seg,pref,buf))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
for(int i=0; i<args.ignore_given; ++i)
|
for(int i=0; i<args.ignore_given; ++i)
|
||||||
if(getfield(seg,args.ignore_arg[i],buf))
|
{
|
||||||
return false;
|
fieldprefix(args.ignore_arg[i],pref); // !!! ŁATKA - ZOPTYMALIZOWAĆ !!!
|
||||||
|
if(getfield(seg,pref,buf))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if(args.input_field_given & !getfield(seg,input_field_prefix,buf))
|
if(args.input_field_given & !getfield(seg,input_field_prefix,buf))
|
||||||
return false;
|
return false;
|
||||||
|
@ -50,6 +50,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
tab.clear();
|
tab.clear();
|
||||||
getfield(line,input_field_prefix,form);
|
getfield(line,input_field_prefix,form);
|
||||||
|
|
||||||
if (form==NULL) continue;//BZDURA
|
if (form==NULL) continue;//BZDURA
|
||||||
|
|
||||||
lem->ana(form, tab);
|
lem->ana(form, tab);
|
||||||
|
Loading…
Reference in New Issue
Block a user