キャプチャつかってみた&module重複認識防止
#!usr/bin/env perl
$i= 0;
while($line = <>){
$i=$i+1;
if ( $line =~ m/^\s*module\s*([a-zA-Z0-9_]+)/ ) {
# print $_;
print $i;
print $line;
$modulename = $1; #()内をキャプチャして変数へ
}
# if ( $line =~ m/^\s*[A-Z0-9_]+\s+[a-z0-9]+\s*/ ) {
# if ( $line =~ m/^\s*[A-Z0-9_]+\s+[a-z0-9]+/ ) {
# if ( $line =~ m/^\s*[A-Z0-9_]+\s+[\\a-z0-9]+/ ) {
# 再度moduleでマッチしないように
if ( $line =~ m/^\s*[a-zA-Z0-9_]+\s+[a-zA-Z0-9\\\.\/]+/ && $line !~ m/^\s*module/) {
print $i;
print "$modulename,";
print $line;
# } elsif ( $line =~ m/^\s*[A-Z0-9_] && $line =~ m/
#
#
}
}
<サンプルテキスト>
module HOGEMODULE ( // No space
input hoge ;
output hogege;
reg aaa ;
reg aaa ; // hoge hoge hoge
for ( i=0 ; i<0 ; i++ ) begin
end
DUMMY Instance (); //インスタンスに大文字あり
INST instance1 ( ); //インスタンス後半角sp
INST instance2( ); //半角spなし
INST \instance3 ( ); //インスタンス名先頭に \ あり
INST \insta/nce4 ( ); //インスタンス名中に / あり
INST \insta_nce5 ( ); //インスタンス名に _ あり
INST \insta7nce6 ( ); //インスタンス名の間に数字あり
INST insta.7nce7 ( ); //インスタンス名に . あり
INST
instance8 ( ); //改行あり
INST instance9 ( ) // ;記号なし
INST insta10 ( ); //忘れたw
INSTout inStance01 ( ); //モジュール名、インスタンス名に小/大文字混在
endmodule
module HOGE2 ( // space x 1
);
endmodule
module HOGE3 ( // tab x 1
);
endmodule
module HOGE3 ( // tab x 1 + space x 2
);
endmodule
module HOGEreg001 ( //モジュール名に小文字あり
);
endmodule