改行モジュール対応1st(いいのできたかも?) test14.pl

 

改行モジュールに対応してみた!


test14.pl (改行モジュール対応v0.1版)
================================
#!usr/bin/env perl


$i= 0;


while($line = <>){

$i=$i+1;
$line =~ s#\(# \(#;

if ( $line =~ m/^\s*module\s*([^ \t\n\r\f]+)\b/ ) {
$modulenext = 0;
printf ("%4d ", $i);
print "module : ";
print $line;
$modulename = $1; #()内をキャプチャして変数へ
} elsif ( $line =~ m/^\s*module\s*/ ) {
$modulenext = 1; # flag
} elsif ( $line =~ m/^\s*([^ \t\n\r\f]+)\s+([^ \t\n\r\f]+)\s*\(/ && $line !~ m/^\s*module/) {
$module_next = 0;
printf ("%4d ", $i);
print "instance: ";
print "$modulename ,";
print $line;
} elsif ( ($modulenext == 1) && ($line =~ m/^\s*([^ \t\n\r\f]+)\s*/ ) ) {
printf ("%4d ", $i);
print "module : ";
print $line;
$modulename = $1; #()内をキャプチャして変数へ
$modulenext = 0; # clear flag
}

}
========================================

<実行結果>

shin@ubuntu:~/TEXToperation$ perl5.10.1 test14.pl test001.v
1 module : module HOGEMODULE ( // No space
16 instance: HOGEMODULE ,DUMMY Instance ();
18 instance: HOGEMODULE ,INST instance1 ( );
19 instance: HOGEMODULE ,INST instance2 ( );
20 instance: HOGEMODULE ,INST \instance3 ( );
21 instance: HOGEMODULE ,INST \insta/nce4 ( );
22 instance: HOGEMODULE ,INST \insta_nce5 ( );
23 instance: HOGEMODULE ,INST \insta7nce6 ( );
24 instance: HOGEMODULE ,INST insta.7nce7 ( );
29 instance: HOGEMODULE ,INST instance9 ( )
30 instance: HOGEMODULE , INST insta10 ( );
32 instance: HOGEMODULE ,INSTout inStance01 ( );
38 module : module HOGE2 ( // space x 1
46 module : module HOGE3 ( // tab x 1
48 instance: HOGE3 , INST instance1 ( );
49 instance: HOGE3 , INST instance2 ( );
50 instance: HOGE3 , INST \instance3 ( );
51 instance: HOGE3 , INST \insta/nce4 ( );
52 instance: HOGE3 , INST \insta_nce5 ( );
53 instance: HOGE3 , INST \insta7nce6 ( );
58 module : module HOGE4 ( // tab x 1 + space x 2
60 instance: HOGE4 , INST \insta/nce4 ( );
61 instance: HOGE4 , INST \insta_nce5 ( );
66 module : module HOGEreg001 (
69 instance: HOGEreg001 , INST \insta/nce4 ( );
70 instance: HOGEreg001 , INST \insta_nce5 ( );
74 module : HOGE5 ( // tab x 1 + space x 2
76 instance: HOGE5 , INST \insta/nce4 ( );
77 instance: HOGE5 , INST \insta_nce5 ( );

 


test001.v( v20140930new )
======================================
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 ( );
INST instance2( );
INST \instance3 ( );
INST \insta/nce4 ( );
INST \insta_nce5 ( );
INST \insta7nce6 ( );
INST insta.7nce7 ( );
INST
instance8 ( );


INST instance9 ( )
INST insta10 ( );

INSTout inStance01 ( );

 

endmodule

module HOGE2 ( // space x 1

);


endmodule


module HOGE3 ( // tab x 1
);
INST instance1 ( );
INST instance2( );
INST \instance3 ( );
INST \insta/nce4 ( );
INST \insta_nce5 ( );
INST \insta7nce6 ( );
endmodule

 

module HOGE4 ( // tab x 1 + space x 2
);
INST \insta/nce4 ( );
INST \insta_nce5 ( );

endmodule


module HOGEreg001 (
);

INST \insta/nce4 ( );
INST \insta_nce5 ( );
endmodule

module
HOGE5 ( // tab x 1 + space x 2
);
INST \insta/nce4 ( );
INST \insta_nce5 ( );

endmodule

#### v20140930new
======================================