103 lines
1.4 KiB
Sed
103 lines
1.4 KiB
Sed
|
#! /bin/sed -nf
|
||
|
|
||
|
# Remove C and C++ comments, by Brian Hiles (brian_hiles@rocketmail.com)
|
||
|
|
||
|
# Sped up (and bugfixed to some extent) by Paolo Bonzini (bonzini@gnu.org)
|
||
|
# Works its way through the line, copying to hold space the text up to the
|
||
|
# first special character (/, ", '). The original version went exactly a
|
||
|
# character at a time, hence the greater speed of this one. But the concept
|
||
|
# and especially the trick of building the line in hold space are entirely
|
||
|
# merit of Brian.
|
||
|
|
||
|
# Taken from http://sed.sourceforge.net/grabbag/scripts/remccoms3.sed
|
||
|
# According to http://sed.sourceforge.net/grabbag/ it's in the public domain
|
||
|
# Changes:
|
||
|
# 2010-11-06: Remove strings
|
||
|
|
||
|
:loop
|
||
|
|
||
|
# This line is sufficient to remove C++ comments!
|
||
|
/^\/\// s,.*,,
|
||
|
|
||
|
# addition for coreboot-lint: For our purpose we don't need strings
|
||
|
s,"[^"]*",,g
|
||
|
|
||
|
/^$/{
|
||
|
x
|
||
|
p
|
||
|
n
|
||
|
b loop
|
||
|
}
|
||
|
/^"/{
|
||
|
:double
|
||
|
/^$/{
|
||
|
x
|
||
|
p
|
||
|
n
|
||
|
/^"/b break
|
||
|
b double
|
||
|
}
|
||
|
|
||
|
H
|
||
|
x
|
||
|
s,\n\(.[^\"]*\).*,\1,
|
||
|
x
|
||
|
s,.[^\"]*,,
|
||
|
|
||
|
/^"/b break
|
||
|
/^\\/{
|
||
|
H
|
||
|
x
|
||
|
s,\n\(.\).*,\1,
|
||
|
x
|
||
|
s/.//
|
||
|
}
|
||
|
b double
|
||
|
}
|
||
|
|
||
|
/^'/{
|
||
|
:single
|
||
|
/^$/{
|
||
|
x
|
||
|
p
|
||
|
n
|
||
|
/^'/b break
|
||
|
b single
|
||
|
}
|
||
|
H
|
||
|
x
|
||
|
s,\n\(.[^\']*\).*,\1,
|
||
|
x
|
||
|
s,.[^\']*,,
|
||
|
|
||
|
/^'/b break
|
||
|
/^\\/{
|
||
|
H
|
||
|
x
|
||
|
s,\n\(.\).*,\1,
|
||
|
x
|
||
|
s/.//
|
||
|
}
|
||
|
b single
|
||
|
}
|
||
|
|
||
|
/^\/\*/{
|
||
|
s/.//
|
||
|
:ccom
|
||
|
s,^.[^*]*,,
|
||
|
/^$/ n
|
||
|
/^\*\//{
|
||
|
s/..//
|
||
|
b loop
|
||
|
}
|
||
|
b ccom
|
||
|
}
|
||
|
|
||
|
:break
|
||
|
H
|
||
|
x
|
||
|
s,\n\(.[^"'/]*\).*,\1,
|
||
|
x
|
||
|
s/.[^"'/]*//
|
||
|
b loop
|