#java #compiler-construction
#java #компилятор-построение
Вопрос:
Можно ли создавать деревья доминаторов с промежуточным узлом в качестве корневого узла? (Предполагая, что я игнорирую все предыдущие узлы в исходном дереве доминаторов при создании этого нового дерева?)
Заранее спасибо.
Комментарии:
1. Я думаю, что деревья доминаторов применяются к компиляторам в целом, а не только к Java.
2. Вопрос не имеет большого смысла — корневым узлом дерева доминаторов является корневой узел. Промежуточные (некорневые) узлы не являются корневым узлом. Вы можете построить дерево с корнем на каком-либо другом узле, но тогда это не дерево доминатора. Для данного графа потока управления существует ровно одно дерево доминаторов.
Ответ №1:
Свойство «доминирование» определяется в терминах всех возможных путей от начального узла до данного узла.
Если вы хотите построить дерево с корнем в некотором промежуточном узле N, вам придется разработать другое понятие «доминирования», например, узел D доминирует над узлом S, если все возможные пути от N до S проходят через D.
Проблема здесь в том, что такое дерево может даже не существовать, если нет пути от N до S.