python代码注释抽取并移动
抽取策略
准备源代码和对应的带注释版本,须注意LLM生成的带注释版本极有可能会吞掉注释之后具体实现的代码(LLM特色),因此我们才需要抽取注释并移动
步骤
- 使用
tree-sitter
构造注释代码的语法树,并获取根节点 - 遍历注释版本的代码语法树,当遇到注释节点时
- 向上不断找父节点,直到如下两种情况之一
- 如果父节点是
block
,则上一节点就是这个注释处于的层级位置- 比如可能是
class_definition
,function_definition
- 还有可能是
for_statement
这种statement
节点
- 比如可能是
- 如果父节点是
module
,则说明这个注释写在代码主体之外
- 对于停止父节点是
block
的,再获取其上的一级父节点,找到block
在该节点中的子节点下标index
,则在源代码中该注释应当插在注释代码中子节点下标为index - 2(index - 1可能是’:')的文本在源代码中对应文本的后面 - 对于停止父节点是
module
的,直接插在源代码最上面
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 (๑>ᴗ<๑)!
评论