|
#!/bin/perl
#==============================================================================#
package VHDL_WORD;
#==============================================================================#
#------------------------------------------------------------------------------#
sub new {
#------------------------------------------------------------------------------#
my ($class, @data) = @_;
my $ref = [];
bless $ref, $class;
$ref->init(@data);
return $ref;
}
#------------------------------------------------------------------------------#
sub init {
#------------------------------------------------------------------------------#
my ($ref,@data) = @_;
@$ref = (0);
@$ref = (0);
if(@data) { push(@$ref,@data);}
}
#------------------------------------------------------------------------------#
sub print {
#------------------------------------------------------------------------------#
my ($ref, @wds) = @_;
}
#==============================================================================#
if(@data) { push(@$ref,@data);}
}
#------------------------------------------------------------------------------#
sub print {
#------------------------------------------------------------------------------#
my ($ref, @wds) = @_;
}
#==============================================================================#
package VHDL_WIRE;
#==============================================================================#
#------------------------------------------------------------------------------#
sub new {
#------------------------------------------------------------------------------#
my ($class, @data) = @_;
my $ref = [];
bless $ref, $class;
W2C::init($ref,@data);
}
#------------------------------------------------------------------------------#
sub init {
#------------------------------------------------------------------------------#
my ($ref,@data) = @_;
while(@data) {
push(@$ref,@data);
}
}
#------------------------------------------------------------------------------#
sub w2c {
#------------------------------------------------------------------------------#
my ($ref, @wds) = @_;
my @owds=();
my $endmark = 0;
my $i; for($i=0;$i<=$#wds;$i++) {
#rint $wds[$i];
push(@$ref,$wds[$i]);
if($wds[$i] eq ';') {
if($$ref[0] == 0) { $endmark = 1;}
#==============================================================================#
package W2C;
#==============================================================================#
#------------------------------------------------------------------------------#
sub new {
#------------------------------------------------------------------------------#
my ($class, @data) = @_;
my $ref = [];
bless $ref, $class;
W2C::init($ref,@data);
return $ref;
}
#------------------------------------------------------------------------------#
sub init {
#------------------------------------------------------------------------------#
my ($ref,@data) = @_;
@$ref = (0);
if(@data) { push(@$ref,@data);}
}
#------------------------------------------------------------------------------#
sub w2c {
#------------------------------------------------------------------------------#
my ($ref, @wds) = @_;
my @owds=();
my $endmark = 0;
my $i; for($i=0;$i<=$#wds;$i++) {
#rint $wds[$i];
push(@$ref,$wds[$i]);
if($wds[$i] eq ';') {
if($$ref[0] == 0) { $endmark = 1;}
}
elsif($wds[$i] =~ /^endmodule$/i) {
$endmark = 1;
}
elsif($wds[$i] =~ /^begin$/i) {
$$ref[0] ++;
}
elsif($wds[$i] =~ /^end$/i) {
$$ref[0] --;
if($$ref[0] == 0) { $endmark = 1;}
}
elsif($wds[$i] eq '(') {
$$ref[0] ++;
}
elsif($wds[$i] eq ')') {
$$ref[0] --;
}
elsif($wds[$i] eq '{') {
$$ref[0] ++;
}
elsif($wds[$i] eq '}') {
$$ref[0] --;
}
elsif($wds[$i] eq '[') {
$$ref[0] ++;
}
elsif($wds[$i] eq ']') {
$$ref[0] --;
}
if($endmark) {
for($i++;$i<=$#wds;$i++) {
#rint "$wds[$i]<";
if($wds[$i] =~ /^[\s]+$/) {
push(@$ref,$wds[$i]);
}
elsif($wds[$i] =~ /^\/\//) {
push(@$ref,$wds[$i]);
}
elsif($wds[$i] =~ /^\/\*/) {
push(@$ref,$wds[$i]);
}
elsif($wds[$i] eq "\n") {
push(@$ref,$wds[$i]);
last;
}
else {
$i--;
last;
}
}
($endmark,@owds) = @$ref;
push(@owds,"COMMAND_END");
@$ref = (0);
}
}
@owds;
}
1;
|
|