Task #4359
closed[cfg] Реализовать метод toConstraint()
Added by Sergey Smolov over 11 years ago. Updated about 10 years ago.
0%
Description
Метод нужно реализовать в следующих классах: Substitution, Statement, BasicBlock, ControlFlowGraph.
Updated by Igor Melnichenko over 11 years ago
Ты не мог бы описать семантику полей этих классов (или семантику классов в целом)?
Updated by Sergey Smolov over 11 years ago
Во-первых, обновись до r38. Я перенес часть логики в класс Assignment, класс Statement теперь базовый для него и пока пустой. Соответственно, я поясню семантику классов Substitution, Assignment, BasicBlock, ControlFlowGraph.
Substitution это пара вида "переменная-значение". Фишка в том, что в качестве "переменной" может выступать, например, только один элемент массива, а не весь массив целиком, вот так:
a[0] = '1'
Соответственно, Assignment - это набор таких пар. Например, это может быть одновременное присваивание набору битов некоторого набора значений.
BasicBLock - это набор утверждений. Пока в качестве таковых могут быть только Assignment'ы, потом будут добавлены также вызовы процедур, создание экземпляров модулей и т.п.
ControlFLowGraph - это граф, состоящий из вершин (наследников класса Node - теперь они лежат в отдельном java package) и ребер (Link). Тут уже могут быть не только базовые блоки, но и Switch-и - это условные операторы - и Fork\Join\Merge. Все это надо учитывать при построении Constraint'а.
Updated by Sergey Smolov over 11 years ago
Игорь, прошу прощения, снова забыл добавить файлы в коммит. r39
Updated by Igor Melnichenko over 11 years ago
Сделал для Substitution и Assignment.
Вопрос по ControlFlowGraph: будет ли класс расширяться? В текущем варианте (когда есть только неупорядоченные наборы узлов и связей), строить Constraint неудобно.
Updated by Sergey Smolov over 11 years ago
Да, класс будет расширяться и дорабатываться.
Updated by Sergey Smolov over 10 years ago
- Status changed from New to Open
Структура класса CFG (бывший ControlFlowGraph) переработана, можно вернуться к этой задаче.
Updated by Alexander Kamkin over 10 years ago
- Subject changed from Реализовать метод toConstraint() to [basis][model] Реализовать метод toConstraint()
- Target version set to 0.1
Updated by Igor Melnichenko over 10 years ago
Какой constraint следует генерировать в случае WaitStatement?
Updated by Alexander Kamkin over 10 years ago
Никакой. Следует кидать исключение.
Updated by Igor Melnichenko over 10 years ago
Может, лучше перенести implements ISymbolic из Statement в AssignStatement?
Updated by Alexander Kamkin over 10 years ago
- Subject changed from [basis][model] Реализовать метод toConstraint() to [cfg][model] Реализовать метод toConstraint()
Updated by Sergey Smolov over 10 years ago
Я бы не стал переносить. Вдруг мы все же как-нибудь исхитримся, и начнем строить constraint'ы из wait-выражений?:-)
Пока достаточно просто кидать исключение.
Updated by Alexander Kamkin over 10 years ago
- Subject changed from [cfg][model] Реализовать метод toConstraint() to [cfg] Реализовать метод toConstraint()
Updated by Sergey Smolov about 10 years ago
- Status changed from Open to Rejected
Задача, кажется, более не актуальна.