API препроцессора Pcpp, как использовать? - PullRequest
1 голос
/ 03 октября 2019

У меня есть файл заголовка C, и мне нужно проанализировать его, чтобы выполнить проверку во время сборки. Поэтому я сейчас пытаюсь использовать для этого pcpp. На github я не нашел примеров использования API, кроме комментариев в исходном коде . Ссылка на примеры , похоже, больше не работает. Я попробовал следующее:

#!/usr/bin/python3.7
import sys
import pcpp

def check_directive(directive):
    #do the checking
    #...

class Checker(pcpp.Preprocessor):
    def on_directive_handle(self, directive, toks, ifpassthru, precedingtoks):
        print("Checking directive...")
        check_directive(directive)
        super(pcpp.Preprocessor, on_directive_handle)


if __name__ == "__main__":
    c_header_path = sys.argv[1]
    with open(c_header_path) as fd:
        c_header = fd.read()

    checker = Checker()
    checker.parsegen(c_header)

Но проверка не была проведена, и диагностический вывод Checking directive... не производился.

Может ли кто-нибудь предоставить рабочий пример с использованием API? Или, возможно, посоветуете другой модуль Python для такого рода задач?

...