-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate.pl
executable file
·52 lines (43 loc) · 912 Bytes
/
generate.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl
use strict;
use File::Basename qw/basename dirname/;
my $in_file = $ARGV[0];
my $out_file = $ARGV[1];
my $include_path = $ARGV[2];
my %included = ();
open(my $out, '>' , "$out_file");
include_file("$include_path/oj.hpp");
include_file($in_file);
close($out);
sub include_file
{
my $file = $_[0];
return if defined $included{$file};
open(my $f, '<' , $file) or die "Can't open $_[0]";
my $skip = 1;
while (<$f>)
{
$skip = 0 if m{^\s*#};
next if $skip || m{^\s*#pragma} || m{^\s*//};
if (/^\s*#include "(.+)"/)
{
my $include_file = $1;
my $include = dirname($file) . "/$include_file";
if (-e $include)
{
include_file($include);
} elsif (-e "$include_path/$include_file")
{
include_file("$include_path/$include_file");
}
}
else
{
s/(?<=\d)\'(?=\d)//g;
print $out "$_";
}
}
print $out "\n";
close($f);
$included{$file} = 1;
}