- ОБНОВЛЕНО -Perl регулярное выражение - Найти функции в файле C и распечатать их определения
Я хочу найти функции C в файл и распечатать их definitios
Например:
Для этого входа :
#include <stdlib>
int function(int a)
{
return a;
}
void func2()
{
int b = 1;
}
int func3(int a,int b)
{
a = a +b;
while(x) {
x--;
}
return a;
}
int main(int argc, char* argv[])
{
int x=(a+1);
return 0;
}
Вывод должен быть:
int function(int a);
void func2();
int func3(int a,int b);
Это мой код:
#!/usr/bin/perl -w
open(FILE, "<", $ARGV[0]) or die "file open error";
if (@ARGV) #if there are args
{
if (-f $ARGV[0]) #if its regular file
{
while(<FILE>)
{
if ($_ =~ /(.+)\s(.+)\(/){
print $1; # type in arg $1
print "\n";
print $2; # name in arg $2
print "\n";
}
}
}
else{
print "Arg is not a file\n";}
}
else{
print "no args\n";}
Я заканчиваю с типом функции в арг $ 1 и имя функции в $ 2. Я хочу получить полное имя и аргументы в скобках '()' в $ 2. Как избежать «основного» слова? '^ [(main)] не работает. В конце я хочу напечатать все это с помощью;; в конце.
Для того, чтобы не печатать, например: int x = (a + 1), необходимо проверить {} скобки;
Вы даже не имеют слот для аргументов функции? –