c++ - 如何接近 C++ 解析器

标签 c++ parsing formatting

<分区>

我想尝试一下我正在制作的格式化程序的 C++ 解析器。

您显然可以打开一个文件并使用 getline(..) 或 get(),这是一种合理的开始方式,然后使用 vector 数组构建一个系统,从而创建大量数组并以某种方式构建和处理你在那里做什么。例如,假设我想在源文件中找到所有函数,所有函数都具有通用语法“(){”,一旦空格被删除,那么您是否只需要查找通用分隔符来将这些部分解析为数组。我想我会边走边学。

或者我还假设有一些经过试验和测试的方法可以做到这一点,而且我很可能只是像他们所说的那样重新发明轮子。

最佳答案

C++ 是一种从一开始就很难解析的语言。因此,如果您想让您的解析器“理解”任何其他非常琐碎的 C++ 代码,那么您最好从现有产品开始。

Clang frontend library也许是一个很好的起点。

还有一些基于 clang 的“源到源”转换示例。这是其中之一:http://eli.thegreenplace.net/2012/06/08/basic-source-to-source-transformation-with-clang/

关于c++ - 如何接近 C++ 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113547/

相关文章:

c++ - 非阻塞 worker - 中断文件复制

python 文件操作(bash 脚本移植)

android - 使用 InputStream 进行 Moshi 解析

C - 格式化MAC地址

java - 有没有一种有效的方法来舍入内部具有双值的字符串并得到 double 答案?

c++ - 在 C++ 中动态引用不同类型的变量?

c++ - 网络字节顺序和字节序问题

c++ - 与调用函数相比,goto 语句是否有效?

python - 在Python中解析log4j

android - 如何引用 sqlite db 列以在更新语句中使用