【发布时间】:2017-03-31 12:39:40
【问题描述】:
我有一个 cpp 文件,我正在读取该文件并尝试使用 python 脚本将行/行添加到该 cpp 文件中。我遇到了一个问题 - 因为它正在读取单行 cmets 和多行 cmets 也因此产生了问题,因为如果我在某个字符串之后/之前编写,有时它也会被添加到 cmets 部分中,这根本不应该发生。
有人可以指导我在使用 python 解析 cpp 文件时如何忽略 cpp 样式 {NOT REMOVE} 吗?
例如,我正在从后面读取文件并尝试添加some text,一旦找到两个}(右大括号),它就会添加some text。
例如:
namespace A {
namespace B {
class C {
};
<Want to add some data here>
}
}
但如果我有一些注释代码:
namespace A {
namespace B {
class C {
};
<Want to add some data here>
}
}
如果我有这样的 cmets:
namespace A {
namespace B {
class C {
};
<Want to add some data here>
}
}
// }
/*
int fun() {
}
*/
从背面读取两个}后,如何忽略这些cmets并添加some text?
注意 - 你也可以帮助我获得一些不同示例的代码。 请让我知道以获取更多信息。
【问题讨论】:
-
要正确执行此操作,您确实需要一个 C++ 解析器。您可以通过gcc-xml 运行您的文件并使用 XML 模块来处理它。
-
感谢稻谷的回复,但实际上我没有得到。我可以要求你用任何例子让我理解吗?请
-
也许你应该解释一下为什么你需要用 Python 来做这件事,以及你使用它的确切目的......因为可能有很多你没有想到的问题的解决方案。
-
我想用 python 来做这件事,因为我的整个工具将用 python 编写,并且部分已经开发好了。这是我被严重卡住的地方之一。如果有解决方案请帮忙
-
这是我用于 // 注释类型的代码 cpat = re.compile("//.*") print re.findall(cpat,t) 和这个 /* / style 我正在使用这条评论 = re.compile(r'/*(.?)*/', re.DOTALL) print re.findall(comment,t)
标签: python c++ python-2.7 python-3.x parsing