【发布时间】:2020-08-19 14:11:06
【问题描述】:
我有几个需要从中提取参数的 C 函数的第一行实现示例。例如:
double FuncName1(char *testnum, char *hipin_source, char *hipin_sense,
char *lopin_source, char *lopin_sense, DMM_ResRange range, float delay) {
和
double FuncName2(char *testnum, char *hipin, char *lopin, DMM_ResRange range, float delay, bool offset) {
有没有我可以在 C# 中使用的 RegEx 来提取函数名、返回类型,但更重要的是参数?
编辑: 我正在使用 C# 进行开发,需要解析 C 源代码文件,创建对象,例如具有字符串名称、字符串 ReturnType、具有字符串 argType 和字符串 argName 的 Arg 对象的 Func 对象
编辑 2: 好吧,我终于尝试了,但它不起作用...可能是我没有正确定义这些...我正在尝试解析一个函数调用,该函数调用的编码如下:
DCPS_Apply(1, // Module (optional comment)
5.0, // Voltage (optional comment)
2.0); // Current (optional comment)
或者像这样:
DCPS_Apply(1, 5.0, 2.0); // optional comment
我需要函数名和参数...
【问题讨论】:
-
“从中提取参数”是什么意思?您是否将
C转换为C#?还有,RegEx跟这个有什么关系? -
这听起来很像 XY 问题。你为什么要这些数据?你为什么要研究源代码?为什么要解决 C#/.NET 中原生 C++ 代码的问题?
-
你是什么意思,提取参数?类型、名称或只是声明字符串?您很可能无法使用正则表达式来做到这一点。
-
通常解析 C 函数定义并非易事,因此除非您严格限制输入(仅限于 C 实际允许的一小部分),否则不太可能使用正则表达式解决方案。
-
@MemReflect 我认为这必然是不可能的,因为函数指向函数的指针指向函数的指针......意味着你必须平衡嵌套括号,这是众所周知的仅使用正则表达式是不可能的。