>>720 Ruby
src = $<.read
i = 0
loop do
  break if i >= src.size
  case src[i]
  when ?" then i += src[i..-1][/(?:".*[^\\]|")(?:\\\\)*"/].size
  when ?' then i += src[i..-1][/(?:'.*[^\\]|')(?:\\\\)*'/].size
  when ?/ then src.sub!(/(?<=.{#{i}})(?:\/\/[^\n]*|\/\*.*?\*\/)/m, ''); i += 1
  else i += 1
  end
end

-*- input -*-
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \"fuga\"\\");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge

-*- output -*-
hoge();
hoge('"');
hoge("// "fuga"\\");
hoge("/* fuga */"); ; hoge