我使用clang python绑定来解析我的C ++代码。当我得到带有BINARY_OPERATOR类型的游标时。我找不到获取操作员代码的方法。
我发现有一种方法可以通过修改clang的源代码(https://reviews.llvm.org/D10833?id=39158#change-vBa6Es1Tcb5q)来解决。但是那个提交并没有合并到clang中。而且我只是将clang与已编译的二进制文件一起使用,因此,是否有其他方法无需修改clang的源代码即可获取操作代码?
答案 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)