| #! /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 |