使用clang python绑定获取二进制操作代码

时间:2018-06-28 08:14:22

标签: python binding clang binary-operators

我使用clang python绑定来解析我的C ++代码。当我得到带有BINARY_OPERATOR类型的游标时。我找不到获取操作员代码的方法。

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

1 个答案:

答案 0 :(得分:0)

我们可以通过计算左儿子的大小来做一些特殊的操作。

请注意,如果游标类型为BINARY_OPERATOR,则该游标将有两个子节点。

cursor.get_tokens()的长度等于左子代,右子代和 op 的代币之和。

因此,我们可以按以下方式获取操作字符串。

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)