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

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

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

15 ответов

16 просмотров
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-таргетов

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта