#!/bin/sh # the first expression is taken from this FAQ: # https://perldoc.perl.org/perlfaq6.html#How-do-I-use-a-regular-expression-to-strip-C-style-comments-from-a-file%3f noccom() { [ -s ~/opt/local/bin/noccom ] || cat > ~/opt/local/bin/noccom <; s{ /\\*[^*]*\\*+([^/*][^*]*\\*+)*/ | //([^\\\\] | [^\\n][\\n]?)*?\\n | ( "(?:\\\\.|[^"\\\\])*" | '(?:\\\\.|[^'\\\\])*' | .[^/"'\\\\]* ) }{defined \$3 ? \$3 : ""}gxse; s{ \\\\?\\n\\s*([{}])?\\s*(;*)\\s*(?=\\\\?\\n) | ( \\#[^\\n]*\\n | "(?:\\\\.|[^"\\\\])*" | '(?:\\\\.|[^'\\\\])*' | .[^#/"'\\\\\\n]* ) }{defined \$3 ? \$3 : (defined \$1 ? " ".\$1.\$2 : \$2)}gxse; s#(^|\\n)\\s+#\$1#gs; print; EOF perl ~/opt/local/bin/noccom "$@" } noccom "$@"