Changeset 49c6428 in rtems


Ignore:
Timestamp:
Apr 14, 1998, 4:09:02 PM (24 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
e348edd2
Parents:
bf09257a
Message:

Added Ada support by copying the script from Avenger.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/tools/src2html1.4a/src2html

    rbf09257a r49c6428  
    1 #!/usr/local/bin/perl
     1#!/usr/bin/perl
    22# Src2html: Take a source tree and generate Html documents that have hyperlinks
    33# to the definition of structures, variables, functions, and preprocessor
     
    88# 19th January 1996
    99#
     10#  $Id$
     11#
    1012
    1113if ($#ARGV <= 0 || $#ARGV > 4) {                # Check arg count
     
    3133}
    3234
    33 $Title{"m"}= "Macros";
    34 $Title{"d"}= "Defines";
    35 $Title{"f"}= "Functions";
    36 $Title{"v"}= "Variables";
    37 $Title{"s"}= "Structs";
    38 $Title{"u"}= "Unions";
    39 $Title{"t"}= "Typedefs";
    40 $Title{"e"}= "Enums";
     35$Title{"m"}= "C Macros";
     36$Title{"d"}= "C Defines";
     37$Title{"f"}= "C Functions";
     38$Title{"v"}= "C Variables";
     39$Title{"s"}= "C Structs";
     40$Title{"u"}= "C Unions";
     41$Title{"t"}= "C Typedefs";
     42$Title{"e"}= "C Enums";
     43$Title{"AdaType"}= "Ada Types";
     44$Title{"AdaProcedure"}= "Ada Procedures";
     45$Title{"AdaFunction"}= "Ada Functions";
     46$Title{"AdaPackage"}= "Ada Packages";
     47$Title{"AdaTask"}= "Ada Tasks";
    4148$Title{"g"}= "All symbols";
    4249
     
    165172        $Ctagsfile{$i}= "$Htmltree/ctags/$Dotdir{$i}.ctags";
    166173        if ($Debug > 0 ) { print "Generating ctags for $Ctagsfile{$i}\n"; }
    167         system("(cd $Srctree; ctags-new -d -t -w -y $i/*) > $Ctagsfile{$i}")
     174        system("(cd $Srctree; /usr1/rtems/rtemsdoc-work/tools/src2html/ctags-wr $i) > $Ctagsfile{$i}")
    168175        && print "$0: ctags failed on $Srctree/$i\n";
    169176    }
     
    187194    local($i);
    188195    local($low);
     196    local($count);
     197
     198    $count = 0;
    189199
    190200    foreach $i (keys(%Dirinfo)) {
     
    192202        if ($Debug > 0) { print "Parsing $Ctagsfile{$i} to build ptr files\n"; }
    193203        while (<CTAGS>) {
     204            $count ++;
    194205            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+Preprocessor macro/ ) {
    195                 ($low=$1)=~tr/A-Z_/a-z/d; $Macro{$low}=$1;
    196                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     206                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     207                $Macro{$k}=$1;                  $Nline{$k}= $2;
     208                $Nfile{$k}= $3;                 next;
    197209            }
    198210            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+Preprocessor define/ ) {
    199                 ($low=$1)=~tr/A-Z_/a-z/d; $Def{$low}=$1;
    200                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     211                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     212                $Def{$k}=$1;                    $Nline{$k}= $2;
     213                $Nfile{$k}= $3;                 next;
    201214            }
    202215            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C struct/ ) {
    203                 ($low=$1)=~tr/A-Z_/a-z/d; $Struct{$low}=$1;
    204                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     216                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     217                $Struct{$k}=$1;                 $Nline{$k}= $2;
     218                $Nfile{$k}= $3;                 next;
    205219            }
    206220            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C union/ ) {
    207                 ($low=$1)=~tr/A-Z_/a-z/d; $Union{$low}=$1;
    208                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     221                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     222                $Union{$k}=$1;                  $Nline{$k}= $2;
     223                $Nfile{$k}= $3;                 next;
    209224            }
    210225            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C typedef/ ) {
    211                 ($low=$1)=~tr/A-Z_/a-z/d; $Type{$low}=$1;
    212                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     226                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     227                $Type{$k}=$1;                   $Nline{$k}= $2;
     228                $Nfile{$k}= $3;                 next;
    213229            }
    214230            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C enum/ ) {
    215                 ($low=$1)=~tr/A-Z_/a-z/d; $Enum{$low}=$1;
    216                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     231                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     232                $Enum{$k}=$1;                   $Nline{$k}= $2;
     233                $Nfile{$k}= $3;                 next;
    217234            }
    218235            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C function/ ) {
    219                 ($low=$1)=~tr/A-Z_/a-z/d; $Func{$low}=$1;
    220                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     236                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     237                $Func{$k}=$1;                   $Nline{$k}= $2;
     238                $Nfile{$k}= $3;                 next;
    221239            }
    222240            if ( /^(\w+)\s+(\d+)\s+(\S+)\s+C variable/ ) {
    223                 ($low=$1)=~tr/A-Z_/a-z/d; $Var{$low}=$1;
    224                 $Nfile{$1}= $3; $Nline{$1}= $2; next;
     241                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     242                $Var{$k}=$1;                    $Nline{$k}= $2;
     243                $Nfile{$k}= $3;                 next;
     244            }
     245            if ( /^(return)\/.\s+(\d+)\s+(\S+)\s+.*/ ) {
     246                next;
     247                # Code like the following line results in "return" as ctag
     248                #    "type Action is access function return Boolean;
     249            }
     250            if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+use .*/ ) {
     251                next;
     252                # throw away lines like "use type System"
     253            }
     254
     255            if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+type .*/ ) {
     256                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     257                $AdaType{$k}=$1;                $Nline{$k}= $2;
     258                $Nfile{$k}= $3;                 next;
     259            }
     260            if ( /^(\w+)\/.+\s+(\d+)\s+(\S+)\s+procedure .*/ ) {
     261                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     262                $AdaProcedure{$k}=$1;           $Nline{$k}= $2;
     263                $Nfile{$k}= $3;                 next;
     264            }
     265            if ( /^(\w+)\/.+\s+(\d+)\s+(\S+)\s+function .*/ ) {
     266                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     267                $AdaFunction{$k}=$1;            $Nline{$k}= $2;
     268                $Nfile{$k}= $3;                 next;
     269            }
     270            if ( /^(\".+)\/.+\s+(\d+)\s+(\S+)\s+function .*/ ) {
     271                next;
     272                # throw away functions like "*"
     273            }
     274            if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+package .*/ ) {
     275                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     276                $AdaPackage{$k}=$1;             $Nline{$k}= $2;
     277                $Nfile{$k}= $3;                 next;
     278            }
     279            if ( /^(\w+)\/.\s+(\d+)\s+(\S+)\s+task .*/ ) {
     280                ($low=$1)=~tr/A-Z_/a-z/d;       $k="$low$count";
     281                $AdaTask{$k}=$1;                $Nline{$k}= $2;
     282                $Nfile{$k}= $3; next;
     283            }
     284            if ( /^([\w\/]+)\s+(\d+)\s+(\S+)\s+use type .*/ ) {
     285                next;
     286            }
     287            if ( /^([\w\/\(]+)\s+(\d+)\s+(\S+)\s+type .*/ ) {
     288                next;
     289            }
     290            if ( /^;([\w\/\(]+)\s+(\d+)\s+(\S+)\s+type .*/ ) {
     291                next;
     292            }
     293            if ( /^\(([\w\/\(]+)\s+(\d+)\s+(\S+)\s+procedure .*/ ) {
     294                next;
    225295            }
    226296            print "$0: In Ctagsfile{$i}, don't recognise $_";
     
    230300        undef %Macro; undef %Def; undef %Func; undef %Var;
    231301        undef %Struct; undef %Union; undef %Type; undef %Enum;
     302        undef %AdaType; undef %AdaProcedure; undef %AdaFunction;
     303        undef %AdaPackage; undef %AdaTask;
    232304    }
    233305  &make_top_html;
     
    247319    local($let)="@";
    248320 
    249     foreach $i ( "a".."z" ) { $Exists{$i}=0; }
     321    foreach $i ( "a".."z",
     322       "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
     323        $Exists{$i}=0;
     324    }
    250325    foreach $name (sort keys( %type )) {
    251326        if (substr($name,0,1) ne $let) {
     
    265340            print HTML "<ul>\n";
    266341        }
    267         print HTML "<li><a href=\"$Newsrctree/$Nfile{$type{$name}}";
     342        # print HTML "<li><a href=\"$Newsrctree/$Nfile{$type{$name}}";
     343        # print HTML ".html#$type{$name}\">$type{$name}</a> ";
     344        # print HTML "$Nfile{$type{$name}}:$Nline{$type{$name}}\n"; next;
     345
     346        print HTML "<li><a href=\"$Newsrctree/$Nfile{$name}";
    268347        print HTML ".html#$type{$name}\">$type{$name}</a> ";
    269         print HTML "$Nfile{$type{$name}}:$Nline{$type{$name}}\n"; next;
     348        print HTML "$Nfile{$name}:$Nline{$name}\n"; next;
    270349    }
    271350    print HTML "</ul></body>\n";
     
    304383        print HTML "<ul>\n";
    305384        foreach $name (sort keys( %type )) {
    306             print HTML "<li><a href=\"$Newsrctree/$Nfile{$type{$name}}";
    307             print HTML ".html#$type{$name}\">$type{$name}</a> ";
    308             print HTML "$Nfile{$type{$name}}:$Nline{$type{$name}}\n"; next;
     385            # print HTML "<li><a href=\"$Newsrctree/$Nfile{$type{$name}}";
     386            # print HTML ".html#$type{$name}\">$type{$name}</a> ";
     387            # print HTML "$Nfile{$type{$name}}:$Nline{$type{$name}}\n"; next;
     388
     389            print HTML "<li><a href=\"$Newsrctree/$Nfile{$name}";
     390            print HTML ".html#$type{$name}\">$type{$name}</a> ";
     391            print HTML "$Nfile{$name}:$Nline{$name}\n"; next;
    309392        }
    310393        print HTML "</ul></body>\n";
     
    321404        print HTML "<ul>\n";
    322405   
    323         foreach $i ( "a".."z" ) {
     406        foreach $i ( "a".."z",
     407           "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
    324408            if ($Exists{$i} > 0) {                      # A file exists
    325409                print HTML "<li><a href=\"$Dotdir{$dir}.$pref$i.html\">";
     
    362446    &make_type_html($dir, "t", $Title{"t"}, *Type);
    363447    &make_type_html($dir, "e", $Title{"e"}, *Enum);
     448    &make_type_html($dir, "AdaType", $Title{"AdaType"}, *AdaType);
     449    &make_type_html($dir,
     450         "AdaProcedure", $Title{"AdaProcedure"}, *AdaProcedure);
     451    &make_type_html($dir, "AdaFunction", $Title{"AdaFunction"}, *AdaFunction);
     452    &make_type_html($dir, "AdaPackage", $Title{"AdaPackage"}, *AdaPackage);
     453    &make_type_html($dir, "AdaTask", $Title{"AdaTask"}, *AdaTask);
    364454
    365455    if ($NoAll != 1) {
     
    372462        &asappend(*GType, *Type);
    373463        &asappend(*GEnum, *Enum);
     464        &asappend(*GAdaType, *AdaType);
     465        &asappend(*GAdaProcedure, *AdaProcedure);
     466        &asappend(*GAdaFunction, *AdaFunction);
     467        &asappend(*GAdaPackage, *AdaPackage);
     468        &asappend(*GAdaTask, *AdaTask);
    374469    }
    375470
     
    382477    &asappend(*Alldir, *Type);
    383478    &asappend(*Alldir, *Enum);
     479    &asappend(*Alldir, *AdaType);
     480    &asappend(*Alldir, *AdaProcedure);
     481    &asappend(*Alldir, *AdaFunction);
     482    &asappend(*Alldir, *AdaPackage);
     483    &asappend(*Alldir, *AdaTask);
     484
    384485    if ($NoLetters != 1) {
    385486        &make_letters_html($dir, "g", $Title{"g"}, *Alldir);
     
    408509    print HTML "<h1>Cross-references for $dir by type</h1><p><ul>\n";
    409510   
    410     foreach $i ( "f","m","d","v","s","u","t","e" ) {
     511    foreach $i ( "f","m","d","v","s","u","t","e",
     512           "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
    411513        if ($Exists{$Title{$i}} > 0) {          # A type exists
    412514            print HTML "<li><a href=\"$Dotdir{$dir}.$i.html\">";
     
    445547    &make_type_html($Top, "t", $Title{"t"}, *GType);
    446548    &make_type_html($Top, "e", $Title{"e"}, *GEnum);
     549    &make_type_html($Top, "AdaType", $Title{"AdaType"}, *GAdaType);
     550    &make_type_html($Top, "AdaProcedure", $Title{"AdaProcedure"}, *GAdaProcedure);
     551    &make_type_html($Top, "AdaFunction", $Title{"AdaFunction"}, *GAdaFunction);
     552    &make_type_html($Top, "AdaPackage", $Title{"AdaPackage"}, *GAdaPackage);
     553    &make_type_html($Top, "AdaTask", $Title{"AdaTask"}, *GAdaTask);
    447554
    448555    open(HTMLTOP, "> $Htmltree/$Top.html")
     
    477584    if ($NoAll != 1) {
    478585        print HTMLTOP "</ul><p><h2>Cross-references by type</h2><p><ul>\n";
    479         foreach $i ( "f","m","d","v","s","u","t","e" ) {
     586        foreach $i ( "f","m","d","v","s","u","t","e",
     587           "AdaType", "AdaProcedure", "AdaFunction", "AdaPackage", "AdaTask" ) {
    480588            if ($Exists{$Title{$i}} > 0) {              # A type exists
    481589                print HTMLTOP "<li><a href=\"$Top.$i.html\">";
     
    494602            &asappend(*Alltop, *GType);
    495603            &asappend(*Alltop, *GEnum);
     604            &asappend(*Alltop, *GAdaType);
     605            &asappend(*Alltop, *GAdaProcedure);
     606            &asappend(*Alltop, *GAdaFunction);
     607            &asappend(*Alltop, *GAdaPackage);
     608            &asappend(*Alltop, *GAdaTask);
    496609   
    497610            if ($Debug > 0) { print "Making top letters\n"; }
     
    534647    while (<CTAGS>) {
    535648                                        # Get the next file, line, symbol
    536         if (/^(\w+)\s+(\d+)\s+([A-Za-z0-9_\+\-\.\/]+)/) {
     649        if (/^([\w\/]+)\s+(\d+)\s+([A-Za-z0-9_\+\-\.\/]+)/) {
    537650            if ($Debug > 2) { print "Symb $1 at $2 in $3\n"; }
    538             $nextcnt= $2; $symb=$1;
     651            $fname=$3; $nextcnt= $2; $symb=$1;
     652            $symb=~ s/\/.//g;
     653
    539654                                        # If it's in a new file
    540             if ("$file" ne "$3") {
     655            if ("$file" ne "$fname") {
    541656                                        # Print out the remainder of the
    542657                                        # current file, incl. the buffered line
     
    549664                    close(IN); close(OUT);
    550665                }
    551                 $file= "$3";
     666                $file= "$fname";
    552667                                        # Open the new file & do the preamble
    553668                open(IN, "$Srctree/$file") ||
     
    583698        }
    584699                                                # Now rewrite the line
    585         $line=~ s/$symb/<a name="$symb"<\/a><b>$symb<\/b>/;
     700        $line=~ s/\b$symb\b/<a name="$symb"<\/a><b>$symb<\/b>/;
    586701        next;
    587702    }
Note: See TracChangeset for help on using the changeset viewer.