Промежуточный узел как корневой узел для дерева доминаторов

#java #compiler-construction

#java #компилятор-построение

Вопрос:

Можно ли создавать деревья доминаторов с промежуточным узлом в качестве корневого узла? (Предполагая, что я игнорирую все предыдущие узлы в исходном дереве доминаторов при создании этого нового дерева?)

Заранее спасибо.

Комментарии:

1. Я думаю, что деревья доминаторов применяются к компиляторам в целом, а не только к Java.

2. Вопрос не имеет большого смысла — корневым узлом дерева доминаторов является корневой узел. Промежуточные (некорневые) узлы не являются корневым узлом. Вы можете построить дерево с корнем на каком-либо другом узле, но тогда это не дерево доминатора. Для данного графа потока управления существует ровно одно дерево доминаторов.

Ответ №1:

Свойство «доминирование» определяется в терминах всех возможных путей от начального узла до данного узла.

Если вы хотите построить дерево с корнем в некотором промежуточном узле N, вам придется разработать другое понятие «доминирования», например, узел D доминирует над узлом S, если все возможные пути от N до S проходят через D.

Проблема здесь в том, что такое дерево может даже не существовать, если нет пути от N до S.