gpt4 book ai didi

python - 使用 clang python 绑定(bind)获取二进制操作代码

转载 作者:行者123 更新时间:2023-12-04 13:44:38 24 4
gpt4 key购买 nike

我使用 clang python 绑定(bind)来解析我的 C++ 代码。当我得到一个带有 BINARY_OPERATOR 类型的游标时。我找不到获取运算符(operator)代码的方法。

我发现有一种方法可以通过修改 clang 的源代码( https://reviews.llvm.org/D10833?id=39158#change-vBa6Es1Tcb5q )来解决它。但是那个提交并没有合并到 clang。而且我只是将clang与编译后的二进制文件一起使用,所以有没有其他方法可以在不修改clang源代码的情况下获取操作代码?

最佳答案

我们可以通过计算左子的大小来做一些特殊的事情来获得 op。
请注意,如果游标种类为 BINARY_OPERATOR,则游标将有两个子节点。
cursor.get_tokens() 的长度等于左 child 、右 child 和 的标记之和操作 .
因此,我们可以得到如下操作字符串。

def parse_binary_op(cursor: Cursor):
assert cursor.kind == CursorKind.BINARY_OPERATOR
children_list = [i for i in cursor.get_children()]
assert len(children_list) == 2
left_offset = len([i for i in children_list[0].get_tokens()])
op = [i for i in cursor.get_tokens()][left_offset].spelling
print(op)

关于python - 使用 clang python 绑定(bind)获取二进制操作代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51077903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com