Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C99函数声明中确定返回类型、参数和函数名_C_Perl_C99 - Fatal编程技术网

如何从C99函数声明中确定返回类型、参数和函数名

如何从C99函数声明中确定返回类型、参数和函数名,c,perl,c99,C,Perl,C99,我正在寻找最简单的方法,如何从C99下编写的c头文件中确定返回类型、参数和函数名 这是我的学校项目,必须用Perl编写,没有任何LIB。所以我有一些选择,我可以使用正则表达式,但它不适用于最难的函数,如: int * (* func(int * arg[]))(); 返回类型应为“int*(*)()”,参数为“int*[]” 第二种方法是使用语法并解析它,但我认为,这不是正确的方法 我的朋友告诉我一个现有的算法可以做到这一点。但他不记得他的名字,也不记得在哪里见过他。算法非常简单。类似于:查找

我正在寻找最简单的方法,如何从C99下编写的c头文件中确定返回类型、参数和函数名

这是我的学校项目,必须用Perl编写,没有任何LIB。所以我有一些选择,我可以使用正则表达式,但它不适用于最难的函数,如:

int * (* func(int * arg[]))();
返回类型应为“int*(*)()”,参数为“int*[]

第二种方法是使用语法并解析它,但我认为,这不是正确的方法

我的朋友告诉我一个现有的算法可以做到这一点。但他不记得他的名字,也不记得在哪里见过他。算法非常简单。类似于:查找第一个结束括号,此结束括号和第一个匹配前一个开始括号之间的所有内容都是参数


有人知道我在找什么吗?

你只需要为这种问题建立一个解决方案。通常情况下,自上而下的方法(例如a)适用于此类工作。幸运的是,自顶向下的解析器或多或少是直接实现的


类C语言中唯一的难点是,这些语言通常至少是LL1(1个令牌前瞻),甚至更糟的是LL2或更多。因此,有时您必须事先查看一些标记,以确定它是函数声明还是函数调用

你只需要为这类问题建立一个解决方案。通常情况下,自上而下的方法(例如a)适用于此类工作。幸运的是,自顶向下的解析器或多或少是直接实现的


类C语言中唯一的难点是,这些语言通常至少是LL1(1个令牌前瞻),甚至更糟的是LL2或更多。因此,有时您必须事先查看一些标记,以确定它是函数声明还是函数调用

如果你能从克尼汉和里奇那里得到。这不仅是C圣经,而且在第5章中,他们给出了解析C声明的代码。你可以看看他们是如何做到这一点的,并且很有可能调整他们的方法(第5章,第12节)。

如果你能从克尼汉和里奇那里得到。这不仅是C圣经,而且在第5章中,他们给出了解析C声明的代码。你可以看看他们是如何做到这一点的,并且很可能会调整他们的方法(第5章,第12节)。

看看

看看

你的意思是?这是一个解析问题。为什么你觉得解析不是正确的方法?@JonPrudy:这个头解析的基本部分可以用正则表达式来编写,得到10/10分。高级部分可获得1点奖励积分。因此,我认为我不必编写复杂的解析器来获得1分。但我可能错了:D丛旭感谢我一直在寻找的算法,但正如我所看到的,它并不完全是我所需要的。你是说这个?这是一个解析问题。为什么你觉得解析不是正确的方法?@JonPrudy:这个头解析的基本部分可以用正则表达式来编写,得到10/10分。高级部分可获得1点奖励积分。因此,我认为我不必编写复杂的解析器来获得1分。但我可能错了:D丛旭感谢我一直在寻找的算法,但正如我所看到的,它并不完全是我所需要的。我正在寻找没有BNF或其他语法规则知识的简单算法,所以这似乎是正确的方法。现在,谢谢。@l0v3,如果这是“正确答案”,请确定并选择它。谢谢对不起,我在这里是个新手,所以我会先试试这个解决方案,然后再把它标记为正确的:)@l0v3,当然,但是如果你质疑他的书,彼得·范德林登会让你梦寐以求。顺便说一句,如果你是C新手,想成为一名专家,我强烈推荐这本书,它将改变你的生活。我正在寻找没有BNF或其他语法规则知识的简单算法,所以这似乎是正确的方法。现在,谢谢。@l0v3,如果这是“正确答案”,请确定并选择它。谢谢对不起,我在这里是个新手,所以我会先试试这个解决方案,然后再把它标记为正确的:)@l0v3,当然,但是如果你质疑他的书,彼得·范德林登会让你梦寐以求。顺便说一句,如果你是C新手,想成为一名专家,我强烈推荐这本书,它将改变你的生活。