0

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

示例源文本:

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个选项......而且我需要分别获取类型和参数。

4

2 回答 2

0

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

http://www.antlr.org/

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

Antlr 也非常适合进行您似乎在谈论的那种部分解析和转换。除此之外,您还可以免费获得一个C 语法,这可能足以满足您的需求(但我不会指望它)。

获取特伦斯帕尔的书,太:

于 2013-09-20T17:30:13.107 回答
0

如果您坚持使用正则表达式并假设您的函数签名不是很复杂,那么您可以循环所有 var_type var 对,如下所示 while(s/(.*?) (\S+),//)

于 2013-09-20T17:41:04.357 回答