Я анализирую C ++ с Python3, используя ANTLR. Для кода из 10-20 строк это занимает около 25 ~ 30 секунд c, тогда как c уже слишком много, но когда я пытаюсь проанализировать файл C ++ с 2k строк кода (одна строка), то это происходит дольше, чем 1 час что слишком много! У меня будет более одного файла такого большого размера, и в ожидании такого длинного анализа мой инструмент станет непригодным для использования!
У меня очень простой c код, как показано ниже, а в посетителе у меня 3 функции посетителя.
input_stream = FileStream(sys.argv[1])
cpplex = CPP14Lexer(input_stream)
commtokstream = CommonTokenStream(cpplex)
cpparser = CPP14Parser(commtokstream)
print(" parse errors: {}".format(cpparser._syntaxErrors))
tree = cpparser.translationunit()
tv = TREEVisitor()
tv.visit(tree)
1 час - это нормально для строки кода 2k? Можно ли как-нибудь оптимизировать это?
Это файл грамматики, который я использую https://github.com/antlr/grammars-v4/blob/master/cpp/CPP14.g4