#!/usr/bin/perl -w use strict 'vars'; die "Please specify model name as first argument to script.\n" unless 1 != $#ARGV; my $modelname = $ARGV[0]; #print "Will work on model \"$modelname\"\n"; my $netf = "$modelname.net"; my $deff = "$modelname.def"; my $propf = "$modelname.tobs"; my $tmpf = "$modelname.nettmp"; open (NET, "< $netf") or die "cannot open $netf\n"; open (DEF, "< $deff") or die "cannot open $deff\n"; open (PROP, "> $propf") or die "cannot open $propf\n"; open (OUTNET,"> $tmpf") or die "cannot open $tmpf\n"; my %defs = (); { local $/; my $contents = ; close DEF; while ($contents =~ /\((F\d+)\s[^\(]*\(\@f\n(.*)\n\)\)/gom) { $defs{$1} = $2; } } my $line = ; print OUTNET $line; $line = ; print OUTNET $line; $line = ; my @split = split (/\s+/, $line); my $nump = $split[2]; my $numt = $split[4]; #print "$nump places, $numt transitions\n"; my $places ; for (my $i = 0; $i < $nump; $i++) { $places .= ; } my %trans = (); my $transline = ; for (my $i = 0; $i < $numt; $i++) { my $tname = (split (/ /,$transline))[0]; $trans{$tname} .= $transline; $trans{$tname} .= $line while (defined ($line = ) && $line =~ /^\s/); # print "analyzed transition $tname:\n$trans{$tname}\n"; $transline = $line; } my $numpt = grep /^PROP\_/, keys %trans; $split[4] -= $numpt ; print OUTNET (join (" ",@split)); print OUTNET "\n"; print OUTNET $places; print PROP "$numpt\n"; my $props = ''; foreach my $key (keys %trans) { if ($key =~ /^PROP_/) { $props .= $trans{$key}; } else { print OUTNET $trans{$key} } } $props =~ s/^PROP_//gm; while (my ($key, $val) = each %defs) { $props =~ s/$key\s*$/$val/gm; } close OUTNET; print PROP $props; close PROP; close NET;