185 похожих чатов

Вопрос про data flow анализ: Как правильно join-ить ветки с break/continue

внутри циклов? В статьях, которые гуглятся, почему-то этого места не касаются.

15 ответов

3 просмотра
Mar-Ort Автор вопроса

А если делать поверх АСТ? Вроде бы можно, через подпрыгиваение же?

Во-первых, это зависит от решётки, в которой Вы работаете, а во-вторых — в чём конкретно вопрос? Или какой неправильный способ их джойнить (в отличие от джойна if-then-else)?

Mar-Ort Автор вопроса
Alexander Chichigin
Во-первых, это зависит от решётки, в которой Вы ра...

Если такое не в цикле, и какая-то из веток терминируется (например else), то мы берем то что было в оставшейся (then) Если же у нас к примеру такое for (;;) { if (c) { x = 10 } else { x= 20; continue/break } use(x) // 1 } use (x) // 2 То что должно быть в 1 и 2 для x?

Mar Ort
Если такое не в цикле, и какая-то из веток термини...

> Если такое не в цикле, и какая-то из веток терминируется (например else), то мы берем то что было в оставшейся (then) Вот этого я не понял, что значит "берем то что было в оставшейся"? Какой именно анализ Вы делаете и в какой решётке? > То что должно быть в 1 и 2 для x? Та от решётки же зависит, может быть просто Number, например...

Mar-Ort Автор вопроса
Mar Ort
Решетка, видимо, символьная (выражение)

Символьные тоже разные бывают. Без конкретики я не знаю, что Вам ответить...

Во-первых, 1, 2, 3, ..., Number тоже можно обозвать "символьной", потому что Number. Во-вторых, можно символьно использовать выражения того же самого языка, а можно другого. В-третьих, можно в символьные выражения ещё включать условия, а можно не включать. Это то, что из головы, и я символьными непосредственно не занимался, специалисты, поди, больше оттенков различают...

Mar-Ort Автор вопроса
Alexander Chichigin
Во-первых, 1, 2, 3, ..., Number тоже можно обозват...

У меня в качестве символов используются выражения ast и есть флаги которые выводятся из проверок

Mar-Ort Автор вопроса

Ну да

Mar Ort
Ну да

Z3, CVC4 плюс ещё по мелочи...

Mar Ort
А если делать поверх АСТ? Вроде бы можно, через по...

Тогда результат блока с continue должен пропагироваться в начало цикла(в проверку условия), а результат блока с break должен пропагироваться в конец цикла (в statement непосредственно после цикла) Или по-другому, нужно предшественниками условия цикла сделать не только прехедер и конец цикла, но все блоки с continue (для этого цикла). Break похожим образом делается

Mar-Ort Автор вопроса
Владислав Катасонов
Тогда результат блока с continue должен пропагиров...

И правильно ли я понимаю, что каскадные условия (&& и ||) тоже декомпозируются в набор блоков с понятными входами и выходами

Mar Ort
И правильно ли я понимаю, что каскадные условия (&...

В целом, для них можно не хранить информацию о состоянии анализа - просто линейно пробегаться, как по if. Хранить информацию, вроде, достаточно только для блоков, тел цикла(с учётом условия) и goto-таргетов

Похожие вопросы

Обсуждают сегодня

зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Но если Евгений и Алекс используют в боевых условиях, то почему нет? А ты как-то про бизнес больше задвигаешь, это имеет к разработке отношение, но все же этим больше другие л...
Keiman
5
Карта сайта