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 + -
显示快捷键?