ruby中的cpp语言解析器

cpp language parser in ruby

本文关键字:语言 中的 cpp ruby      更新时间:2023-10-16

我有一个用C++编写的项目。代码中的一些Struct获取规范信息,所以我需要获取并解析它们。我用Ruby编写了一个跟踪预处理(例如#if#ifdef)状态和类/结构/方法边界的脚本,而其他脚本则将其视为文本,所以我扫描关键字,但这并不明智。为了解析C++代码,我在Ruby中安装了一个C++解析器,但它有bug,而且很旧。有没有建议任何Ruby gem解析C++代码?或者,有什么聪明的解决方案吗?

解析C++是一项非常非常不容易的任务。它是现存语法最复杂的语言之一。与其试图解析C++,更好的方法是让Ruby根据提取的规范信息输出结构定义。

如果您必须解析C++,那么最好的选择可能是尝试利用libclang。AFAIK目前还没有任何Ruby绑定,但我的意思是,解析C++并不是每个语言都能拥有库的。这是一项非常复杂且非常小众的任务。这是最容易实现的方法。