--- db/prgsrc/makecheck.pl 2001/10/31 03:00:10 1.1 +++ db/prgsrc/makecheck.pl 2001/10/31 03:07:27 1.2 @@ -1,107 +1,107 @@ -#!perl -w - -=head1 NAME - -makecheck.pl - скрипт для создания, функции, проверяющего слова -на предмет наличия в словаре. - -=head1 SYNOPSIS - -aff2pl.pl - - -=head1 BUGS - -На самом деле используется упрощённый формат описания -аффиксов. Существенны только строчки "prefix", "suffix" -и строчки, в которых встречается знак ">". Причём -любая такая строка (кроме закомментированных) -будет считаться строкой описания аффикса. - - -=head1 AUTHOR - -Роман Семизаров - -=cut - - - -use locale; -use POSIX qw (locale_h); -use chgkfiles; - -do "common.pl"; - -if ((uc 'а') ne 'А') {die "!Koi8-r locale not installed!\n"}; - - -input_files(RULES); - -output_files(CHECK); - -myprint (CHECK, "#!perl\n\n"); - -auto_message(CHECK, "makecheck.pl"); - - -myprint(CHECK, 'sub checkit {my $nf=\'\'; my $a; my ($uword,$words)=@_; '); - - - -while ( ($sha,$_)=getstring("\s*>\s*",RULES),$sha ) -{ - $sha =~ s/\s+//g; - s/\s+//g; - if ( $sha =~ m/^flag\s*\*(.):/ ) - { - $flag=$1; - } - - if ($_) - { - s/(\#.*)$//g; - ($f,$s)=split(","); - - - if (!$s) {$s = $f; $f=""}; - $f=~s/^-//; - - if ( $sha eq "." ) - { - $sha=""; - } - - if ( $s eq "-") - { - $s="" - } - $sha= $sha."\$"; - $s= $s."\$"; - -myprint (CHECK, "\n\n#-------------------------------------\n\n"); - - myprint (CHECK, " - \$\_=\$uword; - if ((s/$s/$f/) && (m/$sha/) && (\$a=\$\$words{\$\_}) && (\$a=~m/$flag/)) - \{ - \$nf.=\"\$\_/$flag \"; - \}"); - } - -} - - myprint (CHECK, " - \$\_=\$uword; - if (\$\$words{\$\_}) - \{ - \$nf.=\"\$\_/! \"; - \} - return \$nf; - "); - - -myprint (CHECK,"} 1\n") - - - +#!/usr/bin/perl -w + +=head1 NAME + +makecheck.pl - скрипт для создания, функции, проверяющего слова +на предмет наличия в словаре. + +=head1 SYNOPSIS + +aff2pl.pl + + +=head1 BUGS + +На самом деле используется упрощённый формат описания +аффиксов. Существенны только строчки "prefix", "suffix" +и строчки, в которых встречается знак ">". Причём +любая такая строка (кроме закомментированных) +будет считаться строкой описания аффикса. + + +=head1 AUTHOR + +Роман Семизаров + +=cut + + + +use locale; +use POSIX qw (locale_h); +use chgkfiles; + +do "common.pl"; + +if ((uc 'а') ne 'А') {die "!Koi8-r locale not installed!\n"}; + + +input_files(RULES); + +output_files(CHECK); + +myprint (CHECK, "#!perl\n\n"); + +auto_message(CHECK, "makecheck.pl"); + + +myprint(CHECK, 'sub checkit {my $nf=\'\'; my $a; my ($uword,$words)=@_; '); + + + +while ( ($sha,$_)=getstring("\s*>\s*",RULES),$sha ) +{ + $sha =~ s/\s+//g; + s/\s+//g; + if ( $sha =~ m/^flag\s*\*(.):/ ) + { + $flag=$1; + } + + if ($_) + { + s/(\#.*)$//g; + ($f,$s)=split(","); + + + if (!$s) {$s = $f; $f=""}; + $f=~s/^-//; + + if ( $sha eq "." ) + { + $sha=""; + } + + if ( $s eq "-") + { + $s="" + } + $sha= $sha."\$"; + $s= $s."\$"; + +myprint (CHECK, "\n\n#-------------------------------------\n\n"); + + myprint (CHECK, " + \$\_=\$uword; + if ((s/$s/$f/) && (m/$sha/) && (\$a=\$\$words{\$\_}) && (\$a=~m/$flag/)) + \{ + \$nf.=\"\$\_/$flag \"; + \}"); + } + +} + + myprint (CHECK, " + \$\_=\$uword; + if (\$\$words{\$\_}) + \{ + \$nf.=\"\$\_/! \"; + \} + return \$nf; + "); + + +myprint (CHECK,"} 1\n") + + +