[Python-de] Re: [Python-de] Re: [Python-de] reguläre Ausdrücke
Dieter Neubauer
neubauer at lni.de
Tue Apr 23 19:15:26 EDT 2002
-----Ursprüngliche Nachricht-----
Von: "Georg Mischler" <schorsch at schorsch.com>
> Ich bin auch kein Spezialist, aber die Geschichte mit den
> Strings duerfte fuer eine globale regex-Loesung doch ein kleines
> Hindernis darstellen. Das Hauptproblem dabei besteht darin, dass
> das Suchmuster keine einfache Moeglichkeit hat, zwischen dem
> Anfang und dem Ende eines Strings zu unterscheiden.
>
> Wenn ich selber vor dem Problem stuende, dann wurde ich mir eine
> kleine state-machine basteln, welche sich mit ein paar ganz
> simplen regex-Mustern Stueck fuer Stueck durch den Text hangelt.
> Wenn man so will, dann kriegt man auf diese Weise einen stark
> vereinfachten Syntax-Baum, der nur Strings, Kommentare, und
> anderen Text kennt... ;)
Sehe ich auch so...
Vielleicht hilft: <PythonPath>\Tools\Scripts\fixcid.py
Zugegeben, nicht gerade ein 3-Zeiler, aber da gibt es 'CommentStart' und
'CommentEnd' als reguläre Ausdrücke, was zumindest das Prinzip aufzeigen
sollte.
Noch was Einfacheres hätte ich in awk anzubieten, was sich leicht übertragen
läßt:
# +++Date last modified: 05-Jul-1997
# count lines in a C program, not counting comments, blank lines or
# form feeds
# does separate count of preprocessor directives
# if a preprocessor directive is commented out, it does not count
#
# By: Dan Kozak
{
if (file == "") {
file = FILENAME
}
if (file != FILENAME) {
printf("Number of lines in %s is: %d\n",file,nl+ppd)
printf("Number of preprocessor directives is: %d\n",ppd)
printf("Number of lines excluding preprocessor directives is: %d\n\n",nl)
file = FILENAME
tnl += nl
tppd += ppd
nl = 0
ppd = 0
}
if ($0 == "") { ; }
else if ($1 ~ /^\/\*/ && $NF ~ /\*\/$/) { ; }
else if ($0 ~ /\/\*/ && $0 !~ /\*\//) { in_comment = 1 }
else if ($0 !~ /\/\*/ && $0 ~ /\*\//) { in_comment = 0 }
else if (in_comment) { ; }
else if ($1 ~ /^#/) { ppd++ }
else { nl++ }
}
END { printf("Number of lines in %s is: %d\n",file,nl+ppd)
printf("Number of preprocessor directives is: %d\n",ppd)
printf("Number of lines excluding preprocessor directives is:
%d\n\n",nl)
file = FILENAME
tnl += nl
tppd += ppd
printf("Total number of lines is: %d\n",tnl+tppd)
printf("Number of preprocessor directives is: %d\n",tppd)
printf("Number of lines excluding preprocessor directives is:
%d\n",tnl)
}
Gruß,
Dieter
More information about the Python-de
mailing list