Реализовать символическое выполнение без проверки модели

Как я могу реализовать symbolic execution за particular language без использования model checking а также Finite State Machine (FSM) например not такие как Java Path Finder? Мне нужна деталь об этом. например, на каком языке я могу реализовать это символическое выполнение и что еще мне нужно знать?

1 ответ

Решение

Тебе нужно:

  • Синтаксический анализатор для языка, который должен быть выполнен символически, который может создавать AST
  • Разрешение имени (и связанных таблиц символов), поэтому, когда ваш механизм исполнения встречает идентификатор, он может определить связанный тип и значение
  • Анализ потока управления, так что символический механизм выполнения может отслеживать поток управления через программу
  • Символическая алгебра, которая может составлять и упрощать символические термины. Для этого нужен парсер (чтобы вы могли вводить такие уравнения) и prettyprinter (чтобы вы могли видеть, что он вычисляет)
  • Способ указания предполагаемых значений в точке начала символического выполнения

Это довольно много техники, и все это трудно найти в одном месте. Труднее собрать все это только для одного инструмента, и это одна из причин, по которой вы не можете найти много подобных инструментов.

Наш инструментарий для реинжиниринга программного обеспечения DMS имеет все необходимое. Вы можете найти пример символического языка, реализованного с помощью DMS, интересным.

Другие вопросы по тегам