On Mon, Jan 14, 2002 at 07:32:15PM -0500, Aaron D. Marasco wrote:
> 
> Here is my attempt, at 7 lines (need to count #! line)...
> 
> #!/cygdrive/r/perl/bin/perl -n
> if(/[\s-]*([^:]*)\s*:/){$a[$.]="--== $1 ==--\n";next}
> ($a[$.],$b[$.],$c[$.])=/\s+(\w+)\s*(\w*)\s*(\d*)/;
> $l=length$1;$m=$l if($l>$m);
> END{foreach$i(1..$.){$r=$a[$i];print$r;if($r!~/=/){
> print" "x($m-length$r)." : $b[$i] std_logic";
> print (($c[$i]!='')?"_vector($c[$i] downto 0);\n":"\n")}}}


        I think this works:

-- SUN:
--   S_RSTb      out
--   S_INTb      in
-- CMX INTERFACE:
--   CMX_CSb     in
--   CMX_D       inout     7
--   CMX_A       inout     7
#! perl   # run with perl -x
open 0;while(<0>){last if/^#/;s|\s*--\s+(.*):|--== $1 ==--|||
s&\s*--\s*(\w+)\s+(\w+)\s+(\d*)\s*&"$1: $2 std_logic".
($3?"_vector($3 downto 0)":'').";\n"&e&&$l>length$1or$l=length$1;
$\.=$_}END{$_='';$\=~s/(.*):/$1.' 'x($l-length$1).' :'/ge;print}


Joy,
`/anick

-- 
The whole secret of life is to be interested in one thing 
profoundly and in a thousand other things well.  - Hugh Walpole

Reply via email to