正则表达式:获取 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 个选项...我需要分别获取类型和参数。
如果你坚持使用正则表达式并假设你的函数签名不会变得非常复杂,那么你可以循环反对所有var_type变量对,如下所示 while(s/(.*?) ('S+),//)
你应该给自己一份Antlr的副本:
http://www.antlr.org/
如果您尝试解析 C/C++ 头文件,则不仅仅是函数声明。特别是如果它是C++。
Antlr 对于执行您似乎正在谈论的那种部分解析和变形也很棒。除此之外,您还可以免费获得 C 语法,这可能足以满足您的需求(但我不会指望它)。
也获取特伦斯·帕尔的书:
- 权威的ANTLR 4参考文献
- 语言实现模式:创建您自己的特定于域的通用编程语言