去除C语言注释

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

require 'strscan'

lex = [/"[^\\"]*(?:\\.[^\\"]*)*"/m,    # string
       /'[^\\']*(?:\\.[^\\']*)*'/m,    # char
       /\/\*.*?\*\//m,                 # multi-line
       /\/\/(?:.*?\\(?:\r?\n|\r))*.*/, # single-line
       /.|\s+/]                        # rest

ARGV.each do |source|
  stream = StringScanner.new File.read source
  until stream.eos? do
    code = stream.scan lex.find {|regex| stream.match? regex}
    print code unless code.start_with?('//') || code.start_with?('/*')
  end
end