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).
|
||||
* Nowa funkcjonalność dla kot? con? - każde zdanie w nowym wierszu
|
||||
* 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 one_field=false;
|
||||
bool one_line=false;
|
||||
char output_field_prefix[32];
|
||||
char input_field_prefix[32];
|
||||
char output_field_prefix[FIELD_PREFIX_MAXLEN];
|
||||
char input_field_prefix[FIELD_PREFIX_MAXLEN];
|
||||
|
||||
extern int argc;
|
||||
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)
|
||||
{
|
||||
if (char* p_name = strrchr(argv0, '/'))
|
||||
|
@ -23,6 +23,7 @@
|
||||
#define INFIELD_SEP ':'
|
||||
#define MAXAUX 16
|
||||
#define FIELD_SEP " \t\n"
|
||||
#define FIELD_PREFIX_MAXLEN 32
|
||||
|
||||
|
||||
// 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 fieldprefix(char *name, char *prefix);
|
||||
|
||||
|
||||
/**************************************************
|
||||
* problems with casing */
|
||||
// sprawdzenie wielkosci liter
|
||||
// warto¶æ zwracana:
|
||||
// 0 - wszystkie ma³e litery
|
||||
// warto¶æ zwracana:
|
||||
// 0 - wszystkie ma³e litery
|
||||
// 1 - pierwsza wielka, reszta male
|
||||
// 2 - wszystkie wielkie
|
||||
// 3 - inne
|
||||
@ -104,9 +102,9 @@ inline void tolowers(char* s, char* d)
|
||||
|
||||
|
||||
// przepisuje s do d
|
||||
// nadajac wielko¶æ liter zgodnie z warto¶ci± casing
|
||||
// casing - warto¶æ zwracana przez casing()
|
||||
// je¶li casing==3 przepisuje bez zmian (za ma³o informacji)
|
||||
// nadajac wielko¶æ liter zgodnie z warto¶ci± casing
|
||||
// casing - warto¶æ zwracana przez casing()
|
||||
// je¶li casing==3 przepisuje bez zmian (za ma³o informacji)
|
||||
inline void restorecasing(char *s, char *d, int 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
|
||||
bool process_seg(char* seg, gengetopt_args_info& args)
|
||||
{
|
||||
char buf[256];
|
||||
char pref[FIELD_PREFIX_MAXLEN];
|
||||
bool ret = !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;
|
||||
|
||||
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)
|
||||
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))
|
||||
return false;
|
||||
|
@ -50,6 +50,7 @@ int main(int argc, char** argv) {
|
||||
|
||||
tab.clear();
|
||||
getfield(line,input_field_prefix,form);
|
||||
|
||||
if (form==NULL) continue;//BZDURA
|
||||
|
||||
lem->ana(form, tab);
|
||||
|
Loading…
Reference in New Issue
Block a user