mirror of
https://github.com/catseye/SixtyPical.git
synced 2024-11-28 12:51:10 +00:00
Call it fall_in_map.
This commit is contained in:
parent
9c196efe25
commit
e39dbf68ed
@ -72,7 +72,7 @@ def process_input_files(filenames, options):
|
|||||||
fa.analyze_program(program)
|
fa.analyze_program(program)
|
||||||
|
|
||||||
if options.dump_fallthru_info:
|
if options.dump_fallthru_info:
|
||||||
dump(None, fa.fallthru_map)
|
dump(None, fa.fall_in_map)
|
||||||
|
|
||||||
fa.find_cycles()
|
fa.find_cycles()
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ def process_input_files(filenames, options):
|
|||||||
fa.break_cycle()
|
fa.break_cycle()
|
||||||
|
|
||||||
if options.dump_fallthru_info:
|
if options.dump_fallthru_info:
|
||||||
dump('after breaking cycle', fa.fallthru_map)
|
dump('after breaking cycle', fa.fall_in_map)
|
||||||
|
|
||||||
fa.find_cycles()
|
fa.find_cycles()
|
||||||
|
|
||||||
|
@ -16,19 +16,19 @@ class FallthruAnalyzer(object):
|
|||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
|
||||||
def analyze_program(self, program):
|
def analyze_program(self, program):
|
||||||
fallthru_map = {}
|
fall_in_map = {}
|
||||||
for routine in program.routines:
|
for routine in program.routines:
|
||||||
encountered_gotos = list(routine.encountered_gotos)
|
encountered_gotos = list(routine.encountered_gotos)
|
||||||
if len(encountered_gotos) == 1 and isinstance(encountered_gotos[0].type, RoutineType):
|
if len(encountered_gotos) == 1 and isinstance(encountered_gotos[0].type, RoutineType):
|
||||||
fallthru_map.setdefault(encountered_gotos[0].name, set()).add(routine.name)
|
fall_in_map.setdefault(encountered_gotos[0].name, set()).add(routine.name)
|
||||||
self.fallthru_map = dict([(k, sorted(v)) for k, v in fallthru_map.iteritems()])
|
self.fall_in_map = dict([(k, sorted(v)) for k, v in fall_in_map.iteritems()])
|
||||||
return self.fallthru_map
|
return self.fall_in_map
|
||||||
|
|
||||||
def find_cycles(self):
|
def find_cycles(self):
|
||||||
self.ancestor_map = {}
|
self.ancestor_map = {}
|
||||||
for key in self.fallthru_map:
|
for key in self.fall_in_map:
|
||||||
ancestors = set()
|
ancestors = set()
|
||||||
make_transitive_closure(self.fallthru_map, key, ancestors)
|
make_transitive_closure(self.fall_in_map, key, ancestors)
|
||||||
self.ancestor_map[key] = sorted(ancestors)
|
self.ancestor_map[key] = sorted(ancestors)
|
||||||
|
|
||||||
self.cycles_found = set()
|
self.cycles_found = set()
|
||||||
@ -42,12 +42,12 @@ class FallthruAnalyzer(object):
|
|||||||
cycle_to_break = sorted(self.cycles_found)[0]
|
cycle_to_break = sorted(self.cycles_found)[0]
|
||||||
cycles_to_break = set([cycle_to_break])
|
cycles_to_break = set([cycle_to_break])
|
||||||
|
|
||||||
new_fallthru_map = {}
|
new_fall_in_map = {}
|
||||||
for key in self.fallthru_map:
|
for key in self.fall_in_map:
|
||||||
values = set(self.fallthru_map[key]) - cycles_to_break
|
values = set(self.fall_in_map[key]) - cycles_to_break
|
||||||
if values:
|
if values:
|
||||||
new_fallthru_map[key] = sorted(values)
|
new_fall_in_map[key] = sorted(values)
|
||||||
self.fallthru_map = new_fallthru_map
|
self.fall_in_map = new_fall_in_map
|
||||||
|
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
Loading…
Reference in New Issue
Block a user