正则表达式:获取 CPP 函数 (c#) 的单独参数和参数类型

本文关键字:参数 单独 类型 获取 CPP 函数 正则表达式 | 更新日期: 2023-09-27 18:32:14

我不知道太多正则表达式,如何获取变量和变量的类型?

示例源文本:

func (int arg1, float *arg2, float *arg3)
func2 (const char * name, int arg1, int arg2, int arg3, void * mem)

正则表达式示例

(''(.*?)'') 

— 一次所有变量,但如何分别获取它们?

''((.*?),(.*?),(.*?)'')

int arg1 float *arg2 float *arg3,但可能超过 3 个选项...我需要分别获取类型和参数。

正则表达式:获取 CPP 函数 (c#) 的单独参数和参数类型

如果你坚持使用正则表达式并假设你的函数签名不会变得非常复杂,那么你可以循环反对所有var_type变量对,如下所示 while(s/(.*?) ('S+),//)

你应该给自己一份Antlr的副本:

http://www.antlr.org/

如果您尝试解析 C/C++ 头文件,则不仅仅是函数声明。特别是如果它是C++。

Antlr 对于执行您似乎正在谈论的那种部分解析和变形也很棒。除此之外,您还可以免费获得 C 语法,这可能足以满足您的需求(但我不会指望它)。

也获取特伦斯·帕尔的书:

  • 权威的ANTLR 4参考文献
  • 语言实现模式:创建您自己的特定于域的通用编程语言