| 2158 | |
| 2159 | |
| 2160 | def sortvarnames(vars): |
| 2161 | indep = [] |
| 2162 | dep = [] |
| 2163 | for v in list(vars.keys()): |
| 2164 | if 'depend' in vars[v] and vars[v]['depend']: |
| 2165 | dep.append(v) |
| 2166 | else: |
| 2167 | indep.append(v) |
| 2168 | n = len(dep) |
| 2169 | i = 0 |
| 2170 | while dep: # XXX: How to catch dependence cycles correctly? |
| 2171 | v = dep[0] |
| 2172 | fl = 0 |
| 2173 | for w in dep[1:]: |
| 2174 | if w in vars[v]['depend']: |
| 2175 | fl = 1 |
| 2176 | break |
| 2177 | if fl: |
| 2178 | dep = dep[1:] + [v] |
| 2179 | i = i + 1 |
| 2180 | if i > n: |
| 2181 | errmess('sortvarnames: failed to compute dependencies because' |
| 2182 | ' of cyclic dependencies between ' |
| 2183 | + ', '.join(dep) + '\n') |
| 2184 | indep = indep + dep |
| 2185 | break |
| 2186 | else: |
| 2187 | indep.append(v) |
| 2188 | dep = dep[1:] |
| 2189 | n = len(dep) |
| 2190 | i = 0 |
| 2191 | return indep |
| 2192 | |
| 2193 | |
| 2194 | def analyzecommon(block): |