OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [soft/] [doc/] [doc1.pl] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
%d1_arch_scope;
2
%d1_func_scope;
3
@d1_scope = ("none");
4
 
5
sub d1_process
6
{
7
    my ($body,$off) = @_;
8
    my (@match,$pos,$tok);
9
    my (%tmp,$posbeg,$posend,$reg);
10
    while (length($body) != 0) {
11
        if ($body =~ /([\W]*--[^\n]*\n)/) {
12
            $body = substr($body,length($1));
13
            $off += length($1);
14
        } else {
15
            ($body,@match) = d2_scannext($body,"($id)");
16
            if ($#match != -1) {
17
                $tok = $match[1];
18
                $posbeg = $off+$match[6];
19
                $posend = $off+$match[6]+length($match[0]);
20
                $off = $posend;
21
                if ($dbgon == 1) { print ("<$tok [$posbeg:$posend]>");}
22
                if      (exists($d4_keyword{$tok})) {
23
                    if      ($tok eq "architecture") {
24
                        if (exists($d2_begs{$posbeg})) {
25
                            d1_initarch($d2_begs{$posbeg});
26
                            push(@d1_scope,"arch");
27
                        } else {
28
 
29
                        }
30
                    } elsif ($tok eq "function") {
31
                        if (exists($d2_begs{$posbeg})) {
32
                            d1_initfunc($d2_begs{$posbeg});
33
                            push(@d1_scope,"func");
34
                        } else {
35
                        }
36
                    } elsif ($tok eq "procedure") {
37
                        if (exists($d2_begs{$posbeg})) {
38
                            d1_initproc($d2_begs{$posbeg});
39
                            push(@d1_scope,"func");
40
                        } else {
41
                        }
42
                    } elsif ($tok eq "end") {
43
                        if (exists($d2_ends{$posbeg})) {
44
                            pop(@d1_scope);
45
                        } else {
46
                        }
47
                    } elsif ($tok eq "variable") {
48
                        $reg = $match[0].$body;
49
                        if ($d1_scope[$#d1_scope] eq "arch") {
50
                            if ($reg =~ /variable([^;]*);/) {
51
                                d1_addarch($1);
52
                            }
53
                        }
54
                    } elsif ($tok eq "signal") {
55
                        $reg = $match[0].$body;
56
                        if ($d1_scope[$#d1_scope] eq "arch") {
57
                            if ($reg =~ /signal([^;]*);/) {
58
                                d1_addarch($1);
59
                            }
60
                        }
61
                    } elsif ($tok eq "record") {
62
                        $reg = $match[0].$body;
63
                        if ($d1_scope[$#d1_scope] eq "arch") {
64
                            if ($reg =~ /signal([^;]*);/) {
65
                                d1_addarch($1);
66
                            }
67
                        }
68
                    } else {
69
                        d5_addcut($posbeg,$posend,"style",$d4_keyword{$tok}{style});
70
                    }
71
                } elsif (exists($d2_records{$tok})) {
72
                    d5_addcut($posbeg,$posend,"record",$tok);
73
                } elsif (exists($d2_funcs{$tok})){
74
                    d5_addcut($posbeg,$posend,"func",$tok);
75
                } elsif (exists($d2_procs{$tok})){
76
                    d5_addcut($posbeg,$posend,"proc",$tok);
77
                } elsif (exists($d2_consts{$tok})){
78
                    d5_addcut($posbeg,$posend,"const",$tok);
79
                } elsif (exists($d2_enums{$tok})) {
80
                    d5_addcut($posbeg,$posend,"enum",$tok);
81
                } elsif (exists($d2_enumelems{$tok})) {
82
                    d5_addcut($posbeg,$posend,"enum",$d2_enumelems{$tok});
83
                } else {
84
                    $type = d1_vartype($tok);
85
                    if (not ($type eq "")) {
86
                        d5_addcut($posbeg,$posend,"vartyp",$type);
87
                        ($body,@match) = d1_travvar($body,$type,$off);
88
                        $off = $off+$match[6]+length($match[0]);
89
                    } else {
90
                        if (exists($d3_usedby_set{$tok})) {
91
 
92
                            d5_addcut($posbeg,$posend,"file",$tok);
93
                        }
94
                    }
95
                }
96
            }
97
        }
98
    }
99
}
100
 
101
sub d1_travvar
102
{
103
    my ($body,$type,$off) = @_;
104
    my $pos = -1,my $tok,my $posbeg,my $posend;
105
    my @match = (),my %tmp,my %elem,my @tmpmatch;
106
    my $reg = "^($sp\\.$sp)($id)";
107
    my $regindex = "^$sp\\([^\\)]*?\\)";
108
    $match[0] = "";
109
    $match[6] = 0;
110
    if ($body =~ /$regindex/) {
111
        $match[0] = $&;
112
        $body = substr($body,length($&));
113
    }
114
    if ($body =~ /$reg/) {
115
        $tok = $2;
116
        $posbeg = $off + length($match[0])+length($1);
117
        $posend = $off + length($match[0])+length($&);
118
        $off = $posend;
119
        %tmp = @{$d2_records{$type}};
120
        %elem = @{$tmp{elem}};
121
        if (exists($elem{$tok})) {
122
            $match[0] .= $&;
123
            $body = substr($body,length($&));
124
            d5_addcut($posbeg,$posend,"vartyp",$elem{$tok});
125
            ($body,@tmpmatch) = d1_travvar($body,$elem{$tok},$off);
126
            $match[0].= $tmpmatch[0];
127
        }
128
    }
129
    return ($body,@match);
130
}
131
 
132
sub d1_initfunc
133
{
134
    my ($n) = @_;
135
    my (%tmp,%args,%vari,$ke);
136
    %tmp = @{$d2_funcs{$n}};
137
    %args = @{$tmp{argselem}};
138
    %vari = @{$tmp{varielem}};
139
 
140
    %d1_func_scope = ();
141
    if ($dbgon == 1) { print ("Initializing function scope\n"); };
142
    for $ke (sort keys(%args)) {
143
        $d1_func_scope{$ke} = $args{$ke};
144
        if ($dbgon == 1) { print ("-Add $ke:".$args{$ke}."\n"); };
145
    }
146
    for $ke (sort keys(%vari)) {
147
        $d1_func_scope{$ke} = $vari{$ke};
148
        if ($dbgon == 1) { print ("-Add $ke:".$vari{$ke}."\n"); };
149
    }
150
}
151
 
152
sub d1_initproc
153
{
154
    my ($n) = @_;
155
    my (%tmp,%args,%vari,$ke);
156
    %tmp = @{$d2_procs{$n}};
157
    %args = @{$tmp{argselem}};
158
    %vari = @{$tmp{varielem}};
159
 
160
    %d1_func_scope = ();
161
    if ($dbgon == 1) { print ("Initializing procedure scope\n"); };
162
    for $ke (sort keys(%args)) {
163
        $d1_func_scope{$ke} = $args{$ke};
164
        if ($dbgon == 1) { print ("-Add $ke:".$args{$ke}."\n"); };
165
    }
166
    for $ke (sort keys(%vari)) {
167
        $d1_func_scope{$ke} = $vari{$ke};
168
        if ($dbgon == 1) { print ("-Add $ke:".$vari{$ke}."\n"); };
169
    }
170
}
171
 
172
sub d1_initarch
173
{
174
    my ($n) = @_;
175
    my (%tmp,%port,$ke,$enti);
176
    %d1_arch_scope = ();
177
    %tmp = @{$d2_archs{$n}};
178
    $enti = $tmp{enti};
179
 
180
    %d1_arch_scope = ();
181
    if ($dbgon == 1) {
182
        print ("Initializing architecture scope $n of $enti\n");
183
    };
184
    if (exists($d2_entities{$enti})) {
185
        %tmp = @{$d2_entities{$enti}};
186
        %port = @{$tmp{portelem}};
187
        for $ke (sort keys(%port)) {
188
            $d1_arch_scope{$ke} = $port{$ke};
189
            if ($dbgon == 1) { print ("-Add $ke:".$port{$ke}."\n"); };
190
        }
191
    }
192
}
193
 
194
sub d1_addarch
195
{
196
    my ($def) = @_;
197
    my %elem;
198
    %elem = d2_splitdef($def);
199
    for $ke (keys(%elem)) {
200
        $d1_arch_scope{$ke} = $elem{$ke};
201
    }
202
}
203
 
204
sub d1_vartype
205
{
206
    my ($tok) = @_;
207
    my $type = "";
208
    if ($d1_scope[$#d1_scope] eq "arch") {
209
        if (exists($d1_arch_scope{$tok})) {
210
            $type = $d1_arch_scope{$tok};
211
        }
212
    } elsif ($d1_scope[$#d1_scope] eq "func") {
213
        if (exists($d1_func_scope{$tok})) {
214
            $type = $d1_func_scope{$tok};
215
        }
216
    }
217
    return $type;
218
}
219
 
220
1;
221
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.