使用python regex从C++源中提取命名空间

1 c++ python regex namespaces

我试图提取C++文件中定义的命名空间.
基本上,如果我的C++文件包含:

namespace n1 {
  ...
  namespace n2 { ... } // end namespace n2 
  ...
  namespace n3 { ...} //end namespace n3 
  ...
} //end namespace n1

我希望能够检索:n1,n1 :: n2,n1 :: n3.

有人有任何建议我如何使用python-regex做到这一点?

谢谢.

Gre*_*ill 6

使用正则表达式搜索命名空间名称非常简单.但是,要确定嵌套级别,您必须跟踪源文件中的花括号嵌套级别.这是一个解析问题,使用正则表达式无法解决(理智).此外,您可能必须处理文件中的任何C预处理程序指令,这些指令肯定会影响解析.

C++是一种非常棘手的语言,可以完全解析,但是你可以通过一个tokeniser和一个大括号计数器来解决这个问题.