我试图在一个大的 c 文件中找到所有除法运算符。我看到了这个Python 代码示例。
我试图将它用于我的 c 文件。因此,我使用 pycparser 将我的 c 文件解析为 ast,如下所示:
from pycparser import parse_file, c_parser, c_generator
def translate_to_c(filename):
ast = parse_file(filename, use_cpp=True)
ast.show()
translate_to_c('source.c')
然后我尝试通过修改 translate_to_c 来使用该示例,如下所示:
def translate_to_c(filename):
ast = parse_file(filename, use_cpp=True)
ast.show()
last_lineno = None
for node in ast.walk(ast):
# Not all nodes in the AST have line numbers, remember latest one
if hasattr(node, "lineno"):
last_lineno = node.lineno
# If this is a division expression, then show the latest line number
if isinstance(node, ast.Div):
print(last_lineno)
我收到以下错误:
line 25, in translate_to_c
for node in ast.walk(ast):
AttributeError: 'FileAST' object has no attribute 'walk'
那么关于如何在我的代码中使用这个例子有什么想法吗?或如何在一般的 ast 文件上循环?