mk2knr.pl
来自「手机嵌入式Linux下可用的busybox源码」· PL 代码 · 共 85 行
PL
85 行
#!/usr/bin/perl -w## @(#) mk2knr.pl - generates a perl script that converts lexemes to K&R-style## How to use this script:# - In the busybox directory type 'scripts/mk2knr.pl files-you-want-to-convert'# - Review the 'convertme.pl' script generated and remove / edit any of the# substitutions in there (please especially check for false positives)# - Type './convertme.pl same-files-as-before'# - Compile and see if it works## BUGS: This script does not ignore strings inside comments or strings inside# quotes (it probably should).# set this to something else if you want$convertme = 'convertme.pl';# internal-use variables (don't touch)$convert = 0;%converted = ();# if no files were specified, print usagedie "usage: $0 file.c | file.h\n" if scalar(@ARGV) == 0;# prepare the "convert me" fileopen(CM, ">$convertme") or die "convertme.pl $!";print CM "#!/usr/bin/perl -p -i\n\n";# process each file passed on the cmd linewhile (<>) { # if the line says "getopt" in it anywhere, we don't want to muck with it # because option lists tend to include strings like "cxtzvOf:" which get # matched by the "check for mixed case" regexps below next if /getopt/; # tokenize the string into just the variables while (/([a-zA-Z_][a-zA-Z0-9_]*)/g) { $var = $1; # ignore the word "BusyBox" next if ($var =~ /BusyBox/); # this checks for javaStyle or szHungarianNotation $convert++ if ($var =~ /^[a-z]+[A-Z][a-z]+/); # this checks for PascalStyle $convert++ if ($var =~ /^[A-Z][a-z]+[A-Z][a-z]+/); # if we want to add more checks, we can add 'em here, but the above # checks catch "just enough" and not too much, so prolly not. if ($convert) { $convert = 0; # skip ahead if we've already dealt with this one next if ($converted{$var}); # record that we've dealt with this var $converted{$var} = 1; print CM "s/\\b$var\\b/"; # more to come in just a minute # change the first letter to lower-case $var = lcfirst($var); # put underscores before all remaining upper-case letters $var =~ s/([A-Z])/_$1/g; # now change the remaining characters to lower-case $var = lc($var); print CM "$var/g;\n"; } }}# tidy up and make the $convertme script executableclose(CM);chmod 0755, $convertme;# print a helpful help messageprint "Done. Scheduled name changes are in $convertme.\n";print "Please review/modify it and then type ./$convertme to do the search & replace.\n";
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?