- AKTUALISIERT -Perl regex - Finden Sie Funktionen in C-Datei und drucken ihre Definitionen
I C-Funktionen in der Datei finden möchten und ihre definitios
Zum Beispiel drucken:
Für diesen Eingang :
#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;
}
Die Ausgabe sollte sein:
int function(int a);
void func2();
int func3(int a,int b);
Dies ist mein Code:
#!/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";}
I mit Funktionstyp in arg 1 und die Funktion $ 2 $ am Ende in. Ich möchte den vollständigen Namen und die Argumente in '()' Klammern in $ 2 erhalten. Wie vermeide ich das Hauptwort? das^[(main)] funktioniert nicht. Am Ende möchte ich alles mit ';' Am Ende.
Es muss nach {} Klammern suchen, um nicht zu drucken, zum Beispiel: int x = (a + 1);
Sie haben nicht einmal ein Slot für die Argumente der Funktion? –