translator.pl
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:2k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. #!perl -w
  2. if ($#ARGV < 1) {
  3.   print "Usage: $0 index_file output_filen";
  4.   print "n";
  5.   exit 1;
  6. }
  7. # Attempt to open index file.
  8. $index_file = $ARGV[0];
  9. if (! -e $index_file) {
  10.   print STDERR "Error: $index_file not found.n";
  11.   exit 1;
  12. }
  13. unless (open index_file) {
  14.     print STDERR "Can't open $index_file: $!n";
  15.     exit 1;
  16. }
  17. # Open output file
  18. open(FINAL, ">$ARGV[1]") || die "Error: opening <$ARGV[1]> for outputn";
  19. # Write first line
  20. print FINAL "const VXIbyte VALIDATOR_DATA[] = {n";
  21. my %testSection = ();
  22. # Concatinate all members of the index file.
  23. LINE: while (<index_file>) {
  24.     next LINE if /^#/; # skip comments
  25.     next LINE if /^$/; # skip blank lines
  26.     if (/^([^s]+)[s]+([^s]+)[s]+/) {
  27. $source_file = $1;
  28. if (! -e $source_file) {
  29.     print STDERR "Error: $source_file not found.n";
  30.     exit 1;
  31. }
  32. unless (open source_file) {
  33.     print STDERR "Can't open $source_file: $!n";
  34.     exit 1;
  35. }
  36.         $source_file_size = 0;
  37. INNER:  while (<source_file>) {
  38.             my $line = $_;
  39.     $line =~ s/n//g;       # added to strip line breaks
  40.     @chars = unpack "c*", $line;
  41.     push @chars, "10";
  42.     print FINAL join ",", @chars;
  43.     print FINAL ",n";
  44.     $source_file_size += $#chars + 1;
  45. }
  46. print "$1n";
  47. print "$2n";
  48. close($source_file);
  49. $testSection{$source_file}[0] = $source_file_size;
  50.     }
  51.     print "$source_file => $source_file_sizen";
  52. }
  53. print FINAL "0 };n";
  54. close index_file;
  55. # Stage 2:
  56. unless (open index_file) {
  57.     print STDERR "Can't open $index_file: $!n";
  58.     exit 1;
  59. }
  60. $offset = 0;
  61. ENTRY: while (<index_file>) {
  62.     next ENTRY if /^#/; # skip comments
  63.     next ENTRY if /^$/; # skip blank lines
  64.     if (/^([^s]+)[s]+([^s]+)[s]+/) {
  65. $source_file = $1;
  66. # $name = $2;
  67. $source_file_size = $testSection{$source_file}[0];
  68. print FINAL "const unsigned int $2 = $offset;n";
  69. print FINAL "const unsigned int $2_SIZE = $source_file_size;n";
  70. $offset += $source_file_size;
  71.     }
  72. }