Недавно я работал над статическим анализом исходного кода Python.
В нашей группе уже есть статический анализатор, написанный на Ocaml для CIL (C Intermediate Language). Мы хотим повторно использовать этот анализатор, поэтому наш идеальный подход - перевести Python на CIL.
В настоящее время я использую встроенный модуль Python ast для разбора Python на Python AST. А потом я перевожу Python AST, напечатанный ast.dump, на C AST. С учетом C AST to CIL API и статического анализатора все написано на Ocaml. Я выбираю Ocamllex & Ocamlyacc для разбора Python AST на C AST. Однако есть некоторые большие проблемы.
Трудно идентифицировать представление AST, напечатанное ast.dump. Это делает мой парсер непростым для реализации. С другой стороны, я не могу использовать Ocaml для доступа к внутренней структуре Python. Даже я мог бы, структура данных отличается от Ocaml.
Интересно, выберу ли я сначала неправильный подход к переводу кода Python в C AST?
Существуют ли другие существующие инструменты или подходы, которые могут соответствовать моим требованиям?
Если я что-то упустил, просто укажите, что это мне очень поможет.
Спасибо.