去除C语言注释
- 作者: 狂欢48863251
- 来源: 51数据库
- 2022-08-12
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
推荐阅读
