решёток нужен специальный DSL. Например, описание даже простейшей решётки на OCaml у меня получилось весьма многословным.
С другой стороны, описать направленный граф — вещь несложная. А как действовать с разными таблицами, описывающими конструкции анализируемого языка?
Это где-нибудь разобрано, как проектировать такие системы так, чтобы потом не было мучительно больно писать 2к строк чепухи? В Spoofax?
Сам спросил, сам нашёл - действительно FlowSpec в Spoofax’е содержит какие-то конструкции для решёток.
Я что-то запутался: какая связь между решетками и Spoofax?
Ещё тут встроенные решётки есть, но довольно прямолинейные: https://doc.flix.dev/fixpoints/
Решётки для data flow анализа, кмк, должны описываться на спец языке. А в Spoofax вводятся спец языки. Я, собственно и нашёл сам. Проблема в том, что я не нашёл хорошей документации к этой части Spoofax
Надо, наверное, статьи искать... 😅
Я пока просто на камле понафигачу для собственного удовольствия. А уже потом буду думать, как делать правильно. В применении к Камлу, люди пишут разные линтеры и анализаторы, но ничего уровня PVS. В то же время, кмк, подход monotone framework Moller’а позволяет писать хорошие анализаторы с разными проверками.
OCaml можно из Coq экстрактить, если очень хочется -- это надёжнее, чем PVS. 😄
я думаю, это нужно тогда, когда работаешь в ocaml окружении, в ином случае можно программировать напрямую в coq и компилировать через certicoq
Обсуждают сегодня